本文将为您介绍如何通过DataWorks,将已经采集至MaxCompute的数据进行加工,获取清洗后的数据。

前提条件

开始本文的操作前,请首先完成数据准备中的操作。

新建表

  1. 右键单击业务流程下的,选择新建表
    新建表
  2. 新建表对话框中填写表名,单击提交
    此处需要创建的数据表,如下所示:
    • 创建3张表,分别存储同步过来的电量下降趋势数据、指标数据和窃电标志数据清洗之后的数据(clean_trend_data、clean_indicators_data和clean_steal_flag_data)。
    • 创建1张表,存储汇聚后的数据(data4ml)。
  3. 打开创建的表,单击DDL模式,分别填写以下相应的建表语句。
    --清洗后的电量下降趋势数据
    CREATE TABLE `clean_trend_data` (
        `uid` bigint,
        `trend` bigint
    )
    PARTITIONED BY (dt string)
    LIFECYCLE 7;
    --清洗后的指标数据
    CREATE TABLE `clean_indicators_data` (
        `uid` bigint,
        `xiansun` bigint,
        `warnindicator` bigint
    )
    COMMENT '*'
    PARTITIONED BY (ds string)
    LIFECYCLE 36000;
    --清洗后的窃电标志数据
    CREATE TABLE `clean_steal_flag_data` (
        `uid` bigint,
        `flag` bigint
    )
    COMMENT '*'
    PARTITIONED BY (ds string)
    LIFECYCLE 36000;
    --汇聚后的数据
    CREATE TABLE `data4ml` (
        `uid` bigint,
        `trend` bigint,
        `xiansun` bigint,
        `warnindicator` bigint,
        `flag` bigint
    )
    COMMENT '*'
    PARTITIONED BY (ds string)
    LIFECYCLE 36000;
  4. 建表语句输入完成后,单击生成表结构确认覆盖当前操作。
  5. 返回建表页面后,在基本属性中输入表的中文名。
  6. 完成设置后,分别单击提交到开发环境提交到生产环境
    提交环境

设计业务流程

业务流程的新建及依赖关系的配置请参见新建业务流程

进入业务流程开发面板,并向面板中拖入2个ODPS SQL节点,依次命名为数据清洗和数据汇聚,并配置如下图所示的依赖关系。
依赖关系

配置ODPS SQL节点

  • 配置数据清洗节点。
    1. 双击数据清洗节点,进入节点配置页面。
    2. 编写处理逻辑。
      编写SQL
      SQL逻辑如下所示:
      INSERT OVERWRITE TABLE clean_trend_data PARTITION(dt=${bdp.system.bizdate})
      SELECT  uid
              ,trend
      FROM    trend_data
      WHERE   trend IS NOT NULL
      AND     uid != 0
      AND     dt = ${bdp.system.bizdate}
      ;  
      
      INSERT OVERWRITE TABLE clean_steal_flag_data PARTITION(ds=${bdp.system.bizdate})
      SELECT  uid
              ,flag
      FROM    steal_flag_data
      WHERE   uid != 0
      AND     ds = ${bdp.system.bizdate}
      ;
      
      INSERT OVERWRITE TABLE clean_indicators_data PARTITION(ds=${bdp.system.bizdate})
      SELECT  uid
              ,xiansun,warnindicator
      FROM    indicators_data
      WHERE   uid != 0
      AND     ds = ${bdp.system.bizdate}
      ;
    3. 单击左上角的保存按钮。
  • 配置数据汇聚节点。
    1. 双击数据汇聚节点,进入节点配置页面。
    2. 编写处理逻辑。
      编写SQL
      SQL逻辑如下所示:
      INSERT OVERWRITE TABLE data4ml PARTITION (ds=${bdp.system.bizdate})
      SELECT  a.uid
              ,trend
              ,xiansun
              ,warnindicator
              ,flag
      FROM    
      (
          SELECT uid,trend FROM clean_trend_data where dt=${bdp.system.bizdate}
      )a  
      FULL OUTER JOIN 
      (
          SELECT uid,xiansun,warnindicator FROM  clean_indicators_data where ds=${bdp.system.bizdate}
      )b
      ON      a.uid = b.uid
      FULL OUTER JOIN 
      (
          SELECT uid,flag FROM  clean_steal_flag_data where ds=${bdp.system.bizdate}
      )c 
      ON      b.uid = c.uid
      ;
    3. 单击左上角的保存按钮。

提交业务流程

  1. 打开业务流程配置面板,单击左上角的提交
  2. 选择提交对话框中需要提交的节点,填写备注,勾选忽略输入输出不一致的告警
    提交
  3. 单击提交,待显示提交成功即可。

运行业务流程

  1. 打开业务流程配置面板,单击左上角的运行
    运行
  2. 单击左侧导航栏中的临时查询,进入临时查询面板。
  3. 右键单击临时查询,选择新建节点 > ODPS SQL
    临时查询
  4. 编写并执行SQL语句,查看导入表clean_trend_data、clean_indicators_data、clean_steal_flag_data和data4ml的记录数。
    查看结果
    说明 SQL语句如下所示,其中分区列需要更新为业务日期。例如,任务运行的日期为20190809,则业务日期为201900808。
    --查看是否成功写入MaxCompute
    SELECT count(*) from clean_trend_data where dt=业务日期;
    SELECT count(*) from clean_indicators_data where ds=业务日期;
    SELECT count(*) from clean_steal_flag_data where ds=业务日期;
    SELECT count(*) from data4ml where ds=业务日期;

发布业务流程

提交业务流程后,表示任务已进入开发环境。由于开发环境的任务不会自动调度,您需要将配置完成的任务发布至生产环境。

说明 将任务发布至生产环境前,您需要对代码进行测试,确保其正确性。
  1. 打开业务流程配置面板,单击左上角的发布,进入发布页面。
    发布
  2. 选择待发布任务,单击添加到待发布
    添加到待发布
  3. 进入右上角的待发布列表,单击全部打包发布
    打包发布
  4. 发布包列表页面查看已发布内容。

在生产环境运行任务

  1. 任务发布成功后,单击右上角的运维中心
  2. 选择周期任务运维 > 周期任务中的相应节点。
    周期任务
  3. 右键单击DAG图中的start节点,选择补数据 > 当前节点及下游节点
    补数据
  4. 勾选需要补数据的任务,输入业务日期,单击确定

    确定

    单击确定后,自动跳转至补数据实例页面。

  5. 单击刷新,直至SQL任务都运行成功即可。

后续步骤

现在,您已经学习了如何创建SQL任务、如何处理原始数据。您可以继续学习下一个教程,学习如何通过机器学习,载入处理好的数据并构建窃漏电用户的识别模型。详情请参见数据建模