我想在crossfilter中进行查询,以过滤今天的所有数据。
示例:我有这个查询:
var countPerDim2 = Dim2.filterExact("1.1.2018").group().reduceSum();
因此,crossfilter将过滤1.1.2018中的数据。
但我想让crossfilter自动获取当前日期。 我的理由是我想绘制两个图表来比较它们。 喜欢:
图1按日期1.1.2018和图2按日期31.12.17
如何在昨天的日期前获取过滤器?当天有datenow()
这样的函数吗?昨天的日期可能是datenow(-1)
吗?
谢谢你,新年快乐!
答案 0 :(得分:1)
要回答您的直接问题,JavaScript的new Date()
会将当前时间和日期作为JavaScript Date
对象返回。然后你只需要将日期对象转换为符合日期格式的字符串。
您可以使用d3.time.format来生成这些字符串。看起来你会想要像
这样的东西d3.time.format('%-d.%-m.%Y')
(或者可能与m
和d
相反 - 从您的示例中不清楚月份或日期是否第一次出现)
昨天就像是
var date = new Date();
date.setDate(date.getDate()-1);
有关详细信息,请参阅JavaScript Date documentation。
但是,我认为你会遇到一个更基本的问题,那就是crossfilter没有多个过滤器的概念,所以很难将一个日期与另一个日期进行比较旁边的图表。
在我的头顶,我能想到的最好的事情是"冻结"使用假团体的团体:
function freeze_group(group) {
var _all = group.all().slice();
return {
all: function() {
return _all;
}
};
}
您应用了一个日期过滤器,然后调用
chart.group(freeze_group(group));
在图表上您希望拥有该日期。现在它在过滤器更改时不会发生变化,您可以将其他日期过滤器应用于其他图表。