Skip to content
Snippets Groups Projects
Commit 53427b55 authored by Felipe Wu's avatar Felipe Wu
Browse files

[005] finalizado


Signed-off-by: default avatarFelipe Wu <felipeshiwu@gmail.com>
parent c39d572d
No related branches found
No related tags found
No related merge requests found
Pipeline #20105 failed
...@@ -52,28 +52,11 @@ export class ElasticsearchAdapter extends Adapter { ...@@ -52,28 +52,11 @@ export class ElasticsearchAdapter extends Adapter {
} }
/** Aggregation is used to define the dimention and the aggregation */ /** Aggregation is used to define the dimention and the aggregation */
const func = this.getAggregateFunction(view.metrics[0].aggregation, view.origin);
let aggrName = func + "_" + view.metrics[0].name.toLowerCase();
let aggregation = {
group_by: {
terms: {
field: view.dimensions[0].name + ".keyword",
size: 10000,
order: {
[aggrName]: "asc"
}
},
aggs: {}
}
};
Object.assign(aggregation.group_by.aggs, {[aggrName]: {[func]: {field: view.metrics[0].name}}});
Object.assign(query, {aggs: aggregation}); let partialQuery = this.translateAggs(view, 0);
Object.assign(query, {aggs: partialQuery});
//console.log(JSON.stringify(view, null, 2));
console.log(JSON.stringify(query, null, 2));
return query; return query;
} }
...@@ -87,8 +70,11 @@ export class ElasticsearchAdapter extends Adapter { ...@@ -87,8 +70,11 @@ export class ElasticsearchAdapter extends Adapter {
*/ */
public getDataFromView(view: View, cb: (error: Error, result?: any[]) => void): void { public getDataFromView(view: View, cb: (error: Error, result?: any[]) => void): void {
const query = this.getQueryFromView(view); const query = this.getQueryFromView(view);
this.executeQuery(query, cb); if (view.clauses.length == 0 || view.dimensions.length > 1) {
//this.executeFixQuery(query, cb); this.executeQuery(view.operation.values[0].name, query, cb);
} else {
this.executeQuery(view.operation.values[0].operation.values[0].name, query, cb);
}
} }
/** /**
...@@ -98,9 +84,9 @@ export class ElasticsearchAdapter extends Adapter { ...@@ -98,9 +84,9 @@ export class ElasticsearchAdapter extends Adapter {
* @param cb.error - Error information when the method fails. * @param cb.error - Error information when the method fails.
* @param cb.result - Query result. * @param cb.result - Query result.
*/ */
private executeQuery(query: object, cb: (error: Error, result?: any[]) => void): void { private executeQuery(index: string, query: object, cb: (error: Error, result?: any[]) => void): void {
this.client.search({ this.client.search({
index: 'teste', index: index.replace(/\"/g, ''),
body: query body: query
},(err, result) => { },(err, result) => {
...@@ -108,47 +94,6 @@ export class ElasticsearchAdapter extends Adapter { ...@@ -108,47 +94,6 @@ export class ElasticsearchAdapter extends Adapter {
}) })
} }
private executeFixQuery(query: object, cb: (error: Error, result?: any[]) => void): void {
this.client.search({
index: 'teste',
body: {
"size": 0,
"query": {
"bool": {
"must": [
{"match": { "TP_SEXO": 2 }}
]
}
},
"aggs": {
"group_by_estado": {
"terms": {
"field": "CO_UF_NASC.keyword",
"size": 10000,
"order": {
"average_idade": "asc"
}
},
"aggs": {
"average_idade": {
"avg": {
"field": "NU_IDADE"
}
},
"sum_idade": {
"sum": {
"field": "NU_IDADE"
}
}
}
}
}
}
},(err, result) => {
cb(err, [result]);
})
}
/** /**
* Asynchronously insert one register into a given Source. * Asynchronously insert one register into a given Source.
* @param source - Insertion "location". * @param source - Insertion "location".
...@@ -177,8 +122,7 @@ export class ElasticsearchAdapter extends Adapter { ...@@ -177,8 +122,7 @@ export class ElasticsearchAdapter extends Adapter {
} }
private translateAggs(view: View, query: object, private translateAggs(view: View, numDimensions: number): object {
numDimensions: number): object {
if (numDimensions == view.dimensions.length) { if (numDimensions == view.dimensions.length) {
let func = ""; let func = "";
let aggrName = ""; let aggrName = "";
...@@ -190,24 +134,23 @@ export class ElasticsearchAdapter extends Adapter { ...@@ -190,24 +134,23 @@ export class ElasticsearchAdapter extends Adapter {
} }
return partialQuery; return partialQuery;
} }
let returnedQuery = this.translateAggs(view, numDimensions+1);
if (view.dimensions.length > 0) {
let group_by = "group_by_" + view.dimensions[numDimensions].name; let group_by = "group_by_" + view.dimensions[numDimensions].name;
let aggregation = { let aggregation = {
[group_by]: { [group_by]: {
terms: { terms: {
field: view.dimensions[0].name + ".keyword", field: view.dimensions[numDimensions].name + ".keyword",
size: 10000 size: 100000
}, },
aggs: {} aggs: {}
} }
}; };
let aggregate =
for (let i=0; i<view.dimensions.length; i++) {
Object.assign(aggregation.[group_by].aggs, {[aggrName]: {[func]: {field: view.metrics[0].name}}});
Object.assign(query, {aggs: aggregation});
Object.assign(aggregation[group_by], {aggs: returnedQuery});
return aggregation;
}
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment