知识点18:DWD层构建:数据抽取分析

  • 目标实现DWD层的构建思路分析

  • 路径

    • step1:抽取目标
    • step2:抽取语法
  • 实施

    • 抽取目标:将ODS层中每张表的数据抽取到DWD层对应的数据表中

    • 抽取语法

      insert overwrite table dwd.tbname partition(dt = '20210101')
      select
      	字段1,
      	字段2,
      	字段3,
      	……
      from ods.tbname
      where dt = '20210101';
      
  • 小结

    • 实现DWD层的构建思路分析

知识点19:DWD层构建:数据抽取测试

  • 目标实现DWD层数据抽取的测试
  • 路径
    • step1:代码讲解
    • step2:代码测试
  • 实施
    • 代码讲解
      • step1:如何获取所有表名?
        • 所有表名都在list中
      • step2:如何获取所有字段的信息?
        • 从Oracle中获取
    • 代码测试
      • 取消第6段代码的注释
      • 运行代码,查看结果
  • 小结
    • 实现DWD层数据抽取的测试

知识点20:整体代码重难点回顾

  • 目标掌握整体代码的重难点
  • 实施
    • 问题1:怎么读取表名的?
      • 表名:文件
      • FileUitil:读取文件
      • TableNameUtil:将表名拆分全量列表和增量列表
    • 问题2:怎么构建连接的?
      • Oracle:cx_Oracle
        • conn(hostname,port,username,password,sid)
      • Hive/SparkSQL:PyHive
        • conn(hostname,port,username,password)
      • 执行SQL规则
        • step1:必须构建一个连接
        • step2:从连接中获取游标,定义SQL
        • step3:使用游标执行SQL语句
        • step4:释放资源
    • 问题3:为什么要把连接地址写在文件里?
      • 开发规范
      • df.write.jdbc(url,table,properties)
        • 地址
        • 端口
        • 用户名
        • 密码
        • 表名
    • 问题4:怎么拼接SQL语句的?
      • 字符串的拼接
    • 问题5:怎么执行SQL语句的?
      • 游标:execute(SQL)
    • 问题6:怎么获取Oracle的表的信息的?
      • Oracle将每张表的每一列的信息都存储Oracle系统表中
        • 通过SQL就可以查询到表的这些信息
      • TableMeta:表的信息
        • 表名:String
        • 表的注释:String
        • 列的信息:List[ColumnMeta]
      • ColumnMeta:列的信息
        • 列名
        • 列注释
        • 列类型
        • 长度
        • 精度
  • 小结
    • 掌握整体代码的重难点
05-10 06:46