2016-07-23 7 views
2

Я с трудом преобразования этой простой SQL-запрос ниже в друида:Как выполнить SELECT в результатах, возвращаемых из группы GROUP BY?

SELECT country, city, Count(*) 
FROM people_data 
WHERE name="Mary" 
GROUP BY country, city; 

Так что я придумал этот запрос до сих пор:

{ 
    "queryType": "groupBy", 
    "dataSource" : "people_data", 
    "granularity": "all", 
    "metric" : "num_of_pages", 
    "dimensions": ["country", "city"], 
    "filter" : { 
     "type" : "and", 
     "fields" : [ 
      { 
      "type": "in", 
      "dimension": "name", 
      "values": ["Mary"] 
      }, 
      { 
      "type" : "javascript", 
      "dimension" : "email", 
      "function" : "function(value) { return (value.length !== 0) }" 
      } 
     ] 
    }, 
    "aggregations": [ 

    { "type": "longSum", "name": "num_of_pages", "fieldName": "count" } 
    ], 
    "intervals": [ "2016-07-20/2016-07-21" ] 
} 

Приведенный выше запрос работает, но это не делает похоже, что groupBy в druasource Druid даже оценивается, так как я вижу людей в моей работе с именами, отличными от Mary. Кто-нибудь имеет какой-либо вклад в том, как сделать эту работу?

ответ

2

Простой ответ заключается в том, что вы не можете выбрать произвольные размеры в своих запросах groupBy.

Строго говоря, даже SQL-запрос не имеет смысла. Если для данной комбинации country, city существует много разных значений name и street, то как вы втискиваете это в одну строку? Вы должны их заполнить, например. используя функцию max.

В этом случае вы можете включить тот же столбец в свои данные, что и измерение, и метрика, например. name_dim и name_metric, и включить соответствующую агрегацию по вашей метрике, max(name_metric).

Обратите внимание, что если эти столбцы, name и т. Д. Имеют высокие значения гранулярности, тогда это убьет функцию свертки Друида.

+0

Я обновил запрос выше, чтобы сделать его более полезным. После того, как вы делаете «группу по» по стране и городу, я захватываю «страну», «город» и «подсчет» всех этих строк в каждой группе, чтобы посмотреть, какая страна и город имеют наибольшее количество людей, Mary'. Но знаете ли вы, что я могу перевести этот запрос в код Друида ('JSON' выше)? – CapturedTree

+0

, но ваш внутренний запрос кажется именно тем, что вам нужно. Group By с фильтрами и агрегатами 'longSum'. Удалите этот внешний запрос и попробуйте только внутренний. – Nikem

 Смежные вопросы

  • Нет связанных вопросов^_^