使用Keen时,使用JavaScript以每月间隔查询绝对时间帧不会按预期分割

时间:2017-07-12 13:59:04

标签: javascript keen-io

我正在使用 keen-analysis.js keen-dataviz.js 框架。

尝试按月查询和绘制数据时,如果我的日期时间有时区偏移信息,则结果不会按预期划分。

这是我正在使用的javascript:

var query1 = new Keen.Query('count', {
  event_collection: "accounts",
  interval: "monthly",
  timeframe: {
    end: (new Date(2017, 3, 1)).toISOString(),    // "2017-04-01T05:00:00.000Z"
    start: (new Date(2017, 0, 1)).toISOString(),  // "2017-01-01T05:00:00.000Z"
  },
  timezone: "US/Eastern"
});

var query2 = new Keen.Query('count', {
  event_collection: "accounts",
  interval: "monthly",
  timeframe: {
    end: '2017-04-01T00:00:00.000',
    start: '2017-01-01T00:00:00.000'
  },
  timezone: "US/Eastern"
});

window.onload=function(){
  var chart1 = new Dataviz()
    .el("#chart1")
    .title("query1 results")
    .height(100)
    .type("area")
    .prepare();

  client
    .run(query1)
    .then(function(res){
      chart1 
        .data(res)
        .render();
    })
    .catch(function(err){
      chart1
        .message(err.message);
    });

  var chart2 = new Dataviz()
    .el("#chart2")
    .title("query2 results")
    .height(100)
    .type("area")
    .prepare();

  client
    .run(query2)
    .then(function(res){
      chart2 
        .data(res)
        .render();
    })
    .catch(function(err){
      chart2
        .message(err.message);
    });
}

这是结果的屏幕截图。请注意,在query1中,1月被提到两次。

Rendered charts

我认为它与响应有关,其中query1中的时区偏移在“end”属性的第一个间隔中丢失。我猜测的这种初始数据丢失具有级联效应。

Logs of responses

我想知道这是一个错误或预期的结果。如果是预期的,我应该对我的代码做出什么改变。谢谢。

1 个答案:

答案 0 :(得分:3)

从查询中删除Z 1个时间帧,它的行为与查询2类似。建议您 在查询中使用timezone,因为它具有会计日照的额外好处节省时间。当你将时区作为查询参数和时间戳偏移包含在内时,会让事情变得混乱。通常,会覆盖timezone参数以使用时间戳中指定的任何时区偏移量(在本例中为Z / UTC)。

第一张图表中多个月的呈现与月份的截断方式有关。您有一个部分月份从1月1日凌晨5点开始,在UTC中显示为" 1月和#34;在你的浏览器中,你有一个完整的月份从UTC的2月1日开始,也是1月,因为它仍然是当地时间的1月。那么从3月开始的那个月就是当地时间2月以来的2月。