Google bigquery 用固定值替换空值,而不创建新的列BigQuery

Google bigquery 用固定值替换空值,而不创建新的列BigQuery,google-bigquery,Google Bigquery,我知道有很多关于这方面的文章,但我仍然没有找到一个合适的答案来回答我的问题。 我有几个列涉及空值。我想用0替换所有空值。对于我使用的每个方法,我都需要用新(旧)值创建新列,而不是仅仅替换现有列中的值。是我做错了什么,还是事情就是这样 数据如下所示 SerialNumber Distance Heading Speed_diff Speed 123 NULL NULL NULL 45 123

我知道有很多关于这方面的文章,但我仍然没有找到一个合适的答案来回答我的问题。 我有几个列涉及空值。我想用0替换所有空值。对于我使用的每个方法,我都需要用新(旧)值创建新列,而不是仅仅替换现有列中的值。是我做错了什么,还是事情就是这样

数据如下所示

 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`
)   
有输出


谢谢!!我也想到了这个解决方案,但上面的米哈伊尔让它更优雅:)谢谢!!我也想到了这个解决方案,但上面的米哈伊尔使它更优雅:)正是我所需要的!非常感谢。正是我需要的!非常感谢。