我需要使用REST / JSON API从Druid中的索引中获取一组维度的不同值。目前我使用以下聚合查询(虽然我不需要聚合),因为我无法找到任何其他方法来获取不同的值,因为所有查询都要求聚合字段。
{
"queryType": "groupBy",
"dataSource": "ds1",
"granularity": "all",
"dimensions": ["level1","level2","level3", "val1", "val2"],
"aggregations": [{"type": "count","name": "val2Count","fieldName": "val2"}],
"intervals": ["2015-10-22T00:00:00.000/2015-12-22T23:00:00.000"]
}
我认为这是一种常见的情况。有没有办法在没有聚合的情况下获得不同的列集?
当我使用聚合进行此操作时,如果没有聚合,那么此聚合会影响性能(除了网络IO以获取额外的计数数据)多少?
< / LI> 醇>答案 0 :(得分:0)
您可以使用select query执行相同操作。 http://druid.io/docs/latest/querying/select-query.html
{
"queryType": "select",
"dataSource": "ds1",
"granularity": "all",
"descending": "true",
"intervals": ["2016-05-01T00:00:00.000/2016-06-01T00:00:00.000"],
"dimensions":["level1","level2","level3", "val1", "val2"],
"pagingSpec":{"pagingIdentifiers": {}, "threshold":5}
}
如果您只有一个维度,那么您也可以使用Lexicographic TopNMetricSpec。 http://druid.io/docs/latest/querying/topnmetricspec.html
答案 1 :(得分:-1)
您可以使用元数据查询。该查询将为每个维度提供基数估计。 http://druid.io/docs/latest/querying/segmentmetadataquery.html 虽然如果要列出所有不同的组合,请说明对于dimension1和dimension2,您必须在dimension1和dimension2上使用groupBy。添加计数聚合器不会真正影响性能。