json - 在 BigQuery 中创建具有 RECORD 类型的列
问题描述
我想创建类型为 RECORD 的列
我有一个结构或数组(结构)
json
--------
"fruit":[{"apples":"5","oranges":"10"},{"apples":"5","oranges":"4"}]
"fruit":{"apples":"1","oranges":"15"}
"fruit":{"apples":"5","oranges":"1"}
我想创建fruit
RECORD 类型
fruit RECORD NULLABLE
fruit.apples STRING NULLABLE
fruit.oranges STRING NULLABLE
解决方案
我相信实现您想要做的最直接的方法是使用您提供的 json 文件的编辑版本(遵守公共文档中显示的规则)并通过 Cloud Console 的自动检测加载您的数据。
如果您想获得以下架构:
fruit RECORD NULLABLE
fruit.apples INTEGER NULLABLE
fruit.oranges INTEGER NULLABLE
您应该使用以下 json 文件:
{"fruit":{"apples":"5","oranges":"10"}}
{"fruit":{"apples":"5","oranges":"4"}}
{"fruit":{"apples":"1","oranges":"15"}}
{"fruit":{"apples":"5","oranges":"1"}}
另一方面,如果您希望获得重复的属性(因为您提供的示例的同一行中有两个水果对象),则需要使用以下文件:
{"fruit":[{"apples":"5","oranges":"10"},{"apples":"5","oranges":"4"}]}
{"fruit":{"apples":"1","oranges":"15"}}
{"fruit":{"apples":"5","oranges":"1"}}
这将导致以下架构:
fruit RECORD REPEATED
fruit.apples INTEGER NULLABLE
fruit.oranges INTEGER NULLABLE
最后,我注意到您在问题中指定了您希望获取属性fruit.apples
和fruit.oranges
as STRING
(这对于自动检测来说并不简单,因为值是5
和之类的数字10
)。在这种情况下,您可以使用 DDL 语句显式创建表,但如果仍然适合您的用例场景,我强烈建议考虑将这些字段转换为整数。
推荐阅读
- python - 如何编写一种方法(采用文件目录)从文件目录中的word文档中提取文本?
- artifactory - 如何通过 REST 为 Artifactory 中的现有属性添加值
- python - 使用字典的 Python 罗马数字到整数转换器
- c# - Emgu CV 图像锐化和轮廓检测
- app-inventor - 尝试在 App Inventor 2 中将句子转换为 Pig Latin 时出错
- angularjs - 无法访问 $state 或 $state.current
- django - Pycharm Docker 调试器无法连接到 Docker 中的数据库
- python - 决策树中特定类的 Sklearn 决策规则
- android - SubscriptionManager.from() 已弃用
- c++ - openCV C++ 将对象/斑点减少到质心