如何在Matillion中验证两段SQL查询的计数结果是否一致?
在Matillion里验证两个查询计数是否一致的方法
方法一:直接对比查询结果
把两个计数查询合并成一条能直接输出对比结论的SQL,放到Matillion的SQL组件里执行:
SELECT (SELECT COUNT(DISTINCT sfdc_account_id) FROM account) AS account表计数, (SELECT COUNT(DISTINCT account_id) FROM fct_acco) AS fct_acco表计数, CASE WHEN (SELECT COUNT(DISTINCT sfdc_account_id) FROM account) = (SELECT COUNT(DISTINCT account_id) FROM fct_acco) THEN '结果一致' ELSE '结果不一致' END AS 对比结论
操作步骤:
- 打开Matillion的SQL Query组件(在Transform分类下),粘贴上面的SQL。
- 点击Run执行,底部Result面板会直接显示两个计数和对比结论,一眼就能看出是否相同。
方法二:基于原Union语句改造
如果想沿用你原来的Union结构,也可以改成下面的SQL,同样用SQL Query组件执行:
SELECT CASE WHEN COUNT(DISTINCT cnt) = 1 THEN '结果一致' ELSE '结果不一致' END AS 对比结论 FROM ( SELECT COUNT(DISTINCT sfdc_account_id) AS cnt FROM account UNION SELECT COUNT(DISTINCT account_id) AS cnt FROM fct_acco ) t
这个逻辑是:如果Union后的结果只有1条,说明两个计数相同;如果有2条,就是不同。
(可选)自动化告警
要是需要自动监控差异:
- 用Calculator或Python Script组件读取查询返回的对比结论。
- 当结论是“结果不一致”时,用Email Notification组件发告警,或者把差异写入日志表留痕。
内容的提问来源于stack exchange,提问作者asd
相关产品推荐
相关产品推荐

