【问题标题】:BigQuery - NULL valuesBigQuery - NULL 值
【发布时间】:2016-01-18 16:15:00
【问题描述】:

我想在包含空值的列之间进行计算

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)

但结果仍然是空值。

谢谢!

【问题讨论】:

    标签: null google-bigquery


    【解决方案1】:

    使用IFNULL(expr, 0) - 如果expr 为空,则返回为0。

    一般来说,不要做something=null,而是做something IS null

    【讨论】:

    • 原因是任何涉及 null 的表达式(除了“IS NULL”和“IFNULL”)都将评估为 null,即使该表达式类似于“foo = null”。
    【解决方案2】:

    在 Google Big Query 中使用 ifnull 函数。(提供链接)

    IFNULL(x1, 0)*IFNULL(x2,0) as new_col 
    
    • 这将插入 0 代替 x1 和 x2 中的任何空值。

    仅供参考:Google 云数据准备中有一个ISNULL(column_name),就像在 MySQL 中一样,它将返回一个布尔值,即 True 或 False,具体取决于列是否为空。

    【讨论】:

      【解决方案3】:

      另一种可能的解决方案是使用 COALESCE(arg1, arg2, ...,argN) 它返回第一个非空参数。

      例如:

      如果 x1(或 x2)为空,COALESCE(x1 , 0) * COALESCE(x2, 0) 返回 0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        相关资源
        最近更新 更多