Crossfilter如何与不平坦的多维数据集一起使用?

时间:2014-01-30 01:06:48

标签: multidimensional-array nested filtering relational crossfilter

假设我有一对多关系的数据集。例如,每位教师都有许多(一系列)学生,因此数据可能嵌套为:

[
    {
        teacher: {
                    'name': 'Ann'
                 },
        students: [ ... ]
    },
    ...
]

我可以将Crossfilter与上面格式化的数据一起使用吗?或者必须将数据弄平,就像许多例子一样?

1 个答案:

答案 0 :(得分:1)

我认为如果您想对嵌套实体进行操作作为分组,过滤和聚合的基础,那么您应该将数据展平。

Crossfilter操作的基本单元是数组元素,在平行行中最容易被考虑。在Crossfilter的许多功能中,您的代码将被提供给每个数组元素,以便您可以驱动各种操作(组,过滤器等)。

从技术上讲,您可以动态地浏览每个元素的内容,并基本上动态地返回展平的值。但是这些函数中的每一个基本上都需要返回一个值,因此在单个顶级元素下有多个嵌套实体的情况下,您将不断努力弄清楚该值应该是什么。

所以,我不会说使用嵌套数据是不可能的,但是你在自然表达的方面会受到限制,当你试图解决这些限制时,复杂性会急剧增加。

我认为扁平化绝对是可行的方法。根据我的经验,如果将数据元素视为关系数据库中的行,则Crossfilter更容易理解。