我在Big Query中有一个包含大量列的表。
表中的行很多,某些列值为0 / 0.0,并且为null。
例如
Row A B C D E F
1 "abc" 0 null "xyz" 0 0.0
2 "bcd" 1 5 "wed" 4 65.5
我只需要选择那些具有非零Integer,Float和非NULL值的行。基本上,我只需要上表中的第2行
我知道我可以通过对每个列使用此查询来做到这一点
SELECT * FROM table WHERE (B IS NOT NULL AND B is !=0) AND
.
.
.
但是我有很多列,并且很难为每个列编写这样的查询。有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
以下BigQuery标准SQL示例
#standardSQL
WITH `project.dataset.table` AS (
SELECT "abc" a, 0 b, NULL c, "xyz" d, 0 e, 0.0 f UNION ALL
SELECT "bcd", 1, 5, "wed", 4, 65.5
)
SELECT *
FROM `project.dataset.table` t
WHERE NOT REGEXP_CONTAINS(TO_JSON_STRING(t), r':0[,}]|null[,}]')
有输出
Row a b c d e f
1 bcd 1 5 wed 4 65.5