知识点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:列的信息
- 列名
- 列注释
- 列类型
- 长度
- 精度
- 小结
- 掌握整体代码的重难点