码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Hive 数据模型切换后的数据验证方案


      记录这样一个场景,cdp/dmp等等标签模型系统,会出现这样一种情况。

      标签系统一般属于ads集市层加工的模型数据,如果上游(数仓/业务)表进行了切换,比如我们项目最近上游从fdl/gdl切换到了dwd/dws,切换完毕后的数据一般都会出现问题,如何进行数据验证是一个需要好好思考的问题。

      首先,如果把切换后的结果表当成左表去匹配切换前的结果表,很容易出现因未验证语法不正确导致的数据验证问题,例如:切换后的左表a中某个数据为null,而切换前的表b中数据不为null,反正亦是,这样的数据对业务来说也是有问题的。

      记录切换后验证方案:

    1、主键/外键 完整性检验:

      主键泛指数据表中的唯一键值,虽然在hive中不需要指定主键,但ads层的标签模型数据一般会接入到系统,一般系统都会对数据唯一性做要求,所以我们在hive中也尽量保证数据的唯一性。

      这里以user_id为例

      首先检验user_id的空值异常,检测有无null或者空的情况,这种都属于不该出现的异常数据

      其次检验user_id的重复值异常,如果是标签模型,一个用户应该只存在一条数据

      外键一般是数据接入系统,系统规定的外键,例如合同维度的数据表,系统也会要求用户id作为外键,所以外键也是需要进行检测

      检测外键完整性即保证合同号不为空的情况下,user_id也不为空。

    2、数据量检验:

      模型切换前与模型切换后的数据量进行对比,并给出差异原因。

    3、按主键进行的字段一致性检验:

      字段检验是数据验证的核心,是最关键的一部分。

      为了解决上述的问题,最好用的检验sql为:

      

    1. select * from (
    2. select contr_no
    3. ,user_id
    4. ,unique_id
    5. ,if_open_cooperator
    6. from test.a
    7. where dt='20220908'
    8. ) a
    9. join (
    10. select contra_no
    11. ,usr_id
    12. ,prod_cd
    13. ,if_open_cooperator
    14. from test.b
    15. where dt='20220908'
    16. ) b
    17. on a.contr_no=b.contra_no
    18. where (
    19. coalesce(a.if_open_cooperator,'')!=coalesce(b.if_open_cooperator,'')
    20. )
    21. ;

  • 相关阅读:
    你知道你的竞争优势吗?
    【完美解决】IDEA 中 Maven 报错 Cannot resolve xxx 和 Maven 中 Dependencies 报红报错。
    node版本管理工具nvm的安装卸载与使用(windows)
    一键免密登录云平台!ZStack Cloud 4.5.0等你来解锁……
    基于LinuxC语言实现的TCP多线程/进程服务器
    错误监控——自建sentry
    cobbler实现系统自动化部署与安装
    2000-2022年上市公司CEO 高管及董事会环保背景数据(5W+ )(原始数据+处理代码Stata do文档)
    浅谈欧拉图(欧拉路径)
    实战:10 种实现延迟任务的方法,附代码!
  • 原文地址:https://blog.csdn.net/qq_40771567/article/details/126867452
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号