Является ли агрегация (число) по измерению, но не по показателям, поддерживаемым Druid?

Например, есть два измерения: [страна, веб-сайт] и одна метрика: [PV].

Я хочу знать средний PV сайта для каждой страны.

Чтобы сделать это, легко получить общее количество PV в каждой стране, однако трудно получить количество веб-сайтов в каждой стране, кроме того, ожидаемый результат - это общее количество PV(в каждой стране), разделенное на количество веб-сайтов (в каждой стране). страна).

Что я могу сделать, так это применить запрос groupBy по стране и веб-сайту, как показано ниже, а затем сгруппировать результат по стране за пределами моего приложения. Это очень, очень, очень медленно, потому что запрос извлекает много данных из Друида, и большинство из них не имеет смысла просто за сумму.

{
    "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

1 ответ

Вы пытались использовать вложенный запрос 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" ]
} 
Другие вопросы по тегам