欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Clickhouse统计指定表中各字段的空值、空字符串或零值比例

Clickhouse统计指定表中各字段的空值、空字符串或零值比例

2025/6/9 0:38:03 来源:https://blog.csdn.net/weixin_30777913/article/details/148497841  浏览:    关键词:Clickhouse统计指定表中各字段的空值、空字符串或零值比例

下面是一段Clickhouse SQL代码,用于统计指定数据库中多张表的字段空值情况。代码通过动态生成查询语句实现自动化统计,处理逻辑如下:

  1. 从系统表获取指定数据库(替换your_database)中所有表的字段元数据
  2. 根据字段类型动态生成对应的空值统计逻辑
  3. 使用sum聚合函数统计空值记录数
  4. 计算空值占比百分比
  5. 结果包含数据库名、表名、字段名、字段类型、空值计数、总行数和空值占比
SELECT database,table,column,type,count_empty,total_rows,ROUND(count_empty * 100.0 / total_rows, 2) AS percentage
FROM (SELECT database,table,column,type,CASE WHEN type LIKE 'String%' THEN(SELECT sum(TRIM(IFNULL({col}, '')) = '') FROM {db}.{tbl})WHEN type IN ('UInt8','UInt16','UInt32','UInt64','Int8','Int16','Int32','Int64','Float32','Float64') THEN(SELECT sum(IFNULL({col}, 0) = 0) FROM {db}.{tbl})ELSE (SELECT sum({col} IS NULL) FROM {db}.{tbl})END AS count_empty,(SELECT count() FROM {db}.{tbl}) AS total_rowsFROM system.columns WHERE database = 'your_database' AND table IN ('table1', 'table2', 'table3')  -- 替换为需要分析的表名SETTINGS allow_experimental_analyzer = 1, format_template = 'SELECT \'{database}\', \'{table}\', \'{column}\', \'{type}\', ${{col:Identifier}}, ${{tbl:Identifier}}, ${{db:String}}'
)

使用说明:

  1. 替换数据库名:将代码中的'your_database'改为实际数据库名
  2. 指定表名:修改table IN列表中的表名(如'table1', 'table2'
  3. 执行结果:查询将输出7列统计结果

处理逻辑说明:

字段类型处理方式空值定义
StringTRIM(IFNULL(字段, '')) = ''空字符串
数值类型IFNULL(字段, 0) = 0数值0
其他类型字段 IS NULLNULL值

输出列说明:

列名说明
database数据库名称
table表名称
column字段名称
type字段类型
count_empty空值记录数(空串/0/NULL)
total_rows表总行数
percentage空值占比百分比(保留两位小数)

注意:对于数值类型字段,真实值为0的记录也会被统计在内。若需区分真实0值和空值,需要额外的业务逻辑处理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词