Druid 中的百分比计算
Percentage calculation in Druid
我有以下格式的数据。我很难计算特定商品或品牌在特定日期对所有产品的利润百分比 w.r.t。
Date Item Brand Profit
15-08-2019 A Nike 5
15-08-2019 B Nike 10
15-08-2019 C Nike 12
15-08-2019 D Nike 6
15-08-2019 E Nike 9
15-08-2019 F Adidas 4
15-08-2019 G Adidas 3
15-08-2019 H Adidas 7
16-08-2019 A Nike 8
16-08-2019 B Nike 4
16-08-2019 C Nike 6
16-08-2019 D Nike 7
16-08-2019 E Nike 9
16-08-2019 F Adidas 5
16-08-2019 G Adidas 4
16-08-2019 H Adidas 9
- A产品8月15日利润百分比=8月15日利润A/sum的利润(5/56)
- 耐克 8 月 16 日的利润百分比 = 34/52。
我需要在单个查询中完成此计算。
如果我们 运行 它分为两部分 - 第一个查询将使用日期和维度过滤器获取数据,第二个查询将仅使用日期过滤器获取数据。然后我会把这两个分开。
无法找到一种方法将这些组合在一个查询中并进行计算。
您案例中的特定商品或品牌的利润百分比计算可以使用过滤 aggregation。
对于品牌 'Nike' 以下 json 将有效:
{
"queryType": "timeseries",
"dataSource": <your_datasource>,
"granularity": "day",
"aggregations": [
{
"type" : "filtered",
"filter" : {
"type" : "selector",
"dimension" : "Brand",
"value" : "Nike"
},
"aggregator" : {
"type" : "longSum",
"name" : "brand_sum",
"fieldName" : "Profit"
}
},
{ "type": "longSum", "name": "total_sum", "fieldName": "Profit" }
],
"postAggregations": [
{ "type": "arithmetic",
"name": "average_profit",
"fn": "/",
"fields": [
{ "type": "fieldAccess", "name": "brand_sum", "fieldName": "brand_sum" },
{ "type": "fieldAccess", "name": "total_sum", "fieldName": "total_sum" }
]
}
],
"intervals": [ "15-08-2019/16-08-2019" ]
}
它将给出特定品牌(此处 'Nike')所有天数(此处为 15 日和 16 日)的平均利润。
我有以下格式的数据。我很难计算特定商品或品牌在特定日期对所有产品的利润百分比 w.r.t。
Date Item Brand Profit
15-08-2019 A Nike 5
15-08-2019 B Nike 10
15-08-2019 C Nike 12
15-08-2019 D Nike 6
15-08-2019 E Nike 9
15-08-2019 F Adidas 4
15-08-2019 G Adidas 3
15-08-2019 H Adidas 7
16-08-2019 A Nike 8
16-08-2019 B Nike 4
16-08-2019 C Nike 6
16-08-2019 D Nike 7
16-08-2019 E Nike 9
16-08-2019 F Adidas 5
16-08-2019 G Adidas 4
16-08-2019 H Adidas 9
- A产品8月15日利润百分比=8月15日利润A/sum的利润(5/56)
- 耐克 8 月 16 日的利润百分比 = 34/52。
我需要在单个查询中完成此计算。 如果我们 运行 它分为两部分 - 第一个查询将使用日期和维度过滤器获取数据,第二个查询将仅使用日期过滤器获取数据。然后我会把这两个分开。 无法找到一种方法将这些组合在一个查询中并进行计算。
您案例中的特定商品或品牌的利润百分比计算可以使用过滤 aggregation。
对于品牌 'Nike' 以下 json 将有效:
{
"queryType": "timeseries",
"dataSource": <your_datasource>,
"granularity": "day",
"aggregations": [
{
"type" : "filtered",
"filter" : {
"type" : "selector",
"dimension" : "Brand",
"value" : "Nike"
},
"aggregator" : {
"type" : "longSum",
"name" : "brand_sum",
"fieldName" : "Profit"
}
},
{ "type": "longSum", "name": "total_sum", "fieldName": "Profit" }
],
"postAggregations": [
{ "type": "arithmetic",
"name": "average_profit",
"fn": "/",
"fields": [
{ "type": "fieldAccess", "name": "brand_sum", "fieldName": "brand_sum" },
{ "type": "fieldAccess", "name": "total_sum", "fieldName": "total_sum" }
]
}
],
"intervals": [ "15-08-2019/16-08-2019" ]
}
它将给出特定品牌(此处 'Nike')所有天数(此处为 15 日和 16 日)的平均利润。