使用MaxCompute进行数据质量核查(实验篇)

实验背景和目标,参考课时6

第一章:实验准备

开通DataWorks服务

本次实验主要使用MaxCompute(DataWorks)客户端进行开发,如已开通相关服务,则直接跳过本章节,进入实验即可。如没有开通过相关服务,则按照如下步骤开通服务。
开通DataWorks服务
打开浏览器,输入阿里云官网地址 www.aliyun.com


使用自己的阿里云官网账号登陆控制台

登陆后进入管理控制台,选择产品与服务菜单,点击DataWorks子菜单,进入 Dataworks 概览页。

在DataWorks的概览页,若当前账号无存在项目,点击创建项目(注意:项目名称全系统唯一),如果已有项目,则直接使用提供的项目空间,进入数据开发。

付费模式

若自行创建项目。则选择地域、计算引擎服务类型以及DataWorks服务类型,点击下一步:


image.png

在新的弹出页面,输入项目名称(全局唯一)、项目描述、显示名等,点击“创建项目”按钮,完成项目创建。



进入管理控制台->产品与服务->DataWorks菜单,进入到DataWorks页面,选择对应的项目,点击进入数据开发。

非实验环境自行开通MaxCompute


选择付费方式 (本实例是按量付费)



确认订单


申请MaxCompute资源

请点击页面左侧的 实验资源 ,在左侧栏中,查看本次实验资源信息。



在弹出的左侧栏中,点击 创建资源 按钮,开始创建实验资源。
资源创建过程需要1-3分钟。完成实验资源的创建后,用户可以通过 实验资源 查看实验中所需的资源信息,例如:阿里云账号等。

第二章:实验步骤

实验数据准备

1、此次的数据质量监控实验,主要涉及如下业务表:



订单表:保存客户订购产品所产生的订单信息;
客户表:保存客户的姓名、地址信息;
配送表:保存配送员与订单的对应信息;
产品表:保存产品相关信息;
省份表:保存省份信息;
城市表:保存城市信息。

上述实体之间的主要关系如下:



2、 打开控制台,在产品与服务菜单中,选择Dataworks子菜单,点击后,选择对应的项目,进入工作区。




3、 进入工作区后,选择临时查询,新建一个脚本文件,选择好存放位置。



4、通过编写sql来完成数据表建表。
4.1 新建订单表

drop table if exists ODS_EBUSI_ORDERS;

create table ODS_EBUSI_ORDERS(

     ORDER_ID BIGINT COMMENT '订单号',

     CUSTOMER_ID BIGINT COMMENT '客户编码',

     PRODUCT_ID BIGINT COMMENT '产品编码',

     PRODUCT_CNT BIGINT COMMENT '产品数量',

     ORDER_AMT DOUBLE COMMENT '产品费用',

     SHIPPING_TYPE_ID BIGINT COMMENT '运输类型',

     ORDER_TIME STRING COMMENT '订单时间'

)COMMENT '订单表';

将订单信息导入库表ODS_EBUSI_ORDERS内,在屏幕上点击“数据开发”,然后点击导入按钮。




选择对应的文件



打开后,注意相关配置选项,核查无误后,然后点击“下一步”


选择对应的库表, 核查无误后,点击“导入”


导入成功后,对表ODS_EBUSI_ORDERS进行查询,查看是否导数成功。



4.2新建客户表
drop table if exists ODS_EBUSI_CUSTOMERS;

create table ODS_EBUSI_CUSTOMERS(

     CUSTOMER_ID BIGINT COMMENT '客户编码',

     CUSTOMER_NAME STRING COMMENT '客户名称',

     AGE BIGINT COMMENT '年龄',

     GENDER BIGINT COMMENT '性别编码',

     CITY_ID BIGINT COMMENT '城市编码',

     CITY_NAME STRING COMMENT '城市名称',

     PROVINCE_ID BIGINT COMMENT '省份编码',

     PROVINCE_NAME STRING COMMENT '省份名称',

     GEN_DATE STRING COMMENT '出生日期'

)COMMENT '客户表';

将客户信息导入库表ODS_EBUSI_CUSTOMERS内,在屏幕上点击“导入本地数据”按钮。



选择对应的文件



打开后,注意相关配置选项,核查无误后,然后点击“下一步”


选择对应的库表



