DataWorks针对非按日分区表,支持这种《表行数,7天平均值波动率》校验规则嘛?dataworks 会辅助记录历史数据进行校验?
支持的 会采集历史数据校验 所以配置该规则 测试运行的时候可以选择不同的业务日期 跑7天 可以观察到历史记录里有7天的样本值 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”
DataWorks 支持对非按日分区表进行数据质量校验,包括对表行数的变化情况进行监控。虽然 DataWorks 默认提供的数据质量校验规则可能不直接包含“7天平均值波动率”的具体规则,但是你可以通过自定义的方式来实现这一功能。
下面是如何在 DataWorks 中实现针对非按日分区表的“表行数,7天平均值波动率”校验规则的方法:
首先,你需要确保 DataWorks 或者其他地方有一个存储历史表行数的地方。这通常需要创建一个额外的表来记录每天的表行数,并且每天更新这个表。
CREATE TABLE IF NOT EXISTS row_count_history (
table_name STRING,
date DATE,
row_count BIGINT
);
INSERT INTO row_count_history (table_name, date, row_count)
SELECT 'your_table_name', CURRENT_DATE, COUNT(*)
FROM your_table_name;
接下来,你需要编写一个 SQL 查询或者使用 DataWorks 的自定义脚本来实现这个规则。
假设你已经有一个历史记录表 row_count_history
,你可以通过以下 SQL 查询来计算过去 7 天的平均值波动率:
WITH last_seven_days AS (
SELECT
table_name,
date,
row_count,
LAG(row_count, 1) OVER (PARTITION BY table_name ORDER BY date) AS prev_row_count
FROM row_count_history
WHERE date BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) AND CURRENT_DATE
),
avg_and_stddev AS (
SELECT
table_name,
AVG(row_count) AS avg_row_count,
STDDEV_SAMP(row_count) AS stddev_row_count
FROM last_seven_days
GROUP BY table_name
)
SELECT
a.table_name,
a.avg_row_count,
a.stddev_row_count,
(c.current_row_count - a.avg_row_count) / a.stddev_row_count AS fluctuation_rate
FROM avg_and_stddev a
JOIN last_seven_days c ON a.table_name = c.table_name
WHERE c.date = CURRENT_DATE;
通过以上步骤,你可以实现在 DataWorks 中对非按日分区表的行数变化进行监控,并基于 7 天平均值波动率来进行校验。如果你需要更详细的帮助或具体的实现细节,请随时提问。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。