JavaScript – Crossfilter是否需要平面数据结构?

前端之家收集整理的这篇文章主要介绍了JavaScript – Crossfilter是否需要平面数据结构?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现Crossfilter的所有示例都使用如下这样的平面结构:
[
  { name: “Rusty”,type: “human”,legs: 2 },{ name: “Alex”,...
  { name: “Fiona”,type: “plant”,legs: 0 }
]

要么

“日期”,“开放”,“高”,“低”,“关闭”,“卷”,“oi”11/01 / 1985,115.48,116.78,116.28,900900,0 11/04/1985,117.07,115.82,116.04,753400,0
11月5日/ 1985,116.57,115.88,116.44,876800,0

我有数百MB的平面文件,我处理以产生一个1-2MB的JSON对象,结构大致如下:

{
  "Meta": {"stuff": "here"},"data": {
    "accountName": {
      // rolled up by week
      "2013-05-20": {
        // any of several "dimensions"
        "byDay": {
          "2013-05-26": {
            "values": {
              "thing1": 1,"thing2": 2,"etc": 3
            }
          },"2013-05-27": {
            "values": {
              "thing1": 4,"thing2": 5,"etc": 6
            }
          }
          // and so on for day
        },"bySource": {
          "sourceA": {
            "values": {
              "thing1": 2,"thing2": 6,"etc": 7
            }
          },"sourceB": {
            "values": {
              "thing1": 3,"thing2": 1,"etc": 2
            }
          }
        }
      }
    }
  }
}

我想显示的表格如下:

Group: byDay* || bySource || byWhatever

           | thing1 | thing2 | etc
2013-05-26 |      1 |      2 |   2
2013-05-27 |      4 |      5 |   7

要么:

Group: byDay || bySource* || byWhatever

           | thing1 | thing2 | etc
sourceA    |      2 |      6 |   6
sourceB    |      3 |      1 |   3

展开这个JSON结构将是困难的,并产生一个非常大的对象.

我很乐意利用Crossfilter的精彩功能,但我不确定是否有可能.

我可以定义/解释我目前的结构到Crossfilter吗?也许还有另一种方法可以解决这个问题?我很容易承认,我对尺寸和许多其他重要的Crossfilter概念没有很好的把握.

解决方法

Crossfilter适用于一系列记录,数组的每个元素都通过维度(使用访问器函数定义)映射到一个或多个值.

即使您的数据包含聚合结果,也可以使用Crossfilter,但是请注意,在不同维度上合并已汇总的数据在技术上是不可能的,例如在上面的示例中组合“按天”和“按源”数据.您可以为每个聚合维度创建一个Crossfilter,例如一个用于“按天”,并在此上运行查询和组,但我不知道与您已经拥有的比较有多么有用.

对于内存使用情况,你确定平坦化你的扁平结构真的会那么有问题吗?请记住,每个记录(扁平化数组的元素)可以包含对嵌套结构中的字符串和其他对象的引用,因此您不一定会占用所有这么多内存.

猜你在找的JavaScript相关文章