核查无误后,点击“导入”
导入成功后,对表ODS_EBUSI_CUSTOMERS进行查询,查看是否导数成功。

4.3新建配送表
drop table if exists ODS_EBUSI_DISPATCH;

create table ODS_EBUSI_DISPATCH(

     DISPATCH_ID BIGINT COMMENT '配送单号',

     ORDER_ID BIGINT COMMENT '订单号',

     EXPRESS_STAFF_ID BIGINT COMMENT '配送员编码',

     STOREHOUSE_ID BIGINT COMMENT '仓库编码',

     EXPECT_TIME DATETIME COMMENT '期望到货时间',

     DISPATCH_TIME DATETIME COMMENT '开始送货时间'

)COMMENT '配送表';

将配送信息导入库表ODS_EBUSI_DISPATCH内,在屏幕上点击“导入本地数据”按钮。



选择对应的文件



打开后,注意相关配置选项,核查无误后,然后点击“下一步”

选择对应的库表


核查无误后,点击“导入”
导入成功后,对表ODS_EBUSI_DISPATCH进行查询,查看是否导数成功。



4.4新建产品表
drop table if exists ODS_EBUSI_DIM_PRODUCT;

create table ODS_EBUSI_DIM_PRODUCT(

     PRODUCT_ID BIGINT COMMENT '产品编码',

     PRODUCT_NAME  STRING COMMENT '产品名称',

     PRICE DOUBLE COMMENT '产品价格',

     PRODUCT_CATEGORY_ID BIGINT COMMENT '产品类别'

)COMMENT '产品表';

将产品信息导入库表ODS_EBUSI_DIM_PRODUCT内,在屏幕上点击“导入本地数据”按钮。



选择对应的文件



打开后,注意相关配置选项,核查无误后,然后点击“下一步”


选择对应的库表



核查无误后,点击“导入”
导入成功后,对表ODS_EBUSI_DIM_PRODUCT进行查询,查看是否导数成功。

4.5新建省份表
drop table if exists ODS_EBUSI_DIM_PROVINCE;

create table ODS_EBUSI_DIM_PROVINCE(

     PROVINCE_ID BIGINT COMMENT '省份编码',

     PROVINCE_NAME STRING COMMENT '省份名称'

)COMMENT '省份表';

将省份信息导入库表ODS_EBUSI_DIM_PROVINCE内,在屏幕上点击“导入本地数据”按钮。



选择对应的文件



打开后,注意相关配置选项,核查无误后,然后点击“下一步”


选择对应的库表



核查无误后,点击“导入”
导入成功后,对表ODS_EBUSI_DIM_PROVINCE进行查询,查看是否导数成功。


4.6新建城市表
drop table if exists ODS_EBUSI_DIM_CITY;

create table ODS_EBUSI_DIM_CITY(

     CITY_ID BIGINT COMMENT '城市编码',

     CITY_NAME STRING COMMENT '城市名称',

     LNG DOUBLE  COMMENT '经度',

     LAT DOUBLE  COMMENT '维度',

     PROVINCE_ID BIGINT COMMENT '省份编码'

)COMMENT '城市表';

将城市信息导入库表ODS_EBUSI_DIM_CITY内,在屏幕上点击“导入本地数据”按钮。



选择对应的文件



打开后,注意相关配置选项,核查无误后,然后点击“下一步”

选择对应的库表

核查无误后,点击“导入”
导入成功后,对表ODS_EBUSI_DIM_CITY进行查询,查看是否导数成功。


配置数据质量核查规则

通过excel模板,配置监控核查规则,主要是针对库表进行监控。


上述数据质量核查规则模板对应的各类内容如下:
核查规则编码:每条监控规则对应的唯一编码
核查规则名称:描述本条监控规则具体监控的内容
核查规则类型编码:具体的监控规则类别编码(1、2、3、4、5、6)
核查规则类型名称:监控类别编码对应的监控规则名称(1:错误值;2:重复值;3:数据不一致;4:数据完整性;5:缺失值;6:异常值)
状态:1:本条监控规则有效;0:本条监控规则已失效,或不再进行监控
负责人:此条监控规则的配置人员及后续处理人员
负责人邮箱:负责人邮箱,主要用于配置告警信息发送
负责人手机:负责人手机,主要用于配置告警信息发送
数据表:此条监控规则对应的后台数据表,即需要在此数据表上创建具体的监控查询语句
监控脚本:具体的监控核查脚本对应的查询SQL。
针对如下场景,配置相关的监控规则
监控场景:订单表内订单时间格式出错。
核查规则编码:check_001
核查规则名称:订单表订单时间格式出错
核查规则内容描述:订单表内订单时间格式出错
核查规则类型编码:1
核查规则类型名称:错误值
状态:1
负责人:小王
负责人邮箱:[email protected]
负责人手机:13900000001
涉及实体表:ODS_EBUSI_ORDERS
监控脚本:

