gpt4 book ai didi

javascript - 使用 Keen 时,使用 JavaScript 以每月为间隔的绝对时间范围查询不会按预期拆分

转载 作者:行者123 更新时间:2023-11-30 11:34:26 24 4
gpt4 key购买 nike

我正在使用 keen-analysis.jskeen-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);
});
}

这是结果的屏幕截图。请注意,在查询 1 中,January 被提及了两次。

Rendered charts

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

Logs of responses

我想知道这是错误还是预期结果。如果符合预期,我应该对我的代码进行哪些更改。谢谢。

最佳答案

从您的查询 1 时间帧中删除 Z,它的行为将与查询 2 类似。建议您应该在查询中使用 timezone,因为它具有以下额外好处考虑夏令时。当您将时区同时作为查询参数和时间戳偏移时,事情就会变得困惑。通常,时区参数会被覆盖以使用您的时间戳中指定的任何时区偏移量(在本例中为 Z/UTC)。

第一个图表中多个月份的显示与月份的分割方式有关。您有一个从 UTC 时间 1 月 1 日凌晨 5 点开始的部分月份,在您的浏览器中显示为“一月”,然后您有一个从 UTC 时间 2 月 1 日开始的完整月份,它也显示为一月,因为在您的本地时间仍然是一月。那么您从 3 月开始的月份显示为 2 月,因为本地时间是 2 月。

关于javascript - 使用 Keen 时,使用 JavaScript 以每月为间隔的绝对时间范围查询不会按预期拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45059807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com