【发布时间】:2019-10-11 09:36:09
【问题描述】:
我正在寻找一些关于如何最好地存储一些数据的意见。我有一些类似于以下的数据:
id category proportion
1 1 0.99
1 7 0.85
2 1 0.55
3 2 0.90
3 3 0.85
基本上,唯一 ID 可以属于不同数量的类别。每个 id 和 category 都有一个与之相关的比例。
我想将这些数据存储在单个列中,以便可以将其添加到每个 id 可能只占一行的表中。
现在,我一直在考虑两个 json 结构。考虑id = 1 的例子。我们会有类似以下两个选项...
- 未嵌套:
{"category1": "1", "proportion1": "0.99", "category2": "7", "proportion2": "0.85"} - 嵌套:
{"category1": {"label": "1", "proportion": "0.99"}, "category2": {"label": "7", "proportion": "0.85"}}
我对 Presto/Athena 中的 json 不太熟悉。用例将包括 a) 查找给定特定类别标签的 id 或 b)按单个类别标签对 id 属性进行分组。
例如,我可能想要识别属于类别 = 3 的所有 id。我认为这些结构中的任何一个都不会在 Athena 中使这变得容易。
寻找您可能有的任何反馈。我确实认为最佳结构是每个 id + 类别组合一行,但这不是这个用例的选项。
【问题讨论】:
-
您是否有理由将其放入 json 或想要重组数据?为什么不将其保留在您列出的表格格式中?这是多少数据?
-
我也会保留上面的格式。如果您决定走这条路,请务必注意 JSON 的处理成本非常高。它只是引擎的一个文本块,每次读取都必须对其进行解析。相反,如果您使用 ARRAY、MAP 或 ROW 等结构类型的组合,引擎可以直接处理数据。
-
感谢大家的反馈。我决定采用我提到的理想格式创建表格的方法,并在另一个表格中添加了用户可以用来查找的引用。我感觉 ARRAY、MAP 和 ROW 在 Presto 中更有效,所以得到确认很好。
标签: json presto amazon-athena