SELECT ORDER_ID,ORDER_TIME
FROM ODS_EBUSI_ORDERS
WHERE NOT(INSTR(ORDER_TIME,'-',1,1) = 5 AND INSTR(ORDER_TIME,'-',1,2) = 8 AND INSTR(ORDER_TIME,'-',1,3) = 0)
or NOT(INSTR(ORDER_TIME,':',1,1) = 14 AND INSTR(ORDER_TIME,':',1,2) = 17 AND INSTR(ORDER_TIME,'-',1,3) = 0)

监控场景:订单表同一客户同一时间下了多次订单。
核查规则编码:check_002
核查规则名称:订单表同一客户同一时间多次订单
核查规则内容描述:订单表同一客户同一时间下了多次订单
核查规则类型编码:2
核查规则类型名称:重复值
状态:1
负责人:小王
负责人邮箱:[email protected]
负责人手机:13900000001
涉及实体表:ODS_EBUSI_ORDERS
监控脚本:

SELECT CUSTOMER_ID, ORDER_TIME, COUNT(DISTINCT ORDER_ID) ORDER_CNT
FROM ODS_EBUSI_ORDERS
GROUP BY CUSTOMER_ID, ORDER_TIME
HAVING COUNT(DISTINCT ORDER_ID) > 1

监控场景:客户信息表省份信息异常。
核查规则编码:check_003
核查规则名称:客户信息表省份信息异常
核查规则内容描述:客户信息表省份信息异常
核查规则类型编码:3
核查规则类型名称:数据不一致
状态:1
负责人:小张
负责人邮箱:[email protected]
负责人手机:13900000002
涉及实体表:ODS_EBUSI_CUSTOMERS\ODS_EBUSI_DIM_PROVINCE
监控脚本:

SELECT A.CUSTOMER_ID,A.PROVINCE_ID,A.PROVINCE_NAME,B.PROVINCE_ID,B.PROVINCE_NAME
FROM ODS_EBUSI_CUSTOMERS A
    INNER JOIN ODS_EBUSI_DIM_PROVINCE B ON A.PROVINCE_ID = B.PROVINCE_ID
WHERE A.PROVINCE_NAME <> B.PROVINCE_NAME

监控场景:配送的订单在订单表中不存在。
核查规则编码:check_004
核查规则名称:配送表订单信息异常
核查规则内容描述:配送的订单在订单表中不存在
核查规则类型编码:4
核查规则类型名称:数据完整性
状态:1
负责人:小强
负责人邮箱:[email protected]
负责人手机:13900000003
涉及实体表:ODS_EBUSI_DISPATCH\ODS_EBUSI_ORDERS
监控脚本:

SELECT A.ORDER_ID
FROM ODS_EBUSI_DISPATCH A
         LEFT OUTER JOIN ODS_EBUSI_ORDERS B ON A.ORDER_ID=B.ORDER_ID
WHERE B.ORDER_ID IS NULL

监控场景:客户信息表性别信息缺失。
核查规则编码:check_005
核查规则名称:客户信息表性别信息缺失
核查规则内容描述:客户信息表性别信息缺失
核查规则类型编码:5
核查规则类型名称:缺失值
状态:1
负责人:小张
负责人邮箱:[email protected]
负责人手机:13900000002
涉及实体表:ODS_EBUSI_CUSTOMERS
监控脚本:

SELECT *
FROM ODS_EBUSI_ORDERS A
WHERE A.ORDER_AMT IS NULL

监控场景:同客户单月购买次数异常(当月购买次数大于10次)。
核查规则编码:check_006
核查规则名称:同客户单月下订单次数异常
核查规则内容描述:同客户单月购买次数异常(当月购买次数大于10次)
核查规则类型编码:6
核查规则类型名称:异常值
状态:1
负责人:小强
负责人邮箱:[email protected]
负责人手机:13900000003
涉及实体表:ODS_EBUSI_ORDERS
监控脚本:

