数据治理(数据仓库数据质量管理)

世事洞明皆学问,人情练达即文章。这篇文章主要讲述数据治理:数据仓库数据质量管理相关的知识,希望能为你提供帮助。
数据仓库数据质量管理下面我们针对音乐数据中心数仓项目第四个业务:“统计地区营收情况业务”来说明数据质量如何进行管理。此业务数据质量管理重点放在 ODS层,EDS层(DWD层、DWS层)、DM层几个方面,每层数据校验的内容不一样,我们可以通过自己编写通用shell+Hive脚本或者使用质量监控工具Griffin来进行数据质量监控。
一、“商户营收统计”业务1、商户营收统计数据分层信息

以上业务涉及到的数仓所有表:

数据仓库分层设计:
源业务系统:
ycak-user_location- 用户上报经纬度信息表
ycak-user_machine_consume_detail- 机器消费订单明细表

ODS:
user_location-- TO_YCAK_USR_LOC_D:用户位置记录日增量表 【增量导入】

user_machine_consume_detail -- TO_YCAK_CNSM_D:机器消费订单明细增量表【增量导入】

machine_baseinfo-- TO_YCAK_MAC_D:机器基本信息日全量表 【全量导入】
machine_local_info-- TO_YCAK_MAC_LOC_D:机器位置信息日全量表 【全量导入】
machine_admin_map-- TO_YCBK_MAC_ADMIN_MAP_D:机器客户映射关系资料日全量表 【全量导入】
machine_store_map-- TO_YCBK_MAC_STORE_MAP_D:机器门店映射关系日全量表【全量导入】
machine_store_info-- TO_YCBK_STORE_D:门店信息日全量表【全量导入】
province_info-- TO_YCBK_PRVC_D:机器省份日全量表【全量导入】
city_info-- TO_YCBK_CITY_D:机器城市日全量表【全量导入】
area_info-- TO_YCBK_AREA_D:机器区县日全量表【全量导入】

user_alipay_baseinfo--TO_YCAK_USR_ALI_D:支付宝用户全量表【全量导入】
user_wechat_baseinfo--TO_YCAK_USR_D:微信用户全量表【全量导入】
user_qq_baseinfo--TO_YCAK_USR_QQ_D:QQ用户日全量表【全量导入】
user_app_baseinfo--TO_YCAK_USR_APP_D:APP用户信息日全量表【全量导入】
user_login_info--TO_YCAK_USR_LOGIN_D:用户登录数据表日增量 【增量导入】

EDS:
TW_MAC_LOC_D- 机器位置信息日统计表

TW_CNSM_BRIEF_D- 消费退款订单流水日增量表

TW_MAC_BASEINFO_D- 机器基础信息日全量表 【第二个业务】

TW_USR_BASEINFO_D- 活跃用户基础信息日增量表 【第三个业务】

TW_MAC_STAT_D - 机器日营收情况统计表

DM:
TM_USR_MRCHNT_STAT_D- 商户日营收统计表【mysql中也有对应的表


ODS层:
TO_YCAK_USR_LOC_D:用户位置记录日增量表 【增量导入】

TO_YCAK_CNSM_D:机器消费订单明细增量表【增量导入】

TO_YCAK_MAC_D:机器基本信息日全量表 【全量导入】
TO_YCAK_MAC_LOC_D:机器位置信息日全量表 【全量导入】
TO_YCBK_MAC_ADMIN_MAP_D :机器客户映射关系资料日全量表 【全量导入】
TO_YCBK_MAC_STORE_MAP_D :机器门店映射关系日全量表【全量导入】
TO_YCBK_STORE_D:门店信息日全量表【全量导入】
TO_YCBK_PRVC_D:机器省份日全量表【全量导入】
TO_YCBK_CITY_D:机器城市日全量表【全量导入】
TO_YCBK_AREA_D:机器区县日全量表【全量导入】

TO_YCAK_USR_ALI_D:支付宝用户全量表【全量导入】
TO_YCAK_USR_D:微信用户全量表【全量导入】
TO_YCAK_USR_QQ_D:QQ用户日全量表【全量导入】
TO_YCAK_USR_APP_D:APP用户信息日全量表【全量导入】
TO_YCAK_USR_LOGIN_D:用户登录数据表日增量 【增量导入】

EDS层:
TW_MAC_LOC_D- 机器位置信息日统计表
TW_CNSM_BRIEF_D- 消费退款订单流水日增量表
TW_MAC_BASEINFO_D- 机器基础信息日全量表 【第二个业务】
TW_USR_BASEINFO_D- 活跃用户基础信息日增量表 【第三个业务】
TW_MAC_STAT_D - 机器日营收情况统计表

DM层:
TM_USR_MRCHNT_STAT_D- 商户日营收统计表


2、清空之前业务执行的数据
#删除Mysql中ycak与ycbk库即可

#删除所有Hive表脚本

drop table TO_YCAK_MAC_D;
drop table TO_YCAK_MAC_LOC_D;
drop table TO_YCBK_AREA_D;
drop table TO_YCBK_CITY_D;
drop table TO_YCBK_MAC_ADMIN_MAP_D;
drop table TO_YCBK_MAC_STORE_MAP_D;
drop table TO_YCBK_PRVC_D;
drop table TO_YCBK_STORE_D;
drop table TW_MAC_BASEINFO_D;

drop table TO_YCAK_USR_D;
drop table TO_YCAK_USR_ALI_D;
drop table TO_YCAK_USR_QQ_D;
drop table TO_YCAK_USR_APP_D;
drop table TO_YCAK_USR_LOGIN_D;
drop table TW_USR_BASEINFO_D;

