我很难将下面这个简单的SQL查询转换为德鲁伊:
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甚至没有被评估,因为我看到输出中的人名字不是玛丽。有没有人对如何使这项工作有任何意见?
答案 0 :(得分:2)
简单回答是,您无法在groupBy
查询中选择任意维度。
严格来说,即使SQL查询也没有意义。如果对于country, city
的给定组合,name
和street
有许多不同的值,那么如何将其压缩成一行?你必须聚合它们,例如使用max
函数。
在这种情况下,您可以在数据中包含与维度和指标相同的列,例如name_dim
和name_metric
,并在指标max(name_metric)
上添加相应的汇总。
请注意,如果这些列name
等具有高粒度值,则会杀死德鲁伊的汇总功能。