当BI工具从 JSON 文件中读取表格数据时,某些情况下也会出现类似的“风扇陷阱”(JSON fan trap),比如下面的 JSON 文件:
另见〖关于JSON的“裂缝陷阱”〗
{
"results": [
{
"Film": "Film1",
"Duration": 100,
"Genre": [
"Comedy"
]
},
{
"Film": "Film2",
"Duration": 200,
"Genre": [
"Drama"
]
},
{
"Film": "Film3",
"Duration": 300,
"Genre": [
"Comedy",
"Drama"
]
}
]
}
当使用 Tableau 读取该文件时,会自动展开其中的嵌套数组以形成表格,读取结果如下:
可以看到,例中的嵌套数据在展开后发散了,这是逻辑上的不可避免的,不过 Tableau 使用自动生成的公式(LOD语法)记录了数据源的情况,因而在对该表进行聚合分析时数据结果是正确的:
在读取嵌套的 JSON 数据结构为二维表数据时,为了避免发散就需要避免对其进行扁平化展开,解决办法就是拆分识别成多张小表,比如该例中可识别成两张小表:
当然,最终将它们连接成一张大表时,不可避免地会出现同样“风扇陷阱”,这是逻辑上的。