数据仓库抽数的一些规范

仓库表的一些规范

  • ODS底层表在原有表结构的基础上增加技术字段:ETL_DTDealTime分别记录批次日期和处理时间。
  • 历史拉链表在原有表结构的基础上增加技术字段:Start_DtEnd_DtDealTime分别记录开始日期、结束日期和处理时间。
  • 仓库中表的字段类型尽量只用:varchardecimalintdatetime24种,方便后续的逻辑计算和系统切换
  • 增量每日一份增量数据,以ETL_DT划分增量日期

  • 全量按主键存放当前最新的数据,不保存历史,ETL_DT只是代表当前批次的数据日期

  • 每日全量每日一份全量数据,以ETL_DT划分全量日期

  • 历史拉链按主键存放每条数据的历史变化,以Start_dt和End_dt表示每条数据的生命周期

MYSQL数据库的数据抽取

  • 在使用KETTLE转换MYSQLtinyint字段类型时,会将tinyint类型当成Boolean类型来处理

       解决方法:在抽数语句中调整成cast(tinyint字段 as char)

  • 在抽取bigint的字段类型时要做相应转换

       如:在抽数语句中调整成cast(cast(bigint字段 as decimal(10))as char)

  • 抽取varchar字段时字段长度要扩大一倍

三、KETTLE开发规范

 作业命名规范:遵循原则:JOB_ + 逻辑层次名 + 目标表名 + FI  (F代表全量,I代表增量)

转换命名规范:遵循原则:TRANS_ + 逻辑层次名 + 目标表名 + FI (F代表全量,I代表增量)

  • 一个KETTLE作业对应一个目标表的抽数;
  • 缓冲层(Kettle抽)、增量层(储存过程)、CF层(当前全量)
  • 每个作业都需要支持重跑,即作业内需要有删除目标表当前批次数据的操作;
  • 每个作业都要写完成日志,用以支持后续作业的调起;
  • 每个增量的转换都应该开发一个对应的全量转换,以作初始化用。
  • KETTLE中的作业尽量把逻辑算法交给数据库。
  • 抽表作业内的变量设为:当前作业有效
  • 关键节点都应该有报错作业的处理。
  • 一个抽数作业对应一个日志,目录:${KETTLE_LOG}\逻辑层次名\源系统名\作业名,日志级别为:错误日志;四个日志选项都有勾选。
  • 作业内的每一个连接都可正确点开,并且连接到对应的作业或转换。

四、存储过程开发规范

  • 存储过程中是否每一步都有写日志
  • 源表数据量与目标表数据量是否有记录
  • insert与select必须要有明确的字段列出
  • 表别名与字段别名是否遵循开发规范
  • 输出数据符合业务逻辑
  • 关键逻辑有注释说明
  • 脚本可以重跑当日批次的数据

 

 

 

posted @ 2019-12-11 22:09  小东阁下  阅读(1759)  评论(0编辑  收藏  举报