gpt4 book ai didi

javascript - Crossfilter 是否需要平面数据结构?

转载 作者:可可西里 更新时间:2023-11-01 02:44:00 24 4
gpt4 key购买 nike

我发现的所有 Crossfilter 示例都使用这样的平面结构:

[
{ name: “Rusty”, type: “human”, legs: 2 },
{ name: “Alex”, type: “human”, legs: 2 },
...
{ name: “Fiona”, type: “plant”, legs: 0 }
]


“日期”,“开盘价”,“高价”,“低价”,“收盘价”,“成交量”,“oi” 11/01/1985,115.48,116.78,115.48,116.28,900900,0 11/04/1985, 116.28,117.07,115.82,116.04,753400,0
11/05/1985,116.04,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 - Crossfilter 是否需要平面数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17114816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com