Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在德鲁伊从小组返回的结果中执行选择?_Sql_Json_Druid - Fatal编程技术网

Sql 如何在德鲁伊从小组返回的结果中执行选择?

Sql 如何在德鲁伊从小组返回的结果中执行选择?,sql,json,druid,Sql,Json,Druid,我很难将下面这个简单的SQL查询转换为Druid: 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",

我很难将下面这个简单的SQL查询转换为Druid:

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" ]
}

上面的查询运行了,但Druid数据源中的groupBy似乎没有被评估,因为我在输出中看到的人的名字不是Mary。有人对如何进行这项工作有任何意见吗?

简单的回答是,您不能在
groupBy
查询中选择任意维度

严格地说,即使是SQL查询也没有意义。如果对于给定的
国家、城市
组合,有许多不同的
名称
街道
值,那么如何将其压缩到一行中?您必须聚合它们,例如使用
max
函数

在这种情况下,您可以在数据中包含与维度和度量相同的列,例如
name\u dim
name\u metric
,并在度量上包含相应的聚合,
max(name\u metric)


请注意,如果这些列,
name
等具有高粒度值,那么这将杀死德鲁伊的汇总功能。

我已经更新了上面的查询,使其更有用。在对country and city进行
分组后,我抓取
country
city
、以及
每组中所有这些行的计数
,以查看哪个国家和城市名为
玛丽
的人数最多。但是你知道我如何将这个查询转换成德鲁伊代码(上面的
JSON
)吗?但是你的内部查询似乎正是你所需要的。使用过滤器和
longSum
聚合进行分组。删除外部查询,然后只尝试内部查询。