Soda Core如何动态对数据库所有表执行checks.yml四类统计检查
Soda Core 数据库全局统计检查配置方案
需求目标
动态/隐式地对数据库中所有表执行checks.yml检查,无需逐个命名上百张表。
已完成操作
按照Soda官方快速入门指南完成Soda Core安装,通过configuration.yml配置好数据源连接。
当前问题
官方文档仅提供单表检查示例,需实现四类基于COUNT()的统计检查:
- 统计数据库内的表总数
- 统计数据库所有表的列总数
- 统计存在描述的表的数量
- 统计存在描述的列的数量
完善后的checks.yml配置
# checks for MY_DATABASE: sql_metrics: - name: num_tables query: | SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '你的数据库名称'; # 替换为实际数据库名 - name: num_columns query: | SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = '你的数据库名称'; # 替换为实际数据库名 - name: sum_tables_descriptions query: | # 适配MySQL/MariaDB SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '你的数据库名称' AND table_comment IS NOT NULL AND TRIM(table_comment) != ''; # 若为PostgreSQL,替换为以下SQL # SELECT COUNT(*) # FROM information_schema.tables # WHERE table_schema = '你的数据库名称' # AND comment IS NOT NULL # AND TRIM(comment) != ''; - name: sum_columns_descriptions query: | # 适配MySQL/MariaDB SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = '你的数据库名称' AND column_comment IS NOT NULL AND TRIM(column_comment) != ''; # 若为PostgreSQL,替换为以下SQL # SELECT COUNT(*) # FROM information_schema.columns # WHERE table_schema = '你的数据库名称' # AND comment IS NOT NULL # AND TRIM(comment) != '';
配置说明
- 所有SQL中的
你的数据库名称需替换为实际要检查的数据库schema名称 - 针对不同数据库类型(如MySQL、PostgreSQL),表/列描述字段名不同,需根据实际情况选择对应SQL块
- 加入
TRIM()判断是为了排除仅含空格的无效描述
内容的提问来源于stack exchange,提问作者DanielBell99
相关产品推荐
相关产品推荐

