【问题标题】:Null values for strings are being counted in GBQ字符串的空值被计入 GBQ
【发布时间】:2022-06-22 22:24:25
【问题描述】:

我有一个调查表,其中的答案是字符串类型,当然,并不是每个受访者都回答了每个问题。现在我的问题是我已经将空行分配给 null 并且在计算不同的值时也会计算空值。我正在使用 Plotly 进行可视化,我确信问题不存在。在 BigQuery 中的列上使用 SELECT DISTINCT 时,仍会显示空值,并且还会显示在图表上。该架构也将这些列设为可为空

我尝试将一个空字符串分配给对我来说没有意义的空行,并且正如预期的那样导致空行也被计​​算在内。如果有人对问题可能出在哪里有任何建议,我不确定如何从这里开始,非常感谢。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    当我运行以下命令时,我创建了一些虚拟数据来尝试复制您的问题:

    WITH data AS(
      SELECT "Yes" AS column UNION ALL
      SELECT "No" AS column UNION ALL
      SELECT NULL AS column
    )
    SELECT COUNT(column) AS count FROM data
    

    我得到了预期的结果2,忽略了NULL 值。

    我在上面的屏幕截图中看到您正在选择 DISTINCT 值,这将返回三个不同的值,NULL 是其中之一,如下所示:

    WITH data AS(
      SELECT "Yes" AS column UNION ALL
      SELECT "No" AS column UNION ALL
      SELECT NULL AS column
    )
    
    SELECT DISTINCT * FROM data
    

    如果您想查看两个不同值的计数,那么您应该使用COUNNT() 函数,而不是使用DISTINCT 进行选择。

    【讨论】:

      【解决方案2】:

      要返回不包含空值的行,可以使用以下查询:

      WITH table AS(
       SELECT "Yes" AS value UNION ALL
       SELECT "No" AS value UNION ALL
       SELECT NULL AS value
      )
      Select *
      from table
      where value is not NULL;
      

      输出:

      要计算不包含空值的行数,可以考虑以下查询:

      Select countif(value != 'null') count from table
      

      输出:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 2013-09-07
        相关资源
        最近更新 更多