用大模型辅助数据质量监控规则生成:从历史波动自动提炼 DQC 校验阈值 📅 发布时间:2026/9/12 7:47:35 👁 浏览次数: 用大模型辅助数据质量监控规则生成从历史波动自动提炼 DQC 校验阈值在企业级数据仓库与中台建设中数据质量监控Data Quality Center / DQC是保障数仓产出正确性、防止脏数据污染下游决策看板的第一道防线。然而在面对数仓中成千上万张物理表时数据团队在配置 DQC 监控规则时常常陷入极大的痛苦与两难境地痛点一配置成本极其沉重如果靠工程师人肉去给每张表的每个核心字段手工配置空值率、唯一性、取值范围和行数波动阈值几千张表需要配置数万条规则耗费数月且极易疏漏痛点二硬编码阈值频繁误报或漏报很多人喜欢写死静态阈值例如“每天新增行数必须大于 10 万行”。结果到了周日业务自然低谷时只有 8 万行监控系统直接在凌晨 3 点夺命连环 Call 触发误报报警或者在大促当天行数暴增 10 倍而静态规则却因为只校验了下限对上游系统重复写入的数据膨胀毫无察觉严重漏报。如何利用大语言模型LLM深度结合时间序列统计探针Profiling Metrics自动学习历史 90 天的业务周期性波动规律一键为全库表自动生成包含动态自适应阈值Adaptive Thresholds与业务语义校验的高质量 DQC 规则集今天我们系统拆解基于大模型的自动化数据质量规则提炼与监控引擎实战架构。动态 DQC 规则智能生成的全链路流水线[ 目标物理表历史 90 天元数据与分区统计流水 (Row Count, Null Rates, Enums) ] │ ▼ ----------------------------------------------------------------------------------------------- | 阶段一时态特征工程与波动基线拟合 (Statistical Profiling Engine) | | - 自动提取日均值、7天周周期波动系数、节假日跳跃倍率、字段枚举值频次分布 (Value Frequency) | ----------------------------------------------------------------------------------------------- │ ▼ ----------------------------------------------------------------------------------------------- | 阶段二大模型结合业务语义生成结构化 DQC 规则 (LLM Rule Synthesizer) | | - LLM 读取字段中文注释、业务主题域与统计基线自动推断合理的波动容忍度与强弱告警级别 | ----------------------------------------------------------------------------------------------- │ ▼ ----------------------------------------------------------------------------------------------- | 阶段三编译为标准 Great Expectations / Soda / 自研 SQL 质检任务并挂载调度 | -----------------------------------------------------------------------------------------------核心实现代码Python 与本地大模型集成生成 DQC 规则import json import requests import numpy as np import pandas as pd PROMPT_DQC_TEMPLATE 你是一名资深数据质量治理专家。请根据以下提供的物理表【字段元数据】以及【过去 90 天的历史统计波动特征】为该表量身制定一套严密的、符合生产环境的高质量 DQC 校验规则集。 【目标表信息】 - 表名: {table_name} - 业务描述: {table_desc} 【历史 90 天数据特征统计探针】 {profiling_stats_json} 请严格按以下 JSON 格式输出可直接执行的 DQC 规则配置 {{ table_name: {table_name}, rules: [ {{ rule_id: ROW_COUNT_DYNAMIC_CHECK, rule_type: row_count_range, severity: BLOCKING_ALERT, logic_description: 日增量行数动态校验 (结合周中与周末波动), threshold: {{ min_expected: 85000, max_expected: 180000 }}, sql_assertion: SELECT CASE WHEN count_val BETWEEN 85000 AND 180000 THEN 1 ELSE 0 END FROM (SELECT COUNT(*) AS count_val FROM {table_name} WHERE dt {{{{ run_date }}}}) }}, {{ rule_id: PAY_STATUS_ENUM_CHECK, rule_type: enum_validity, column_name: pay_status, severity: BLOCKING_ALERT, allowed_values: [1, 2, 3, 4, 5], sql_assertion: SELECT COUNT(*) FROM {table_name} WHERE dt {{{{ run_date }}}} AND pay_status NOT IN (1, 2, 3, 4, 5) }}, {{ rule_id: NULL_RATE_REFUND_CHECK, rule_type: null_rate_anomaly, column_name: refund_reason_code, severity: WARNING, max_null_rate_pct: 92.5, sql_assertion: SELECT (SUM(CASE WHEN refund_reason_code IS NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*)) FROM {table_name} WHERE dt {{{{ run_date }}}} }} ] }} def generate_dqc_rules_for_table(table_name: str, table_desc: str, historical_stats: dict) - dict: prompt PROMPT_DQC_TEMPLATE.format( table_nametable_name, table_desctable_desc, profiling_stats_jsonjson.dumps(historical_stats, ensure_asciiFalse, indent2) ) response requests.post( http://localhost:11434/v1/chat/completions, json{ model: qwen2.5-coder:14b, messages: [{role: user, content: prompt}], temperature: 0.0, response_format: {type: json_object} }, timeout60 ) return json.loads(response.json()[choices][0][message][content])自动生成的规则实测样例与告警分级机制系统对订单明细表生成的规则中包含了精细的强弱双层拦截机制----------------------------------------------------------------------------------------------- | 【强阻断级别告警 (BLOCKING_ALERT / P0)】 | | - 触发条件主键唯一性重复、核心实付金额存在负数、日增量行数暴跌超过 50% (可能上游抽取中断) | | - 自动化处置【强制熔断下游调度】禁止生成下游 ADS 报表并向数仓值班手机发送电话语音报警 | | | | 【弱预警级别告警 (WARNING / P2)】 | | - 触发条件非核心枚举字段出现少量未见值、退款原因说明空值率环比上涨 5% | | - 自动化处置放行下游任务仅在飞书/企微治理群中发送消息卡片由分析师在工作时间内跟进排查。 | -----------------------------------------------------------------------------------------------生产落地的三条核心红线绝对禁止纯静态死门限行数校验必须按“工作日均值 $\pm 30%$”与“周末均值 $\pm 40%$”进行双套动态基准自适应彻底消除周末节假日的无效误报狼来了效应。生成规则在历史 30 天数据上做“回溯试跑Backtesting”新生成的 DQC 规则在正式上线前必须在过去 30 天的历史数据上执行模拟回测。若发现历史误报率超过 2 次自动调整容忍度宽松系数保证规则上线即稳健。质检任务计算下推至列存引擎执行Pushdown ExecutionDQC 校验 SQL 必须写成高内聚的聚合表达式严禁将全表明细拉回 Python 内存计算确保全库上万条质检规则在凌晨 10 分钟内极速出数完成。