0

たとえば、[国、ウェブサイト] という 2 つのディメンション[PV] という 1 つの指標があります。

各国のWebサイトの平均PVが知りたい。

各国の合計PVを求めるのは簡単ですが、各国のサイト数を求めるのは難しく、さらに期待される結果は、合計PV(各国)をウェブサイト数(各国)で割ったものです。国)

私ができることは、以下のように国とウェブサイトごとに「groupBy」クエリを適用し、アプリケーションの外で国ごとに結果をグループ化することです。クエリは Druid から大量のデータを抽出し、それらのほとんどは合計だけでは意味がないため、非常に非常に遅いです。

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

誰でもこれを手伝うことができますか?このような一般的なクエリが Druid でサポートされていないことはあり得ないのではないかと思います。

前もって感謝します。



明確にするために、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 に答える