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

我需要在单个查询中完成此计算。 如果我们 运行 它分为两部分 - 第一个查询将使用日期和维度过滤器获取数据,第二个查询将仅使用日期过滤器获取数据。然后我会把这两个分开。 无法找到一种方法将这些组合在一个查询中并进行计算。

您案例中的特定商品或品牌的利润百分比计算可以使用过滤 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 日)的平均利润。