google-bigquery - 如果带有联接的查询未展平,BigQuery 会引发异常

标签 google-bigquery

查询是:

select
    cb.subnum as subnum,
    last(
        if(
            (if(cu.smartcard_number is not null, 1, 0)) +
            (if(rr.smart_card_number is not null, 1, 0)) > 0, 1, 0)   
    ) as econnected_i,

from 
    combined.table1 as cb

left outer join each dataflow_raw_eu.table2 as cu
on cu.smartcard_number = cb.smart_card_num

left outer join each dataflow_raw_eu.table3 as rr
on rr.smart_card_number = cb.smart_card_num

group by subnum

错误是:

Error: Ambiguous field name 'imported_at' in JOIN. Please use the table qualifier before field name.

我注意到,当它仅使用任一表的一个联接运行时,查询就会成功。 imported_at 是所有 3 个表共享的时间戳字段(所有 3 个表共享的唯一字段),但它不包含在查询中。

如果我在 BigQuery 选项中选择 flatten_results,则查询会成功;但我希望使用嵌套记录运行 future 的查询。上述查询中的表都没有重复或记录字段。

最佳答案

看起来这可能是 GBQ 错误

尝试以下解决方法

SELECT
    cb.subnum AS subnum,
    LAST(
        IF(
            (IF(cu.smartcard_number IS NOT NULL, 1, 0)) +
            (IF(rr.smart_card_number IS NOT NULL, 1, 0)) > 0, 1, 0)   
    ) AS econnected_i,

FROM 
    combined.table1 AS cb

LEFT OUTER JOIN EACH (SELECT smartcard_number FROM dataflow_raw_eu.table2) AS cu
ON cu.smartcard_number = cb.smart_card_num

LEFT OUTER JOIN EACH (SELECT smart_card_number FROM dataflow_raw_eu.table3) AS rr
ON rr.smart_card_number = cb.smart_card_num

GROUP BY subnum  

请注意,根据 dataflow_raw_eu.table2dataflow_raw_eu.table3 中数据的逻辑和性质,您可以考虑在子选择中使用 GROUP BY,如下所示

SELECT smartcard_number FROM dataflow_raw_eu.table2 GROUP BY smartcard_number   

SELECT smart_card_number FROM dataflow_raw_eu.table3 GROUP BY smart_card_number 

关于google-bigquery - 如果带有联接的查询未展平,BigQuery 会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34849999/

相关文章:

python - 如何运行 BigQuery 查询,然后将输出 CSV 发送到 Apache Airflow 中的 Google Cloud Storage?

firebase - 新手 bigquery 如何从 firebase 事件中选择多个参数(模式记录,重复)

sql - 谷歌大查询中行之间的差异

ubuntu - 安装 BigQuery

javascript - 如何将销售额从 9999.99 转换为 9.999,99

google-bigquery - 从 BigQuery 中删除停用词?

google-analytics - 是否可以在bigquery中获取谷歌分析事件时间戳?

google-bigquery - 我们可以在BigQuery中强制转换类型吗?

google-bigquery - 如何找到Google BigQuery数据集的大小,而不是表的大小?

go - 使用 Golang 如何获取包含元数据的数据集表列表