Google bigquery 用固定值替换空值,而不创建新的列BigQuery
我知道有很多关于这方面的文章,但我仍然没有找到一个合适的答案来回答我的问题。 我有几个列涉及空值。我想用0替换所有空值。对于我使用的每个方法,我都需要用新(旧)值创建新列,而不是仅仅替换现有列中的值。是我做错了什么,还是事情就是这样 数据如下所示Google bigquery 用固定值替换空值,而不创建新的列BigQuery,google-bigquery,Google Bigquery,我知道有很多关于这方面的文章,但我仍然没有找到一个合适的答案来回答我的问题。 我有几个列涉及空值。我想用0替换所有空值。对于我使用的每个方法,我都需要用新(旧)值创建新列,而不是仅仅替换现有列中的值。是我做错了什么,还是事情就是这样 数据如下所示 SerialNumber Distance Heading Speed_diff Speed 123 NULL NULL NULL 45 123
SerialNumber Distance Heading Speed_diff Speed
123 NULL NULL NULL 45
123 1 -1 5 50
123 2 2 10 60
我使用了以下查询:
WITH remove_nulls as (SELECT *,
IFNULL(Distance_meters,0) as Distance_meters,
IFNULL(Heading_radians,0) AS Heading_radians,
IFNULL(Speed_difference,0) AS Speed_difference,
from xxx.yyy.zzz)
输出:
SerialNumber Distance Heading Speed_diff Speed Distance_1 Heading_1 Speed_diff_1
123 NULL NULL NULL 45 0 0 0
123 1 -1 5 50 -1 -1 5
123 2 2 10 60 2 2 10
问题是,我总是形成新列,而不是替换现有列中的null!
有没有办法避免它,基本上只替换现有列中的值
期望输出:
SerialNumber Distance Heading Speed_diff Speed
123 0 0 0 45
123 1 -1 5 50
123 2 2 10 60
是的,除了语法外,还有其他语法
WITH remove_nulls as (SELECT * EXCEPT(Distance_meters,Heading_radians,Speed_difference),
IFNULL(Distance_meters,0) as Distance_meters,
IFNULL(Heading_radians,0) AS Heading_radians,
IFNULL(Speed_difference,0) AS Speed_difference,
from xxx.yyy.zzz)
是的,除了语法外,还有其他语法
WITH remove_nulls as (SELECT * EXCEPT(Distance_meters,Heading_radians,Speed_difference),
IFNULL(Distance_meters,0) as Distance_meters,
IFNULL(Heading_radians,0) AS Heading_radians,
IFNULL(Speed_difference,0) AS Speed_difference,
from xxx.yyy.zzz)
你就快到了-用下面的
with remove_nulls as (
select * replace(
ifnull(Distance,0) as Distance,
ifnull(Heading,0) AS Heading,
ifnull(Speed_diff,0) AS Speed_diff)
from `xxx.yyy.zzz`
)
有输出
您就快到了-使用下面的
with remove_nulls as (
select * replace(
ifnull(Distance,0) as Distance,
ifnull(Heading,0) AS Heading,
ifnull(Speed_diff,0) AS Speed_diff)
from `xxx.yyy.zzz`
)
有输出
谢谢!!我也想到了这个解决方案,但上面的米哈伊尔让它更优雅:)谢谢!!我也想到了这个解决方案,但上面的米哈伊尔使它更优雅:)正是我所需要的!非常感谢。正是我需要的!非常感谢。