我正在使用 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月被提到两次。
我认为它与响应有关,其中query1中的时区偏移在“end”属性的第一个间隔中丢失。我猜测的这种初始数据丢失具有级联效应。
我想知道这是一个错误或预期的结果。如果是预期的,我应该对我的代码做出什么改变。谢谢。
答案 0 :(得分:3)
从查询中删除Z 1个时间帧,它的行为与查询2类似。建议您 在查询中使用timezone
,因为它具有会计日照的额外好处节省时间。当你将时区作为查询参数和时间戳偏移包含在内时,会让事情变得混乱。通常,会覆盖timezone参数以使用时间戳中指定的任何时区偏移量(在本例中为Z / UTC)。
第一张图表中多个月的呈现与月份的截断方式有关。您有一个部分月份从1月1日凌晨5点开始,在UTC中显示为" 1月和#34;在你的浏览器中,你有一个完整的月份从UTC的2月1日开始,也是1月,因为它仍然是当地时间的1月。那么从3月开始的那个月就是当地时间2月以来的2月。