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 性能问题

使用 UI 将 JSON 加载到 Bigquery 时出错

在 BigQuery 中,将对象的字符串化数组转换为非字符串化

“将循环结构转换为 JSON”来自 Cloud Function NodeJs 的 BigQuery 插入

BigQuery json 特殊字符 UI 导出问题