You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BigQuery中按行统计NULL值数量的实现方法

在BigQuery中统计每行NULL值数量的方法

当然可以实现,以下是几种实用的解决方案:

方法一:手动指定列(适合列数少的场景)

如果你的表只有少量列(比如你提到的3列),直接用IF函数逐个判断列是否为NULL,再求和即可得到总数:

SELECT
  col1,
  col2,
  col3,
  -- 统计每行的NULL值数量
  IF(col1 IS NULL, 1, 0) +
  IF(col2 IS NULL, 1, 0) +
  IF(col3 IS NULL, 1, 0) AS null_count
FROM `your_project.your_dataset.your_table`;

这段代码会给每行新增一个null_count列,值为该行中col1、col2、col3里NULL值的总数。

方法二:动态生成逻辑(适合列数多的场景)

如果表的列数很多,手动编写每个列的判断会很繁琐,可以用动态SQL自动生成统计逻辑:

-- 先获取表的所有列名
DECLARE column_list ARRAY<STRING>;
SET column_list = (
  SELECT ARRAY_AGG(column_name)
  FROM `your_project.your_dataset.INFORMATION_SCHEMA.COLUMNS`
  WHERE table_name = 'your_table' -- 替换成你的表名
);

-- 动态执行查询,自动拼接NULL判断语句
EXECUTE IMMEDIATE FORMAT("""
  SELECT
    *,
    (%s) AS null_count
  FROM `your_project.your_dataset.your_table`
""", STRING_AGG(FORMAT("IF(%s IS NULL, 1, 0)", col), " + ")
FROM UNNEST(column_list) AS col);

这段代码会自动读取表的所有列,生成对应的NULL判断表达式,无需手动逐个列编写。

将统计列永久添加到表中

如果需要把null_count列永久添加到原表,可以分两步操作:

  1. 新增列:
ALTER TABLE `your_project.your_dataset.your_table`
ADD COLUMN null_count INT64;
  1. 更新列的值:
UPDATE `your_project.your_dataset.your_table`
SET null_count = IF(col1 IS NULL, 1, 0) + IF(col2 IS NULL, 1, 0) + IF(col3 IS NULL, 1, 0);

或者直接创建包含统计列的新表:

CREATE TABLE `your_project.your_dataset.new_table_with_null_count` AS
SELECT
  *,
  IF(col1 IS NULL, 1, 0) + IF(col2 IS NULL, 1, 0) + IF(col3 IS NULL, 1, 0) AS null_count
FROM `your_project.your_dataset.your_table`;

内容的提问来源于stack exchange,提问作者DART

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 02:54:51