在日期建立统计功能

时间:2015-05-21 08:53:03

标签: couchdb cloudant

我有Cloudant db,实际上是couchdb。 我的文档中有一个日期字段,我需要获得类似于_stats在数字字段上提供的统计信息(例如min,max,avg,count)。有没有办法在cloudant中做到这一点?

我在map函数中转换为timestamp并将其发送到reduce。这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

CouchDB和Cloudant允许将日期索引为MapReduce索引中的复合键,例如生成这样的键:

[ 2014, 5, 21]

其中数组的每个元素分别代表存储日期的年,月和日。

这可以在地图函数中实现,如下所示:

function(doc) {
  if (typeof(doc.date) === "string") {
    var d = new Date(doc.date);
    emit([ d.getFullYear(), d.getMonth()+1, d.getDay()], null);
  }
}

使用_count缩减器,此索引可与group_level参数一起使用,以生成对时间序列数据的全面分析,例如

  • 按年计算
  • 按月计算给定年份
  • 按天计算给定年份
  • 按年,月和日计算天

通过将数值添加到emit的第二个参数中,并使用_stats,可以轻松地从索引中提取时间序列统计信息,并按上述方式进行分组。