简而言之:有没有办法在不存在的 BQ 字段中进行查询,并接收这些字段的 null 值?
我有几乎同样的问题BigQuery IF 字段存在 THEN https://stackoverflow.com/questions/32276601/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 字段不存在而失败
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
编辑:添加明确的#legacySQL
不要让那些试图将这种精确方法应用于标准 SQL 的人感到困惑:o)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)