假设我有一对多关系的数据集。例如,每位教师都有许多(一系列)学生,因此数据可能嵌套为:
[
{
teacher: {
'name': 'Ann'
},
students: [ ... ]
},
...
]
我可以将Crossfilter与上面格式化的数据一起使用吗?或者必须将数据弄平,就像许多例子一样?
答案 0 :(得分:1)
我认为如果您想对嵌套实体进行操作作为分组,过滤和聚合的基础,那么您应该将数据展平。
Crossfilter操作的基本单元是数组元素,在平行行中最容易被考虑。在Crossfilter的许多功能中,您的代码将被提供给每个数组元素,以便您可以驱动各种操作(组,过滤器等)。
从技术上讲,您可以动态地浏览每个元素的内容,并基本上动态地返回展平的值。但是这些函数中的每一个基本上都需要返回一个值,因此在单个顶级元素下有多个嵌套实体的情况下,您将不断努力弄清楚该值应该是什么。
所以,我不会说使用嵌套数据是不可能的,但是你在自然表达的方面会受到限制,当你试图解决这些限制时,复杂性会急剧增加。
我认为扁平化绝对是可行的方法。根据我的经验,如果将数据元素视为关系数据库中的行,则Crossfilter更容易理解。