BigQuery:将 JSON 对象加载为字符串
Posted
技术标签:
【中文标题】BigQuery:将 JSON 对象加载为字符串【英文标题】:BigQuery: Load JSON object as a string 【发布时间】:2020-03-31 21:37:42 【问题描述】:我有一个带有 3 个字段的新行分隔 json:其中 2 个是字符串,第三个是 json 对象。这是一个例子:
"val1":"stringvalue1","val2":"stringvalue2","val3":"i1":789,"i2":60.0,"i3":8
我想直接加载所有 3 个字段为 STRING 的文件。
这里的第三个字段是 ""i1":789,"i2":60.0,"i3":8"。
我不知道 val3 中的 JSON 对象将包含多少个字段:每行之间是不同的。有没有办法直接将 JSON 对象转换为字符串?我尝试在架构中将列指定为字符串,但在加载时出现解析错误。
谢谢
【问题讨论】:
您可以期待 val3 中是否有最多字段 - 例如 i10 ?如果是这样,请先创建表并将文件加载到其中。未分配的 i* 将默认为 null 【参考方案1】:加载为单列 CSV。
一个。确保将字段分隔符设置为稀有字符,或仅设置为 null (\0
)。
这会将整行加载为单个列。
解析 BigQuery 中的文本行。可以使用本机 JSON 函数,也可以使用 javascript。在这种情况下,原生 BigQuery JSON 函数就足够了。
【讨论】:
这是一个 hack,BigQuery 应该将 JSON 对象强制转换为字符串或 RECORD。尤其是与EXTERNAL TABLE
一起使用时以上是关于BigQuery:将 JSON 对象加载为字符串的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 加载到 BigQuery:字段有时是数组,有时是字符串
将 json 格式数据加载到 google bigquery 性能问题
在 BigQuery 中,将对象的字符串化数组转换为非字符串化