如何在Google BigQuery中查询含Null值日期列的表?
解决BigQuery日期列字符串'NULL'导致的转换错误
问题根源
这错误不是因为列里有真正的NULL值,而是存在字符串字面量'NULL'——BigQuery把这个字符串当日期解析时直接失败,所以你之前用IS NOT NULL过滤或者转字符串的方法都没用,因为这些行的列值是实实在在的'NULL'字符串,不是BigQuery认可的空值。
具体解决方案
过滤错误行:直接排除值为
'NULL'的记录,适合只需要有效数据的场景SELECT * FROM test.first_spend_day WHERE 你的日期列名 != 'NULL'安全解析日期:保留所有行,把无法解析的
'NULL'转为真正的NULL,不会触发报错SELECT SAFE.PARSE_DATE('%Y-%m-%d', 你的日期列名) AS 转换后日期 FROM test.first_spend_day注意:
%Y-%m-%d要换成你实际的日期格式,比如日期是MM/DD/YYYY格式就改成'%m/%d/%Y'。彻底修复表:把表中的
'NULL'字符串批量替换成BigQuery的NULL值,一劳永逸UPDATE test.first_spend_day SET 你的日期列名 = NULL WHERE 你的日期列名 = 'NULL'如果是分区表或者不想直接修改原表,可以创建一张清理后的新表:
CREATE OR REPLACE TABLE test.first_spend_day_clean AS SELECT CASE WHEN 你的日期列名 = 'NULL' THEN NULL ELSE 你的日期列名 END AS 你的日期列名, -- 这里列出表中其他需要保留的列 col1, col2, col3 FROM test.first_spend_day
内容的提问来源于stack exchange,提问作者Boris Gorovoy
相关产品推荐
相关产品推荐

