【问题标题】:Is it possible to use star expression inside array_agg(struct expressions in BigQuery?是否可以在 array_agg(BigQuery 中的结构表达式中使用星型表达式?
【发布时间】:2021-10-19 04:52:44
【问题描述】:

我将几张表合并成一个嵌套表,我想知道是否可以使用星号表达式,例如,

SELECT t1.*, ARRAY_AGG(STRUCT(t2.*)) FROM t1 JOIN t2 on t1.col1=t2.col1 GROUP BY t1.*

我收到一个错误,但我想知道,也许我可以为此使用一些技巧?

【问题讨论】:

    标签: google-bigquery nested-table array-agg


    【解决方案1】:

    你的例子有两个问题:

    1. ARRAY_AGG 是一个 aggregate function,因此需要一个 GROUP BY 子句。
    2. ARRAY_AGG 的内部需要SELECT - 即ARRAY_AGG((SELECT AS STRUCT t2.*))。需要额外的括号将内部查询视为标量子查询表达式。

    如果您修复了这些问题,它应该能够运行,尽管我也建议为 ARRAY_AGG 字段设置别名以使其更具可读性。

    【讨论】:

    • 嗨,对不起,Jameses 的答案出现在你的前面。我无法将两者都标记为正确 :( 谢谢你的帮助!
    • 不用担心 - 因为您不太可能对您的后续行动做出回应(很确定 James 是一个机器人),不,没有简单的方法可以按所有列进行分组。您可以使用一些复杂的方法,但在大多数情况下,最简单的方法是手动写出GROUP BY 1, 2, 3 ...
    • 哈哈 :) 谢谢你的回答!我真的不喜欢这些 1,2,3..我认为很容易犯错误...然后就写下我所有的 20 列:)
    • @MStikh 需要注意的两件事:这个答案实际上出现在大约 2 分钟之前(您可以查看question timeline 来查看,请记住它是按时间倒序排列的)。这让我怀疑另一个答案是从这里复制的,特别是考虑到它刚刚编辑了一个垃圾邮件链接。我会考虑将接受的答案切换到此。另一个答案现在消失了,因为它是垃圾邮件。
    猜你喜欢
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2021-03-09
    • 2015-05-30
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多