SELECT SUBSTR(ORDER_TIME,1,10),CUSTOMER_ID,COUNT(1)
FROM ODS_EBUSI_ORDERS A
GROUP BY SUBSTR(ORDER_TIME,1,10),CUSTOMER_ID
HAVING COUNT(1) > 10

将数据质量规则配置至MaxCompute

配置好数据监控规则excel后,我们将相关的监控规则导入库表内。
1、在库内新建数据质量监控规则表

drop table if exists ODS_DATA_CHECK_RULE;

create table ODS_DATA_CHECK_RULE(

     CHECK_RULE_ID STRING COMMENT '核查规则编码',

     CHECK_RULE_NAME STRING COMMENT '核查规则名称',

     CHECK_RULE_DESC STRING COMMENT '核查规则内容描述',

     CHECK_RULE_TYPE_ID STRING COMMENT '核查规则类型编码',

     CHECK_RULE_TYPE_NAME STRING COMMENT '核查规则类型名称',

     CHECK_RULE_STATUS STRING COMMENT '状态',

     CHECK_RULE_OWNER STRING COMMENT '负责人',

     CHECK_RULE_EMAIL STRING COMMENT '负责人邮箱',

     CHECK_RULE_PHONE STRING COMMENT '负责人手机',

     CHECK_RULE_TABLE STRING COMMENT '数据表',

     CHECK_RULE_SQL STRING COMMENT '监控脚本'

)COMMENT '数据质量监控规则表';

2、 将监控规则信息导入库表ODS_DATA_CHECK_RULE内,在屏幕上点击“导入本地数据”按钮。



3、选择对应的文件



4、打开后,注意相关配置选项(注意分隔符配置),核查无误后,然后点击“下一步”

5、选择对应的库表

6、核查无误后,点击“导入”
7、导入成功后,对表ODS_DATA_CHECK_RULE进行查询,查看是否导数成功。


通过MaxCompute实现数据质量监控

目前已有相关的业务数据,现需通过DataWorks来实现数据质量监控。
此次代码编写中,涉及的几个时间变量如下:

vDate=$[yyyy-mm-dd-1]
vDay=$[yyyymmdd-1]
datetime=$[yyyy-mm-dd]
hour=$[hh24:mi:ss]

1、 首先先创建一张新表,用于保存最终的监控报告。

drop table ifexists DWD_DATA_CHECK_REPORT;

create tableDWD_DATA_CHECK_REPORT(

     CHECK_RULE_ID STRING COMMENT '核查规则编码',

     CHECK_RULE_NAME STRING COMMENT '核查规则名称',

     CHECK_RULE_TYPE_NAME STRING COMMENT '核查规则类型名称',

     CHECK_RULE_OWNER STRING COMMENT '负责人',

     CHECK_RULE_TABLE STRING COMMENT '数据表',

     WARNING_TIME STRING COMMENT '告警时间',

     WARNING_CONTENT STRING COMMENT '告警内容'

)COMMENT '数据质量监控报告表'

PARTITIONED BY (

     DT STRING COMMENT '时间分区'

);

2、新建一个数据质量监控业务流程



3、配置一个业务流程,定义名称




4、从左侧节点组件中,拖取一个虚节点至右侧空白处,并进行命名。


双击该虚节点组件,点击右侧调度设置 配置根节点



5、将左侧ODPS_SQL控件,拖至右侧空白处,并进行命名。


6、双击刚建好的组件,进入编辑界面。

7、在编辑页面写入执行sql语句,并配置好参数,保存后返回。
----新建临时表1用于存放数据质量是否产生告警
drop table if exists TMP_DWD_DATA_CHECK_REPORT_001_${vDay};

create table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}(

     CHECK_RULE_ID STRING COMMENT '核查规则编码',

     WARNING_STATUS STRING COMMENT '是否告警'

)COMMENT '数据质量监控规则告警状态';

8、继续拖拽左侧组件,进行编辑,保存监控规则编码check_001是否告警。





9、双击新建的组件后,进入编辑界面。
10、在编辑页面写入执行sql语句,并配置好参数,保存后返回。

