0

例如,有两个维度:[国家、网站]一个指标:[PV]。

我想知道每个国家网站的平均 PV。

要做到这一点,很容易得到每个国家的总PV,但是很难得到每个国家的网站数量,而且预期的结果是总PV(在每个国家)除以网站数量(在每个国家)国家)

我可以做的是按如下国家和网站应用“groupBy”查询,然后在我的应用程序中按国家以外的国家对结果进行分组。它非常非常非常慢,因为查询从 Druid 中提取了大量数据,其中大部分数据只是为了求和而毫无意义。

{
    "queryType": "groupBy",
    "dataSource": "--",
    "dimensions": [
        "country",
        "website"
    ],
    "granularity": "all",
    "intervals": [
        "--"
    ],
    "aggregations": [
        {
            "type": "longSum",
            "name": "PV",
            "fieldName": "PV"
        }
    ]
}

任何人都可以帮助解决这个问题?我想知道德鲁伊不可能不支持这样的常见查询。

提前致谢。



为了清楚起见,我用 SQL 描述了我的预期结果,如果你知道我想做什么或不熟悉 SQL,请忽略以下部分。

SELECT country, sum(a.PV_all) / count(a.website) as PV_AVG FROM
(SELECT country, website, SUM(PV) as PV_all FROM DB GROUP BY country, website  ) a
GROUP BY country
4

1 回答 1

0

您是否尝试过使用嵌套 groupBy 查询?德鲁伊支持。简而言之,您可以拥有类似的东西

{
  "queryType": "groupBy",
  "dataSource":{
    "type": "query",
    "query": {
      "queryType": "groupBy",
      "dataSource": "yourDataSource",
      "granularity": "--",
      "dimensions": ["country", "website"],
      "aggregations": [
        {
            "type": "longSum",
            "name": "PV",
            "fieldName": "PV"
        }
      ],
      "intervals": [ "2012-01-01T00:00:00.000/2020-01-03T00:00:00.000" ]
    }
  },
  "granularity": "all",
  "dimensions": ["country"],
  "aggregations": [
    ----
  ],
  "intervals": [ "2012-01-01T00:00:00.000/2020-01-03T00:00:00.000" ]
} 
于 2016-02-19T21:02:28.740 回答