生产环境下源数据字段粒度变更,下游怎么处理

56 篇文章 11 订阅
55 篇文章 1 订阅

真实生产坏境下,源数据字段变更,下游应该怎么做

今天源数据字段有个变更上线,变更的内容是将数据质量的监控告警从规则检测粒度变成了一个job粒度

有关DQC,数据质量控制。owner可以在一张表上创建一个dqc job,对应一个dqc_id,一个dqc_id下可以有多个监控项,就比如一张表上可以配置多个监控项一个意思,之前的检测告警规则是:一次检测动作发生告警,就会通知owner一次,有时候一张表可能多个监控项都会告警,比如假期双休等,表的数据流增加是正常的行为,那么这样一个规则触碰一次告警发送肯定会造成一定负担,所以现在变更为了一个dqc job 粒度形式发送告警。就是一个dqc job下的多个规则发生告警,只会给owner发送一次告警信息

那么,源数据发生变更,下游数据怎么变更成了问题。

首先,在源数据发生变更之后,应该找对应的人员确定变更的内容、字段、表、时间等,也能够让我们做出判断对下游的影响。并且及时做出对应修改。

本次源数据变更,下游用到这些表的地方较多,大概可以看下图
在这里插入图片描述

可以看到字段变更之后,对下游使用到这些字段的影响是很大的,因为把字段拆成了两个字段,那么下游的表如果用到过这些字段,是都要变成更改的

所以思路是,尽可能在dwd或者dwb层找到能够连接两个表的数据,然后在这张表里进行更改,这样下游就不用那么多张表做出变动了。

在这里插入图片描述

怎么把本来分开的数据,现在再次变成一个呢?

因为dqc_id — 1:N --> business_rule — 1:1/2 —> check_rule

这种一对多的关系在连接的时候,怎么做到数据一致性而且还要输出想要的结果?

连接判断alert_level_name,采用双层case when then解决

造些数据测试一下:

数据准备,3张表,dqc、business、check

如下:

dqc:
dqc1  	严重类型参数  	普通类型参数

business:
dqc1    business1
dqc1    business2

check_rule
business1  check_rule1  严重
business1  check_rule2  普通
business2  check_rule3  普通

代码:

select dqc.dqc_id
  ,cr.business_id
  ,check_rule_id
  ,case when alarm_type='严重' then (case when fatal_alarm_type='严重类型参数' then '严重成功' else '严重没成功' end)
        when alarm_type='普通' then (case when normal_alarm_type='普通类型参数' then '普通成功' else '普通没成功' end)
    else '未知' end
  alarm_id
  ,alarm_type
from dqc
join business_rule br
on dqc.dqc_id=br.dqc_id
join check_rule cr
on br.business_id = cr.business_id

结果:

dqc_id	business_id	check_id    alarm_type  alert_level_name
dqc1	business1	check_rule1	严重类型参数	严重
dqc1	business1	check_rule2	普通类型参数	普通
dqc1	business2	check_rule3	普通类型参数	普通

这 样 就 可 以 像 之 前 一 样 了 , 只 需 要 动 四 张 表 的 数 据 , 就 可 以 适 应 源 数 据 的 变 更 了 \color{#FF3030}{这样就可以像之前一样了,只需要动四张表的数据,就可以适应源数据的变更了}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值