insert
into table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}
select
'check_001',
case when A.WARNING_CNT>0 then '1' else '0' end as WARNING_STATUS
from (select
COUNT (1) WARNING_CNT      
from ODS_EBUSI_ORDERS      
where not(instr(ORDER_TIME,'-',1,1) = 5 and instr(ORDER_TIME,'-',1,2) = 8 and
instr(ORDER_TIME,'-',1,3) = 0)           
or not(instr(ORDER_TIME,':',1,1) = 14 and instr(ORDER_TIME,':',1,2) = 17 and
instr(ORDER_TIME,'-',1,3) = 0))as A;


11、继续拖拽左侧组件,进行编辑,保存监控规则编码check_002是否告警。



12、双击新建的组件后,进入编辑界面。

13、在编辑页面写入执行sql语句,并配置好参数,保存后返回。

----插入临时表1监控规则编码check_002是否告警
insert into table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}
select'check_002',
    case when B.WARNING_CNT>1 then '1' else '0' end as WARNING_STATUS
from(select SUM(WARNING_CNT) as WARNING_CNT
        from(SELECT CUSTOMER_ID,
                           ORDER_TIME,
                           COUNT(DISTINCT ORDER_ID) WARNING_CNT
                      FROM ODS_EBUSI_ORDERS
                      GROUP BY CUSTOMER_ID,
                           ORDER_TIME
                      HAVING COUNT(DISTINCT ORDER_ID) > 1)as A)AS B;


14、继续拖拽左侧组件,进行编辑,保存监控规则编码check_003是否告警。



15、双击新建的组件后,进入编辑界面。

16、在编辑页面写入执行sql语句,并配置好参数,保存后返回。

----插入临时表1监控规则编码check_003是否告警

insert into table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}
select'check_003',
    case when A.WARNING_CNT>1 then '1' else '0' end as WARNING_STATUS
from(SELECT count(1) as WARNING_CNT
        FROM ODS_EBUSI_CUSTOMERS A
             INNER JOIN ODS_EBUSI_DIM_PROVINCE B ON A.PROVINCE_ID = B.PROVINCE_ID
        WHERE A.PROVINCE_NAME <> B.PROVINCE_NAME)as A;


17、继续拖拽左侧组件,进行编辑,保存监控规则编码check_004是否告警。



18、双击新建的组件后,进入编辑界面。

19、在编辑页面写入执行sql语句,并配置好参数,保存后返回。

----插入临时表1监控规则编码check_004是否告警


insert into table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}
select'check_004',
    case when A.WARNING_CNT>1 then '1' else '0' end as WARNING_STATUS
from(SELECT count(1) as WARNING_CNT
        FROM ODS_EBUSI_DISPATCH A
             LEFT OUTER JOIN ODS_EBUSI_ORDERS B ON A.ORDER_ID=B.ORDER_ID
        WHERE B.ORDER_ID IS NULL)as A;

通过MaxCompute实现数据质量监控-2

20、继续拖拽左侧组件,进行编辑,保存监控规则编码check_005是否告警。



21、双击新建的组件后,进入编辑界面。
22、在编辑页面写入执行sql语句,并配置好参数,保存后返回。
----插入临时表1监控规则编码check_005是否告警

insert into table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}
select 'check_005',
     case when A.WARNING_CNT>1 then '1' else '0' end as WARNING_STATUS
from(SELECT count(1) as WARNING_CNT
         FROM ODS_EBUSI_CUSTOMERS A
         WHERE A.GENDER IS NULL)as A
;


23、继续拖拽左侧组件,进行编辑,保存监控规则编码check_006是否告警。




24、双击新建的组件后,进入编辑界面。
25、在编辑页面写入执行sql语句,并配置好参数,保存后返回。
----插入临时表1监控规则编码check_006是否告警

insert into table TMP_DWD_DATA_CHECK_REPORT_001_${vDay}
select 'check_006',
     case when A.WARNING_CNT>1 then '1' else '0' end as WARNING_STATUS
from(SELECT SUBSTR(ORDER_TIME,1,7),
              CUSTOMER_ID,
              COUNT(1) as WARNING_CNT
         FROM ODS_EBUSI_ORDERS A
         GROUP BY SUBSTR(ORDER_TIME,1,7),
              CUSTOMER_ID
         HAVING COUNT(1) > 10)as A
;


26、继续拖拽左侧组件,进行编辑,保存最终的监控报告信息。



27、双击新建的组件后,进入编辑界面。

28、在编辑页面写入执行sql语句,并配置好参数,保存后返回。
----插入目标表监控报告信息

