我的数据包含映射和示例如下:
{
date : 'yyyy-mm-dd',
action : 'click',
userId : 'not_analysed id in this field',
user : {
name : 'John',
age : '28',
email : 'john@awesome.com',
country : 'US'
}
}
我会有数百万像这样的记录也有重复,因为它是用户活动日志,我想使用日期列基于日期直方图中的唯一userId对它们进行分组。 使用基数来获得基于日期直方图的唯一计数非常简单。
如果我想根据唯一用户存储桶获取最终结果,并将用户字段分组并根据其配置文件获取计数,如下所示。 假设在1月份,我们有大约10,000个活动但只有1,000个唯一用户,并且基于这些用户,我们希望获取用户字段数据以查看人口统计数据。意思是10,000条记录,如果在userId上执行基数,我将有1,000条记录。基于这1,000条记录,我需要得到如下结果。如何将10,000条记录合并到不同的1,000条记录,并从这些记录中得到如下答案。
Expected end results:
{
'2016-01-01',
aggs: {
[{
age: 28,
count: 100
}, {
age: 27,
count: 500
}, {
country: 'US',
count: 200
}, {
country: 'Canada',
count: 200
}]
},
'2016-02-01',
aggs: {
[{
age: 29,
count: 200
}, {
age: 31,
count: 1000
}, {
country: 'Mexico',
count: 400
}, {
country: 'UK',
count: 400
}]
}
总之,有没有一般的方法来计算,然后通过使用术语甚至使用管道聚合来获得结果?
请帮忙。
答案 0 :(得分:0)
您需要的是主日期 - 直方图聚合下的3个不同的子聚合。您的查询将与此类似。
该查询由 using (var context = new BloggingContext())
{
var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
}
和terms
数据的age
汇总以及唯一身份用户数量country
组成。
您可以增加每个术语聚合的大小,以获得所需的结果。
cardinality