drop table TO_YCAK_USR_LOC_D;
drop table TW_MAC_LOC_D;
drop table TO_YCAK_CNSM_D;
drop table TW_CNSM_BRIEF_D;
drop table TW_MAC_STAT_D;
drop table TM_USR_MRCHNT_STAT_D;
drop table TM_MAC_REGION_STAT_D;


#执行以下命令,清空HDFS 目录即可
hdfs dfs -rm -r /user/hive/warehouse/data/

【数据治理(数据仓库数据质量管理)】
3、重新创建Hive 各层数据表:
#执行如下脚本,直接创建,所有Hive中需要的表

CREATE EXTERNAL TABLE `TO_YCAK_MAC_D`(
`MID` int,
`SRL_ID` string,
`HARD_ID` string,
`SONG_WHSE_VER` string,
`EXEC_VER` string,
`UI_VER` string,
`IS_ONLINE` string,
`STS` int,
`CUR_LOGIN_TM` string,
`PAY_SW` string,
`LANG` int,
`SONG_WHSE_TYPE` int,
`SCR_TYPE` int)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCAK_MAC_D;

CREATE EXTERNAL TABLE `TO_YCAK_MAC_LOC_D`(
`MID` int,
`PRVC_ID` int,
`CTY_ID` int,
`PRVC` string,
`CTY` string,
`MAP_CLSS` string,
`LON` string,
`LAT` string,
`ADDR` string,
`ADDR_FMT` string,
`REV_TM` string,
`SALE_TM` string)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCAK_MAC_LOC_D;

CREATE EXTERNAL TABLE `TO_YCBK_MAC_ADMIN_MAP_D`(
`MID` int,
`MAC_NM` string,
`PKG_NUM` int,
`PKG_NM` string,
`INV_RATE` double,
`AGE_RATE` double,
`COM_RATE` double,
`PAR_RATE` double,
`DEPOSIT` double,
`SCENE_PRVC_ID` string,
`SCENE_CTY_ID` string,
`SCENE_AREA_ID` string,
`SCENE_ADDR` string,
`PRDCT_TYPE` string,
`SERIAL_NUM` string,
`HAD_MPAY_FUNC` int,
`IS_ACTV` int,
`ACTV_TM` string,
`ORDER_TM` string,
`GROUND_NM` string)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCBK_MAC_ADMIN_MAP_D;

CREATE EXTERNAL TABLE `TO_YCBK_MAC_STORE_MAP_D`(
`STORE_ID` int,
`MID` int,
`PRDCT_TYPE` int,
`ADMINID` int,
`CREAT_TM` string
)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCBK_MAC_STORE_MAP_D;


CREATE EXTERNAL TABLE `TO_YCBK_STORE_D`(
`ID` int,
`STORE_NM` string,
`TAG_ID` string,
`TAG_NM` string,
`SUB_TAG_ID` string,
`SUB_TAG_NM` string,
`PRVC_ID` string,
`CTY_ID` string,
`AREA_ID` string,
`ADDR` string,
`GROUND_NM` string,
`BUS_TM` string,
`CLOS_TM` string,
`SUB_SCENE_CATGY_ID` string,
`SUB_SCENE_CATGY_NM` string,
`SUB_SCENE_ID` string,
`SUB_SCENE_NM` string,
`BRND_ID` string,
`BRND_NM` string,
`SUB_BRND_ID` string,
`SUB_BRND_NM` string
)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCBK_STORE_D;

CREATE EXTERNAL TABLE `TO_YCBK_PRVC_D`(
`PRVC_ID` int,
`PRVC` string
)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCBK_PRVC_D;

CREATE EXTERNAL TABLE `TO_YCBK_CITY_D`(
`PRVC_ID` int,
`CTY_ID` int,
`CTY` string
)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCBK_CITY_D;

CREATE EXTERNAL TABLE `TO_YCBK_AREA_D`(
`CTY_ID` int,
`AREA_ID` int,
`AREA` string
)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TO_YCBK_AREA_D;

CREATE EXTERNAL TABLE `TW_MAC_BASEINFO_D`(
`MID` int,
`MAC_NM` string,
`SONG_WHSE_VER` string,
`EXEC_VER` string,
`UI_VER` string,
`HARD_ID` string,
`SALE_TM` string,
`REV_TM` string,
`OPER_NM` string,
`PRVC` string,
`CTY` string,
`AREA` string,
`ADDR` string,
`STORE_NM` string,
`SCENCE_CATGY` string,
`SUB_SCENCE_CATGY` string,
`SCENE` string,
`SUB_SCENE` string,
`BRND` string,
`SUB_BRND` string,
`PRDCT_NM` string,
`PRDCT_TYP` int,
`BUS_MODE` string,
`INV_RATE` double,
`AGE_RATE` double,
`COM_RATE` double,
`PAR_RATE` double,
`IS_ACTV` int,
`ACTV_TM` string,
`PAY_SW` int,
`PRTN_NM` string,
`CUR_LOGIN_TM` string
)
PARTITIONED BY (data_dt string)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY \\t
LOCATION hdfs://mycluster/user/hive/warehouse/data/machine/TW_MAC_BASEINFO_D;

CREATE EXTERNAL TABLE `TO_YCAK_USR_D`(
`UID` int,
`REG_MID` int,
`GDR` string,
`BIRTHDAY` string,
`MSISDN` string,
`LOC_ID` int,
`LOG_MDE` int,
`REG_TM` string

    推荐阅读