Google BigQuery 在加载期间更改列名称

问题描述 投票:0回答:1

我正在将 JSON 数据加载到 BigQuery 中。 JSON 包含各种结构,这些结构又包含许多 STRING 字段。我可以解析 99% 的所需内容,但无法解析剩余的一列。原因是列名同时包含空格和连字符。这两者在 Big Query 中都是禁忌(直到灵活的列命名支持正式发布)。

我用这种方法在 SQL 中加载数据:

CREATE OR REPLACE EXTERNAL TABLE <proj>.<dataset>.<tablename> {
    teams_remove STRUCT<team_a STRING, team_b STRING, winning team STRING, losing-manager STRING>
)

这只是一个展示我正在使用的语法的示例。在此示例中,第三个字符串“获胜团队”将由于空格而无法解析/加载,第四个字符串将无法将骰子加载到连字符。

有什么方法可以在摄取/加载时重命名列/字段吗?

不幸的是,我无法预处理源数据来修复列名称。

谢谢!

sql google-cloud-platform google-bigquery
1个回答
0
投票

根据您的帖子,我认为这是一个很好的问题,并在这里研究并写了一篇中等文章:

https://medium.com/@kolban1/bigquery-external-tables-with-json-data-d36c8d09c465

总而言之,一种解决方案是使用 CSV 解析器并创建一个外部表,该外部表表示 JSON 文件是 CSV 记录,其中在数据中找不到分隔符(例如 0xFF)。 从那里,您现在将拥有一个行表,其中每行都是与 JSON 文本相对应的字符串。 最后,您可以在表上创建一个视图,其中应用 JSON 解析器来生成提取的字段。

© www.soinside.com 2019 - 2024. All rights reserved.