insert overwrite table DWD_DATA_CHECK_REPORT PARTITION(DT)
select A.CHECK_RULE_ID, ----'核查规则编码',
     A.CHECK_RULE_NAME, ----'核查规则名称',
     A.CHECK_RULE_TYPE_NAME, ----'核查规则类型名称',
     A.CHECK_RULE_OWNER,    ----'负责人',
     A.CHECK_RULE_TABLE,    ----'数据表',
     concat('${datetime}',' ','${hour}') as WARNING_TIME,    ----'告警时间',
     concat('监控规则:',A.CHECK_RULE_NAME,',告警内容:',A.CHECK_RULE_DESC,',请登录系统进行核查!') as WARNING_CONTENT,     ----'告警内容'
     '${vDate}' as DT   ----'时间分区'
from ODS_DATA_CHECK_RULE A
     inner join TMP_DWD_DATA_CHECK_REPORT_001_${vDay} B on A.CHECK_RULE_ID=B.CHECK_RULE_ID and B.WARNING_STATUS = '1'
;


29、从左侧节点组件中,拖取一个虚节点至右侧空白处,并进行命名。



30、根据上述的顺序,将各个执行空间连接起来。先点击前序节点,在节点上出现“+”号后,按住鼠标不动,拖至后序节点,出现箭头连接后,放开鼠标,即完成连接。

31、所有连接完成后,点击提交。
在提交时选择勾选“忽略输入输出不一致的警告”


配置MaxCompute调度

为了实现我们可周期性的进行数据质量监控,我们可以将程序配置成周期任务。
1、 双击程序开始



2、在调度配置界面,将调度配置成日调度,具体的怕程序时间根据各自需求进行配置。并根据具体的依赖需求,进行上游任务配置。



3、实质上在进行业务流程的配置时,就已经配置了周期调度,如需修改可以在这个位置进行修改
至此,我们可以对数据质量进行周期性的监控。

配置邮件、短信告警

为保证已配置的程序跑数过程中出错,我们可以及时的获取相关信息,对出错的程序进行处理。阿里云在MaxCompute的运维中心中,可配置邮箱、短信告警,对于已配置好的调度程序进行监控,可通过邮箱、短信的方式通知相关负责人。我们可以将已经配置好的调度程序加入到监控报警中。
告警配置方法如下:
进入运维中心模块下,点击左侧报警设置,然后点击右侧的新建报警按钮。



在弹出的配置页面中,填写报警对应的信息:任务名称、报警原因、报警方式、接收人等信息。



完成配置告警信息如下:点击右侧的删除按钮将此条告警删除,亦可以点击修改按钮对此条监控信息进行修改、调整。

负责人的邮箱及短信需提前在用户详情中配置。


如配置的流程在运行的过程中出错\未完成\完成,系统则会通过邮箱、短信的方式进行通知推送。
邮件告警界面:



短信告警界面:

第三章:任务&思考

任务数据集:见附件
任务实体关系:



任务:如上附件是新提供的数据集及实体关系。分析如下场景中可能出现的数据质量问题,并使用MaxCompute技术完成相关场景的数据质量核查:
用户通过业务平台系统进行商品购买,允许用户在同一个订单内购买多种商品,用户每下一次订单就在订单表中增加一条记录,由于网络延迟或系统界面操作有误,可能会在系统内产生多条记录。用户下单后1小时之内,仍未进行付款操作,订单状态变更为取消,由于系统bug可能存在以及付款但是订单状态是取消的相关记录。用户进行付款的同时,可能参加某种抽奖或者优惠活动,减免部分费用。用户支付完成后,生成配送单,结果发现配送员小张和小李分配了同一个订单,而且订单配送商品信息一致,偶尔由于系统原因会出现用户下完单、付完款后没有安排配送的情况。
思考:思考并实现如何实现数据质量邮件、短信告警?
目前我们已实现了程序的调度配置,并对周期性执行的程序调度,增加了邮件、短信告警,此种告警主要是针对程序执行的一种监控,考虑是否可增加数据质量监控的邮件、短信告警,即如果发现数据质量监控规则报错,则进行邮件、短信告警,请思考此种告警是否可通过MaxCompute(DateWorks)来实现,如何实现。

你可能感兴趣的:(使用MaxCompute进行数据质量核查(实验篇))