注:数仓数据处理的步骤,最先从客户需求出发,沟通确定相应的主题需求指标,拿到指标表后再进行贴源层ods,标准层dwd,宽表层dws,展示层ads的分层加工,整体步骤为:
需求沟通——明确主题——获取主题所需的数据表——进行清洗数据(统一数据类型、码值(银行编码表)、命名(脱敏规则---份udf函数)、异常值(空值、不符合规范、特殊符号),用正则表达式),使数据更规范一般在标准层—dwd层进行,建模:梳理数据表详细业务,整理逻辑,采用星星模型或雪花模型来进行建模形成宽表框架(宽表空表,无数据),再进行dws-ods的表映射,写sql脚本上传,再写hive脚本调用,最终在dbeaver的dws层形成宽表,建立宽表层——需求沟通——明确数据指标——根据数据指标(详细业务的统一口径),做数据倾斜处理,形成最终的展示表
一、贴源层(ods):需求沟通——明确主题——获取主题所需的数据表
从源数据中抽取该主题所需要的数据,导入到ods层,一般会用到kettle、dataX两种工具,用kettle添加组件(时间戳、过滤条件)的形式进行数据抽取,可以获得相应数据;
用dataX,①在根目录下创建文件,在该文件中创建json、myshell、sourceData、sql文件储存相应的脚本类型;
②根据数据表写json脚本,储存到json文件夹中
{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "column": ["*"], "connection": [ { "jdbcUrl": ["jdbc:mysql://192.168.77.188:3306/haidian?useUnicode=true&characterEncoding=utf8"], "table": ["c_class"] } ], "password": "999999", "username": "root", "where": "" } }, "writer": { "name": "txtfilewriter", "parameter": { "dateFormat": "yyyy-MM-dd HH:mm:ss", "fieldDelimiter": "\u0001", "fileName": "c_class", "path": "/class94/sourceData/c_class/dt=${v_date}", "writeMode": "truncate" } } } ], "setting": { "speed": { "channel": "1" } } } }③再写调用json的@exp/put/msck脚本储存到myshell的文件夹中
dt=`date -d "1 day ago" "+%Y-%m-%d"` # 运行json配置文件,抽取数据 python /opt/soft/datax/bin/datax.py -p "-Dv_date=${dt}" /class94/json/quanliang/c_class.json if [ $? -eq 0 ] then echo " $dt 号的数据抽取成功" else echo "${dt}号的数据同步失败!!!!" fi④赋权脚本:chmod u+x @exp(抽取)/put(上传)/msck(更新分区)
⑤运行脚本:./@exp/put/msck
⑥抽取,上传,更新分区数据
⑦得到T+1数据
二、标准层(dwd):进行清洗数据(统一数据类型、码值(银行编码表)、命名(脱敏规则:正则公式可以实现替换,校验的功能)、异常值(空值、不符合规范、特殊符号),用正则表达式),使数据更规范一般在标准层—dwd层进行。