У меня есть запрос, который вычисляет для каждого user_id последнее значение и максимальное значение, затем выполняет некоторые вычисления между ними и фильтрует те строки, в которых рассчитанное значение больше 70.
Точкачто запрос возвращает обратно user_id, last, max и вычисленное поле, , и я хочу только user_id , как я могу этого добиться?
Я хочу, чтобы это достигло лучшей производительности, так как этозапрос может вернуть обработчики тысяч записей.
мой запрос:
{
"queryType": "groupBy",
"dataSource": {
"type": "table",
"name": "my-datasource"
},
"intervals": {
"type": "intervals",
"intervals": [
"${startDate}/${endDate}"
]
},
"virtualColumns": [],
"filter": {
"type": "bound",
"dimension": "sum_coins",
"lower": "0",
"upper": null,
"lowerStrict": true,
"upperStrict": false,
"extractionFn": null,
"ordering": {
"type": "numeric"
}
},
"granularity": {
"type": "all"
},
"dimensions": [
{
"type": "default",
"dimension": "user_id",
"outputName": "d0",
"outputType": "STRING"
}
],
"aggregations": [
{
"type": "doubleLast",
"name": "last_coins",
"fieldName": "sum_coins",
"expression": null
},
{
"type": "doubleMax",
"name": "max_sum_coins",
"fieldName": "sum_coins",
"expression": null
}
],
"postAggregations": [
{
"type": "expression",
"name": "drop_percentage",
"expression": "(100-(\"last_coins\" / \"max_sum_coins\"*100))",
"ordering": null
}],
"having": {
"type": "filter",
"filter": {
"type": "bound",
"dimension": "drop_percentage",
"lower": "70",
"upper": null,
"lowerStrict": true,
"upperStrict": false,
"extractionFn": null,
"ordering": {
"type": "numeric"
}
},
"finalize": true
},
"limitSpec": {
"type": "NoopLimitSpec"
},
"context": {
"sqlQueryId": "34ab9e888"
},
"descending": false
}