【问题标题】:BigQuery: Select REPEATED fields as REPEATED fieldsBigQuery:选择 REPEATED 字段作为 REPEATED 字段
【发布时间】:2016-10-23 07:43:07
【问题描述】:

我正在通过 Avro 将数据加载到 BigQuery,我的列之一是一个数组。但是,这似乎加载正常,因为 BigQuery 将 root 作为前缀附加到列名,我需要将所有列选择为其适当的名称。我已包含 --noflatten_results 标志,但查询失败并显示“无法为字段 order_ids 创建有效的输出架构。尝试在最外层的 SELECT 中将 order_ids 重命名为 root.order_ids”

查询:

SELECT
root.a AS a,
root.b AS b,
root.orders_ids AS order_ids,
root.c AS c,
root.d AS d 
FROM dataset.table

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    使用旧版 SQL 很难从重复字段中删除父记录。 --noflatten_results 是尽力而为,不支持对重复字段进行许多转换,例如重命名。

    如果您使用标准 SQL,它应该相当简单。默认情况下,标准 SQL 查询的结果是未展平的,并且在 SELECT 子句中的记录中引用字段会将它们从父记录中删除。

    SELECT root.* from dataset.table;
    

    使用 CLI,您可以通过在命令行中添加 --nouse_legacy_sql 来指定使用标准 SQL。

    相关文档:

    【讨论】:

    • 谢谢丹尼,这行得通。如果您知道,请跟进。我正在使用 TIMESTAMP 将一个纪元长转换为人类可读的日期,但这在标准中不起作用。有没有办法达到同样的效果?
    • 我是盲人。错过了文档中的“附加时间戳转换”功能。谢谢。现在可以开始了!
    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多