BigQuery - NULL 值
BigQuery - NULL values
我想在包含空值的列之间进行计算
x1 x2
9 0.0
5 1.2
12 null
10 null
如果计算
x1 + (x1*x2)
生成,结果是
9, 6, null, null
请问如何处理空值,结果会是
9, 6, 12, 10
我正在尝试 ifelse,如果值为 null,则使用 1
IF(x1 = null, 0, x1)
但结果仍然是空值。
谢谢!
使用 IFNULL(expr, 0)
- 如果 expr
为空,这将返回 0。
一般来说,不要做 something=null
,而是做 something IS null
。
在 Google 大查询中使用 ifnull 函数。(提供Link)
IFNULL(x1, 0)*IFNULL(x2,0) as new_col
- 这将插入 0 来代替 x1 和 x2 中的任何空值。
仅供参考:Google 云数据准备中有一个 ISNULL(column_name)
,就像 MySQL 中一样,它将 return 一个布尔值,即 True 或 False,具体取决于列是否为空。
另一种可能的解决方案是使用 COALESCE(arg1, arg2, ...,argN)
returns 第一个非空参数。
例如:
COALESCE(x1 , 0) * COALESCE(x2, 0)
returns 如果 x1(或 x2)为空则为 0。
我想在包含空值的列之间进行计算
x1 x2
9 0.0
5 1.2
12 null
10 null
如果计算
x1 + (x1*x2)
生成,结果是
9, 6, null, null
请问如何处理空值,结果会是
9, 6, 12, 10
我正在尝试 ifelse,如果值为 null,则使用 1
IF(x1 = null, 0, x1)
但结果仍然是空值。
谢谢!
使用 IFNULL(expr, 0)
- 如果 expr
为空,这将返回 0。
一般来说,不要做 something=null
,而是做 something IS null
。
在 Google 大查询中使用 ifnull 函数。(提供Link)
IFNULL(x1, 0)*IFNULL(x2,0) as new_col
- 这将插入 0 来代替 x1 和 x2 中的任何空值。
仅供参考:Google 云数据准备中有一个 ISNULL(column_name)
,就像 MySQL 中一样,它将 return 一个布尔值,即 True 或 False,具体取决于列是否为空。
另一种可能的解决方案是使用 COALESCE(arg1, arg2, ...,argN) returns 第一个非空参数。
例如:
COALESCE(x1 , 0) * COALESCE(x2, 0)
returns 如果 x1(或 x2)为空则为 0。