<bdo id="q0ghy"><meter id="q0ghy"></meter></bdo>
    <rt id="q0ghy"></rt>
  1. <label id="q0ghy"></label>
    <bdo id="q0ghy"><meter id="q0ghy"></meter></bdo>
    當前位置:首頁 > 生活小常識 > 正文
    已解決

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    來自網友在路上 11978197提問 提問時間:2023-08-10 10:42:06閱讀次數: 197

    最佳答案 問答題庫1978位專家為你答疑解惑

    關于【數據倉庫數據模型管理工具】,今天犇涌小編給您分享一下,如果對您有所幫助別忘了關注本站哦。

    內容導航:1、數據倉庫數據模型管理工具:淺析:如何做好數據倉庫的管理工作及數據模型的設計?2、數據倉庫數據模型管理工具,數據治理四

    1、數據倉庫數據模型管理工具:淺析:如何做好數據倉庫的管理工作及數據模型的設計?

    一、安全和特權管理;跟蹤數據的更新;數據質量檢查;管理和更新元數據;審計和報告數據倉庫的使用和狀態;刪除數據;復制、分割和分發數據;備份和恢復;存儲管理。

    二、信息發布系統:把數據倉庫中的數據或其他相關的數據發送給不同的地點或用戶。基于Web的信息發布系統是對付多用戶訪問的最有效方法。

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    三、訪問工具:為用戶訪問數據倉庫提供手段。有數據查詢和報表工具;應用開發工具;管理信息系統(EIS)工具;在線分析(OLAP)工具;數據挖掘工具。

    四、數據模型

    有別于一般聯機交易處理OLTP系統,數據模型設計是一個數據倉庫設計的地基,當前兩大主流理論分別為采用正規方式normalized approach或多維方式dimensional approach進行數據模型設計。 數據模型可以分為邏輯與實體數據模型。

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    1、邏輯數據模型陳述業務相關數據的關系,基本上是一種與數據庫無關的結構設計,一般都會采用正規方式設計,主要精神是從企業業務領域的角度及高度訂出subject area model,再逐步向下深入到entities、attributes,在設計時不會考慮未來采用的數據庫管理系統,也不需考慮分析性能問題。

    2、實體數據模型則與數據庫管理系統有關,是建置在該系統上的數據架構,故設計時需考慮數據類型data type、空間及性能相關的議題。 實體數據模型設計,較多有采用正規方式或多維方式的討論,但從實際上來說,不執著于理論,能與業務需要有最好的搭配,才是企業在建置數據倉庫時的正確考量。

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    數據倉庫的建制不僅是資訊工具技術面的運用,在規劃和執行方面更需對產業知識、行銷管理、市場定位、策略規劃等相關業務有深入的了解,才能真正發揮數據倉庫以及后續分析工具的價值,提升組織競爭力。

    2、數據倉庫數據模型管理工具,數據治理四

    數據倉庫數據質量管理

    下面我們針對音樂數據中心數倉項目第四個業務:“統計地區營收情況業務”來說明數據質量如何進行管理。此業務數據質量管理重點放在 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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 DELIMITED FIELDS 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, `USR_EXP` string, `SCORE` int, `LEVEL` int, `WX_ID` string )ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_USR_D';CREATE EXTERNAL TABLE `TO_YCAK_USR_ALI_D`( `UID` int, `REG_MID` int, `GDR` string, `BIRTHDAY` string, `MSISDN` string, `LOC_ID` int, `LOG_MDE` int, `REG_TM` string, `USR_EXP` string, `SCORE` int, `LEVEL` int, `USR_TYPE` string, `IS_CERT` string, `IS_STDNT` string, `ALY_ID` string )ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_USR_ALI_D';CREATE EXTERNAL TABLE `TO_YCAK_USR_QQ_D`( `UID` int, `REG_MID` int, `GDR` string, `BIRTHDAY` string, `MSISDN` string, `LOC_ID` int, `LOG_MDE` int, `REG_TM` string, `USR_EXP` string, `SCORE` int, `LEVEL` int, `QQID` string )ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_USR_QQ_D';CREATE EXTERNAL TABLE `TO_YCAK_USR_APP_D`( `UID` int, `REG_MID` int, `GDR` string, `BIRTHDAY` string, `MSISDN` string, `LOC_ID` int, `REG_TM` string, `USR_EXP` string, `LEVEL` int, `APP_ID` string )ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_USR_APP_D';CREATE EXTERNAL TABLE `TO_YCAK_USR_LOGIN_D`( `ID` int, `UID` int, `MID` int, `LOGIN_TM` string, `LOGOUT_TM` string, `MODE_TYPE` int )PARTITIONED BY (`data_dt` string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_USR_LOGIN_D';CREATE EXTERNAL TABLE `TW_USR_BASEINFO_D`( `UID` int, `REG_MID` int, `REG_CHNL` string, `REF_UID` string, `GDR` string, `BIRTHDAY` string, `MSISDN` string, `LOC_ID` int, `LOG_MDE` string, `REG_DT` string, `REG_TM` string, `USR_EXP` string, `SCORE` int, `LEVEL` int, `USR_TYPE` string, `IS_CERT` string, `IS_STDNT` string )PARTITIONED BY (`data_dt` string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TW_USR_BASEINFO_D';CREATE EXTERNAL TABLE `TO_YCAK_USR_LOC_D`( `ID` int, `UID` int, `LAT` string, `LNG` string, `DATETIME` string, `MID` string )PARTITIONED BY (data_dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_USR_LOC_D';CREATE EXTERNAL TABLE `TW_MAC_LOC_D`( `MID` int, `X` string, `Y` string, `CNT` int, `ADDER` string, `PRVC` string, `CTY` string, `CTY_CD` string, `DISTRICT` string, `AD_CD` string, `TOWN_SHIP` string, `TOWN_CD` string, `NB_NM` string, `NB_TP` string, `BD_NM` string, `BD_TP` string, `STREET` string, `STREET_NB` string, `STREET_LOC` string, `STREET_DRCTION` string, `STREET_DSTANCE` string, `BUS_INFO` string )PARTITIONED BY (data_dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/machine/TW_MAC_LOC_D';CREATE EXTERNAL TABLE `TO_YCAK_CNSM_D`( `ID` int, `MID` int, `PRDCD_TYPE` int, `PAY_TYPE` int, `PKG_ID` int, `PKG_NM` string, `AMT` int, `CNSM_ID` string, `ORDR_ID` string, `TRD_ID` string, `ACT_TM` string, `UID` int, `NICK_NM` string, `ACTV_ID` int, `ACTV_NM` string, `CPN_TYPE` int, `CPN_TYPE_NM` string, `PKG_PRC` int, `PKG_DSCNT` int, `ORDR_TYPE` int, `BILL_DT` int )PARTITIONED BY (data_dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TO_YCAK_CNSM_D';CREATE EXTERNAL TABLE `TW_CNSM_BRIEF_D`( `ID` int, `TRD_ID` string, `UID` string, `MID` int, `PRDCD_TYPE` int, `PAY_TYPE` int, `ACT_TM` string, `PKG_ID` int, `COIN_PRC` int, `COIN_CNT` int, `UPDATE_TM` string, `ORDR_ID` string, `ACTV_NM` string, `PKG_PRC` int, `PKG_DSCNT` int, `CPN_TYPE` int, `ABN_TYP` int )PARTITIONED BY (data_dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TW_CNSM_BRIEF_D';CREATE EXTERNAL TABLE `TW_MAC_STAT_D`( `MID` int, `MAC_NM` string, `PRDCT_TYPE` string, `STORE_NM` int, `BUS_MODE` string, `PAY_SW` string, `SCENCE_CATGY` string, `SUB_SCENCE_CATGY` string, `SCENE` string, `SUB_SCENE` string, `BRND` string, `SUB_BRND` string, `PRVC` string, `CTY` string, `AREA` string, `AGE_ID` string, `INV_RATE` string, `AGE_RATE` string, `COM_RATE` string, `PAR_RATE` string, `PKG_ID` string, `PAY_TYPE` string, `CNSM_USR_CNT` string, `REF_USR_CNT` string, `NEW_USR_CNT` string, `REV_ORDR_CNT` string, `REF_ORDR_CNT` string, `TOT_REV` string, `TOT_REF` string )PARTITIONED BY (data_dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/machine/TW_MAC_STAT_D';CREATE EXTERNAL TABLE `TM_USR_MRCHNT_STAT_D`( `ADMIN_ID` string, `PAY_TYPE` int, `REV_ORDR_CNT` int, `REF_ORDR_CNT` int, `TOT_REV` double, `TOT_REF` double, `TOT_INV_REV` DECIMAL(10,2), `TOT_AGE_REV` DECIMAL(10,2), `TOT_COM_REV` DECIMAL(10,2), `TOT_PAR_REV` DECIMAL(10,2) )PARTITIONED BY (DATA_DT string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://mycluster/user/hive/warehouse/data/user/TM_USR_MRCHNT_STAT_D';

    4、向 MySQL 中導入對應庫的數據

    向 MySQL 中導入 ycak 與 ycbk 兩個庫數據。

    5、準備 ODS 層導入數據腳本:

    #在安裝SQOOP的node3節點/root/test下,上傳導入數據腳本ods_mysqltohive_to_ycak_cnsm_d.shods_mysqltohive_to_ycak_mac_d.shods_mysqltohive_to_ycak_mac_loc_d.shods_mysqltohive_to_ycak_usr_ali_d.shods_mysqltohive_to_ycak_usr_app_d.shods_mysqltohive_to_ycak_usr_d.shods_mysqltohive_to_ycak_usr_loc_d.shods_mysqltohive_to_ycak_usr_login_d.shods_mysqltohive_to_ycak_usr_qq_d.shods_mysqltohive_to_ycbk_area_d.shods_mysqltohive_to_ycbk_city_d.shods_mysqltohive_to_ycbk_mac_admin_map_d.shods_mysqltohive_to_ycbk_mac_store_map_d.shods_mysqltohive_to_ycbk_prvc_d.shods_mysqltohive_to_ycbk_store_d.sh

    6、將項目代碼打包上傳

    將項目代碼中本地執行改成集群執行,打包上傳到 node4 節點/root/test 下

    7、準備執行的任務腳本

    #在node5節點/root/test下上傳執行任務腳本produce1.shproduce2.shproduce3.shproduce4.shproduce5.shproduce6.sh

    8、啟動 Azkaban

    #啟動Azkaban-Executor/software/azkaban/azkaban-exec-server/bin/start-exec.sh#激活Azkaban Executorhttp://node5:12321/executor?action=activate#啟動Azkaban-Server/software/azkaban/azkaban-web-server/bin/start-web.sh#訪問Azkaban user:azkaban pwd:azkabanhttp://node5:8081/

    9、編寫 Azkaban job 并打包,提交到 Azkaban 執行:

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    二、ODS 層數據質量監控

    由于 ODS 層數據是貼源層,是數倉開始的地方,所以這里檢驗時一般不需要驗證與原始數據條目是否相同,在 ODS 層數據質量監控中一般驗證當日導入數據的記錄數、當日導入表中關注字段為空的記錄數、當日導入數據關注字段重復記錄數、全表總記錄數指標即可。

    1、在 Hive 中創建存儲數據質量監控數據庫“data_quality”

    hive> create database data_quality;

    2、創建存儲 ODS 層數據質量監控數據表“check_ods_info”

    create table data_quality.check_ods_info( dt String comment '執行日期', db String comment '數據庫名稱', tbl String comment '校驗表名', tbl_type string comment '增量導入/全量導入', check_col String comment '校驗為空的列名', current_dt_rowcnt bigint comment '當日導入數據記錄數', check_null_rowcnt bigint comment '當日檢查列為空的記錄數', duplication_rowcnt bigint comment '重復記錄數', total_rowcnt bigint comment '表總記錄數') row format delimited fields terminated by '\t';

    注意以上中文注釋在 Hive 中不支持,可以在 Hive 的 mysql 元數據對應的庫中執行如下 SQL 支持中文顯示:

    alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

    3、編寫數據校驗腳本

    ods 數據質量校驗腳本名稱為:“ods_data_check.sh”編寫的腳本需要傳入 5 個參數:校驗數據日期、Hive 庫名、校驗表名、是否增量(1 代表增量,2 代表全量)、校驗為空的字段。腳本內容如下

    #!/bin/bash# 數據檢查執行的日期current_dt=$1# 校驗數據的庫名db_name=$2# 校驗數據的表名table_name=$3# 表增量導入/全量導入 1-增量 2-全量is_increment=$4# 需要校驗為空的列名,以逗號隔開check_col=$5# 切割列,獲取數組array=(${check_col//,/ })#where sql where_sql=""#動態拼接SQL where 條件for((i=0;i<${#array[@]};i ))do if [ $i -eq 0 ]; then where_sql=" where ${array[i]} is null" else where_sql="${where_sql} or ${array[i]} is null" fidone#判斷全量或增量來區分處理SQLif [ ${is_increment} -eq 1 ];then is_increment='increment' #HQL獲取當日增量導入數據的記錄數據 current_dt_rowcnt=`hive -e "select count(*) from ${table_name} where data_dt = '${current_dt}'"` check_null_rowcnt=`hive -e "select count(*) from ${table_name} ${where_sql} and data_dt = '${current_dt}'"` duplication_rowcnt=`hive -e "select nvl(sum(tmp.cnt),0) from (select count(*) as cnt from ${table_name} where data_dt = '${current_dt}' group by ${check_col} having count(*) >1) tmp"`else is_increment='all' #HQL獲取當日增量導入數據的記錄數據 current_dt_rowcnt=`hive -e "select count(*) from ${table_name}"` check_null_rowcnt=`hive -e "select count(*) from ${table_name} ${where_sql}"` duplication_rowcnt=`hive -e "select nvl(sum(tmp.cnt),0) from (select count(*) as cnt from ${table_name} group by ${check_col} having count(*) >1) tmp"`fi# HQL獲取全表總記錄數total_cnt=`hive -e "select count(*) from ${table_name}"`echo "日期:$current_dt ,庫名:${db_name},表名:${table_name},是否增量:${is_increment}, 需要校驗的列:${check_col}"echo "當日導入數據記錄數:${current_dt_rowcnt},當日檢查列為空的記錄數:${check_null_rowcnt},當日導入數據重復數:${duplication_rowcnt} ,表總記錄數:${total_cnt}"#將數據結果插入到 data_quality.check_ods_info 表中`hive -e "insert into data_quality.check_ods_info values ('${current_dt}','${db_name}','${table_name}','${is_increment}','${check_col}',${current_dt_rowcnt},${check_null_rowcnt},${duplication_rowcnt},${total_cnt})"`echo "------ finish ------"

    4、使用以上腳本對 ODS 部分表數據進行校驗

    #這里對ODS層部分增量表和全量表進行校驗,部分表如下#TO_YCAK_USR_LOC_D:用戶位置記錄日增量表【增量導入】#TO_YCAK_CNSM_D:機器消費訂單明細增量表【增量導入】#TO_YCAK_MAC_D :機器基本信息日全量表【全量導入】#TO_YCAK_MAC_LOC_D :機器位置信息日全量表【全量導入】# 命令如下:sh /root/test/ods_data_check.sh 20210315 default TO_YCAK_USR_LOC_D 1 UID,MIDsh /root/test/ods_data_check.sh 20210315 default TO_YCAK_CNSM_D 1 MID,PRDCD_TYPE,PAY_TYPE,ORDR_ID,UIDsh /root/test/ods_data_check.sh 20210315 default TO_YCAK_MAC_D 2 MID,SRL_IDsh /root/test/ods_data_check.sh 20210315 default TO_YCAK_MAC_LOC_D 2 MID,PRVC,CTY

    5、查看 ODS 層校驗結果

    #登錄Hive ,切換data_quality庫,查詢數據select * from check_ods_info;

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    三、EDS 層數據質量監控

    EDS 層相當于數據倉庫中的 DW 層,DW 層詳細劃分又分為 DWD、DWS 層,此業務中也有 DWD 和 DWS 層數據,只是在 EDS 層中沒有詳細區分,在 EDS 層中具體哪些是 DWD 層與 DWS 層數據可以參照數據分層圖。

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    EDS 層質量校驗分為對 DWD 層數據質量進行校驗,對 DWS 層數據質量進行校驗兩個方面。對 DWD 層數據質量校驗關注點在于是否與 ODS 層對應的數據來源表數據記錄數是否一致、導入到 DWD 層的數據有效比例等,針對不同的 DWD 層的數據表也可以根據具體業務來決定質量檢驗的內容。

    由于 DWS 層數據基于 DWD 層數據進行了聚合,所以對于 DWS 層數據質量校驗關注點可以放在數據條目是否和上一層一致(需要分清主題重要字段),更重要的是這里檢驗 DWS 層表中數據總條數,某些重要字段為空的記錄數,關注的聚合字段值異常條數等。針對不同的 DWS 層的數據表也可以根據具體業務來決定質量檢驗的內容。

    以上 EDS 層中各層數據質量校驗具體校驗的內容一般根據業務不同是不同的,不能拋開業務來談數據質量,可以使用具體腳本個性化校驗。

    1、DWD 層數據質量校驗

    這里 DWD 層數據質量校驗以“機器詳細信息統計”業務為例,來說明 DWD 層數據質量如何校驗。“機器詳細信息統計”分層信息如下:

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    以上 ODS 層機器數據到 EDS 層機器數據,是由 ODS 層多張表數據“TO_YACK_MAC_D”、“TO_YCBK_MAC_ADMIN_MAP_D”合并統計得到 EDS 層“TW_MAC_BASEINFO_D”表數據,基于以上我們可以校驗以下幾個方面來確定數據質量:

    ODS 層源表記錄總數EDS 層目標表記錄總數數據記錄有效比例(由于 EDS 層數據一定來自于 ODS 層,可能中間會有清洗數據,導致 EDS 層數據缺少一部分,所以這里記錄有效比例就是使用“目標表數據總記錄/源表數據總記錄”來反應質量情況)目標表重復記錄數(可能會由于 ODS 轉到 EDS 層過程中,業務上關聯其他表查詢導致目標表數據會有重復)

    基于以上方面,進行 EDS-DWD 層數據質量監控,步驟如下:

    1)創建 DWD 數據質量結果存儲表

    create table data_quality.check_dwd_info( dt String comment '執行日期', db String comment '數據庫名稱', check_cols String comment '校驗字段', source_tbl String comment 'ODS層源表表名', source_tbl_rowcnt bigint comment '源表數據總記錄數', target_tbl String comment 'DWD層目標表表名', target_tbl_rowcnt bigint comment '目標表數據總記錄數', rt Decimal(5,2) comment '數據有效比例', target_duplication_rowcnt bigint comment '目標表數據重復記錄數') row format delimited fields terminated by '\t';

    2)編寫 DWD 層數據校驗腳本

    DWD 層數據質量校驗腳本名稱為:“dwd_data_check.sh”編寫的腳本需要傳入 5 個參數:校驗數據日期、Hive 庫名、校驗字段、ODS 層數據源表(可能多張)、EDS 層目標表。腳本內容如下:

    #!/bin/bash# 數據檢查執行的日期current_dt=$1# 校驗數據的庫名db_name=$2# 校驗字段,多個字段使用逗號隔開check_cols=$3# ODS層源表表名,多表用逗號隔開ods_tbls=$4# DWD層目標表表名target_tbl=$5# 切割多個源表,查詢源表關注字段的總條數tbl_arr=(${ods_tbls//,/ })# 查詢源表數據SQL source_sql=""# 動態拼接SQL union 各個源表數據for((i=0;i<${#tbl_arr[@]};i ))do if [ $i -eq 0 ]; then source_sql="select ${check_cols} from ${tbl_arr[i]} " else source_sql="${source_sql} union all select ${check_cols} from ${tbl_arr[i]} " fidone# 查詢SQL 獲取源表關注字段總條數source_tbl_rowcnt=`hive -e "select count(*) from ( ${source_sql} ) t1"`# 查詢SQL 獲取目標表關注字段總條數target_tbl_rowcnt=`hive -e "select count(*) from (select ${check_cols} from ${target_tbl}) t2"`# 統計目標表與源表數據比例rt=`awk 'BEGIN{printf "%0.2f",'${target_tbl_rowcnt}'/'${source_tbl_rowcnt}'}'`# 查詢SQL 統計目標表數據重復記錄數target_duplication_rowcnt=`hive -e "select nvl(sum(tmp.cnt),0) from (select count(*) as cnt from ${target_tbl} where data_dt = '${current_dt}' group by ${check_cols} having count(*) >1) tmp"`echo "日期:$current_dt ,庫名:${db_name},ODS源表表名:${ods_tbls},目標表表名:${target_tbl}, 需要校驗的列:${check_cols}"echo "源表數據記錄總數:${source_tbl_rowcnt},目標表記錄數:${target_tbl_rowcnt},目標表與源表數據比例:${rt} ,目標表重復記錄數:${target_duplication_rowcnt}"#將數據結果插入到 data_quality.check_dwd_info 表中`hive -e "insert into data_quality.check_dwd_info values ('${current_dt}','${db_name}','${check_cols}','${ods_tbls}',${source_tbl_rowcnt},'${target_tbl}',${target_tbl_rowcnt},${rt},${target_duplication_rowcnt})"`echo "------ finish ------"

    3)使用以上腳本對 EDS-DWD 層數據部分表進行校驗

    #這里針對“機器詳情統計”業務對應的ODS-EDS層的表進行校驗,命令如下:sh dwd_data_check.sh 20210315 default mid TO_YCAK_MAC_D,TO_YCBK_MAC_ADMIN_MAP_D TW_MAC_BASEINFO_D#此外,針對“消費退款統計”業務可執行校驗,命令如下:sh dwd_data_check.sh 20210315 default MID,PRDCD_TYPE TO_YCAK_CNSM_D TW_CNSM_BRIEF_D

    4)查看結果

    #登錄Hive ,切換data_quality庫,查詢數據select * from check_dwd_info;

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    2、DWS 層數據質量校驗

    DWS 層數據質量校驗,這里校驗“機器詳情信息”業務中,EDS-DWS 層表“TW_MAC_STAT_D”表的質量,這里由于 DWS 層數據由 EDS 層聚合而來組成的寬表,所以,這里校驗時可以校驗主題數據是否和上層一致,更重要的是校驗 DWS 層表中數據總條數,某些重要字段為空的記錄數,關注的聚合字段值異常條數等。

    這里針對“TW_MAC_STAT_D”表我們校驗表中以下內容:

    表中數據總記錄數省份、城市字段為空的記錄數總營收不合理記錄數

    校驗步驟如下:

    1)創建 DWS 層校驗結果存放表

    create table data_quality.check_dws_info( dt String comment '執行日期', db String comment '數據庫名稱', target_tbl string comment '校驗表名', check_null_cols String comment '校驗空值字段', null_row_cnt bigint comment '當日空值字段記錄數', check_value_cols String comment '校驗值字段', maxValue Decimal(10,2) comment '合理值最大值', abnormal_rowcnt bigint comment '當日異常值記錄數', total_rowcnt bigint comment '當日表中總記錄數') row format delimited fields terminated by '\t';

    2)編寫校驗腳本

    DWS 層數據質量校驗腳本名稱為:“dws_data_check.sh”編寫的腳本需要傳入 5 個參數:校驗數據日期、Hive 庫名、校驗表名、校驗 Null 值字段(可多列)、校驗值字段(單列),標準值最大值。腳本內容如下:

    #!/bin/bash# 數據檢查執行的日期current_dt=$1# 校驗數據的庫名db_name=$2# 校驗表名dws_tbl_name=$3# 校驗null值字段,多個字段使用逗號隔開check_null_cols=$4echo "${check_null_cols}"# 校驗值字段check_value_col=$5# 標準值的最大值max_value=$6# 切割校驗null值字段array=(${check_null_cols//,/ })# 查詢DWS表數據SQL check_sql=""# 動態拼接SQL 檢查null值條數for((i=0;i<${#array[@]};i ))do if [ $i -eq 0 ]; then check_sql="select count(*) from ${db_name}.${dws_tbl_name} where data_dt=${current_dt} and ${array[i]} is null " else check_sql="${check_sql} and ${array[i]} is null " fidone# 查詢SQL 獲取DWS表中空值數據記錄數null_row_cnt=`hive -e "${check_sql}"`# 查詢SQL 獲取校驗值異常記錄數abnormal_rowcnt=`hive -e "select sum(if(${check_value_col}>${max_value},1,0)) from ${db_name}.${dws_tbl_name} where data_dt = ${current_dt}"`# 統計當前日期下表中統計總記錄數total_rowcnt=`hive -e "select count(*) from ${db_name}.${dws_tbl_name} where data_dt = ${current_dt}"`echo "日期:$current_dt ,庫名:${db_name},DWS校驗表名:${dws_tbl_name},需要校驗為null的列:${check_null_cols},檢驗值是否合理的列:${check_value_col},合理值最大值:${max_value}"echo "當日空值字段記錄數:${null_row_cnt},當日異常值記錄數:${abnormal_rowcnt},當日表數據總記錄數:${total_rowcnt}"#將數據結果插入到 data_quality.check_dws_info 表中`hive -e "insert into data_quality.check_dws_info values ('${current_dt}','${db_name}','${dws_tbl_name}','${check_null_cols}',${null_row_cnt},'${check_value_col}',${max_value},${abnormal_rowcnt},${total_rowcnt})"`echo "------ finish ------"

    3)使用以上腳本對 EDS-DWS 數據進行校驗

    #對 EDS-DWS層數據表“TW_MAC_STAT_D”進行校驗sh dws_data_check.sh 20210315 default TW_MAC_STAT_D PRVC,CTY TOT_REV 10000

    4)查看結果數據

    #登錄Hive ,切換data_quality庫,查詢數據select * from check_dws_info;

    數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計

    四、DM 層數據質量監控

    DM 層存放數倉中對寬表進行聚合統計得到的結果值數據,所以這里對 DM 層數據進行質量校驗時,無法使用通用的腳本處理,而是每個報表數據都要不同的校驗指標,DM 層主要校驗數據值是否在合理范圍內,與 DWS 層校驗類似,這里不再校驗“商戶營收統計”業務中 DM 層表“TM_USR_MRCHNT_STAT_D”。

    本文關鍵詞:數據倉庫數據模型管理工具是什么,數據倉庫中數據模型的作用不包括,數據倉庫常用模型有哪幾種,數據倉庫有哪些模型,舉例說明,數據倉庫的模型。這就是關于《數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計》的所有內容,希望對您能有所幫助!更多的知識請繼續關注《犇涌向乾》百科知識網站:!

    99%的人還看了

    猜你感興趣

    版權申明

    本文" 數據倉庫數據模型管理工具,如何做好數據倉庫的管理工作及數據模型的設計":http://eshow365.cn/3-9034-0.html 內容來自互聯網,請自行判斷內容的正確性。如有侵權請聯系我們,立即刪除!

    主站蜘蛛池模板: 人妻一本久道久久综合久久鬼色| 狠狠色综合久久久久尤物| 国产成人综合日韩精品无码不卡| 91久久婷婷国产综合精品青草| 久久综合综合久久97色| 亚洲av无码兔费综合| 国产成人综合精品一区| 亚洲综合久久1区2区3区| 色噜噜狠狠色综合中文字幕| 五月天激情综合网| 色综合视频一区二区三区| 亚洲国产综合精品| 久久婷婷综合色丁香五月| 丁香狠狠色婷婷久久综合| 一本久道综合在线无码人妻| 伊人久久青草青青综合| 国产综合视频在线观看一区 | 一本一本久久aa综合精品| 亚洲综合精品香蕉久久网97| 好了av第四综合无码久久| 伊人青青综合网站| 图图资源网亚洲综合网站| 情人伊人久久综合亚洲| 色噜噜狠狠色综合久| 国产综合久久久久久| 色综合天天综合网国产国产人| 亚洲欧洲国产综合AV无码久久| 色欲色香天天天综合网站| 亚洲综合视频在线| 亚洲综合激情九月婷婷| 色综合色狠狠天天综合色| 婷婷色中文字幕综合在线| 国产成人综合久久综合| 亚洲丁香婷婷综合久久| 色欲久久久久久综合网精品| 天天躁日日躁狠狠躁综合| 国产精品亚洲综合一区在线观看| 狠狠色丁香婷婷综合潮喷| 亚洲综合国产一区二区三区| 日本伊人色综合网| 亚洲综合精品第一页|