DC,Crossfilter维度:多列作为不同的键?

我有两个日期列(startYear和endYear)为每个50应用程序。 最早的开始年份是1994年,最晚的结束年份是2030年。

我想将时间小工具条形图添加到现有的DC仪表板中。 从1994年到2030年每年会有一个酒吧,每个酒吧应该显示当年现有的应用数量。 我在我的交叉过滤器组中寻找以下数据结构:

group(36) = [
{key:1994, value:1},
{key:1995, value:4},
{key:1996, value:5},
{key:1997, value:10},
{key:1998, value:30},
... etc
]

(实际上,密钥需要有日期数据类型,但你明白我的意思。)

通常我会有一个名为year的字段并在其上创建一个维度。 但实际上从1994年到2030年,没有所有年份值的领域。所以我正在制作'假数据'。 目前我正在通过在我的数据上运行这个命令来创建假字段,称为1994,1995等。

data.forEach(function(d){
      for (var i=1994; i<2031; i++) {
        if (i>=d.start && i<=d.end) {
          d[i]=1;
        } else {
          d[i]=0;
        }
      }
}

我为那一年存在的应用分配1,而那些不存在的应用分配0。 这工作正常。 但是现在我需要将36个字段组合成一个维度,使得36个字段具有不同维度的关键字。 在这一点上我卡住了。 我不断收到:key:{1994:1,1995:4,1996:5 ...等}或与数组类似。 最新的努力:

var timeDimension = facts.dimension(function(d){ return {
  1994:d[1994], 1995:d[1995], 1996:d[1996], 1997:d[1997], 1998:d[1998], 1999:d[1999],
  2000:d[2000], 2001:d[2001], 2002:d[2002], 2003:d[2003], 2004:d[2004], 2005:d[2005],
  2006:d[2006], 2007:d[2007], 2008:d[2008], 2009:d[2009], 2010:d[2010], 2011:d[2011],
  2012:d[2012], 2013:d[2013], 2014:d[2014], 2015:d[2015], 2016:d[2016], 2017:d[2017]
}; });

有谁知道是否可以通过这种方式将多个字段合并到一个维度中? 也许我需要更改伪造的数据,例如为每个应用程序的[0,0,0,1,1,1,1 ...]单个字段数组。 但是如果我这样做,那么在1994年至2030年间,如何在任何地方都不存在时如何产生维度呢?

我最糟糕的情况是创建额外的行,所以每个数据点重复35次,不同年份。 我想避免这种情况,但不知道如何。

谢谢你的帮助

艾玛

链接地址: http://www.djcxy.com/p/32695.html

上一篇: DC, Crossfilter dimension: multiple columns as different keys?

下一篇: summ all the values of a field using crossfilter?