google-bigquery - Bigquery 如果字段存在

标签 google-bigquery

简短:有没有办法在不存在的 BQ 字段中进行查询,并为这些字段接收空值?
我有几乎同样的问题
BigQuery IF field exists THEN但有时我的 API 可以查询没有某些特定字段(历史表)的表,这种方法失败,因为它需要一个包含该字段的表:

SELECT a, b, c, COALESCE(my_field, 0) as my_field
FROM
(SELECT * FROM <somewhere w/o my_field>),
(SELECT * FROM <somewhere with my_field>)
有没有办法做这样的事情:
SELECT IFEXISTS(a, NULL) as the-field
FROM <somewhere w/o my_field>

最佳答案

假设您的表只有 x 和 y 字段!
所以下面的查询将完美地工作

SELECT x, y FROM YourTable

但由于不存在的字段 z,低于 1 将失败
SELECT x, y, z FROM YourTable

解决方法如下
#legacySQL
SELECT x, y, COALESCE(z, 0) as z
FROM 
(SELECT * FROM YourTable),
(SELECT true AS fake, NULL as z)
WHERE fake IS NULL

EDIT: added explicit #legacySQL to not to confuse those who is trying to apply this exact approach to Standard SQL :o)

关于google-bigquery - Bigquery 如果字段存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096320/

相关文章:

google-cloud-platform - 数据流 ReadFromBigQuery 转换 - 如何配置临时表的位置

google-bigquery - 将 Grafana 与 BigQuery 数据源结合使用时出现问题

google-bigquery - 大查询中出现错误

python - BigQuery : too many table dml insert operations for this table

ruby-on-rails - 解析来自 Google 大查询的响应

sql - 如何将键值数组转换为 BigQuery/GoogleSQL 中的列?

google-bigquery - Bigquery重叠值分布查询

google-bigquery - 解决错误 : returned "Output field used as input"

google-bigquery - 创建列类型为 RECORD 的表

google-bigquery - 使用 Google Cloud Data Fusion 执行自定义 SQL 查询