加工数据

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

前提条件

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

新建表

  1. 进入数据开发页面。

    登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

  2. 数据开发页面,展开目标业务流程。

  3. 右键单击MaxCompute,选择新建表

  4. 新建表对话框中,输入表名称,单击新建

    重要

    表名必须以字母开头,不能包含中文或特殊字符,且不能超过64个字符。

    此处需要创建的数据表,如下所示:

    • 创建三张表,分别存储同步过来的电量下降趋势数据、指标数据和窃电标志数据清洗之后的数据(clean_trend_dataclean_indicators_dataclean_steal_flag_data)。

    • 创建表data4ml,存储汇聚后的数据。

  5. 打开创建的表,单击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;
  6. 建表语句输入完成后,单击生成表结构确认覆盖当前操作。
  7. 返回建表页面后,在基本属性中输入表的中文名。
  8. 完成设置后,分别单击提交到开发环境提交到生产环境

    image

设计业务流程

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

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

配置ODPS SQL节点

  • 配置数据清洗节点。

    1. 双击数据清洗节点,进入节点配置页面。

    2. 编写处理逻辑。编写SQL

      SQL逻辑如下所示。

      INSERT OVERWRITE TABLE clean_trend_data PARTITION(dt=${bdp.system.bizdate})
      SELECTuid
      ,trend
      FROMtrend_data
      WHEREtrend IS NOT NULL
      ANDuid != 0
      ANDdt = ${bdp.system.bizdate}
      ;
      
      INSERT OVERWRITE TABLE clean_steal_flag_data PARTITION(ds=${bdp.system.bizdate})
      SELECTuid
      ,flag
      FROMsteal_flag_data
      WHEREuid != 0
      ANDds = ${bdp.system.bizdate}
      ;
      
      INSERT OVERWRITE TABLE clean_indicators_data PARTITION(ds=${bdp.system.bizdate})
      SELECTuid
      ,xiansun,warnindicator
      FROMindicators_data
      WHEREuid != 0
      ANDds = ${bdp.system.bizdate}
      ;
    3. 单击工具栏中的保存图标。

  • 配置数据汇聚节点。

    1. 双击数据汇聚节点,进入节点配置页面。

    2. 编写处理逻辑。编写SQL

      SQL逻辑如下所示。

      INSERT OVERWRITE TABLE data4ml PARTITION (ds=${bdp.system.bizdate})
      SELECTa.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 FROMclean_indicators_data where ds=${bdp.system.bizdate}
      )b
      ONa.uid = b.uid
      FULL OUTER JOIN
      (
      SELECT uid,flag FROMclean_steal_flag_data where ds=${bdp.system.bizdate}
      )c
      ONb.uid = c.uid
      ;
    3. 单击工具栏中的保存图标。

提交业务流程

  1. 打开业务流程配置面板,单击工具栏中的提交图标。

  2. 选择提交对话框中需要提交的节点,输入备注,并选中忽略输入输出不一致的告警

    image

  3. 单击确认,待显示提交成功即可。

运行业务流程

  1. 打开业务流程配置面板,单击工具栏中的运行图标。

  2. 在左侧导航栏,单击临时查询

  3. 临时查询页面,右键单击临时查询,选择新建节点 > ODPS SQL

    image

  4. 编写并执行SQL语句,查看导入表clean_trend_dataclean_indicators_dataclean_steal_flag_datadata4ml的记录数。

    临时查询

    SQL语句如下所示,其中分区列需要更新为业务日期。例如,任务运行的日期为20190809,则业务日期为20190808。

    --查看是否成功写入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. 创建发布包页面,选中待发布的任务,单击添加到待发布

    image

  3. 进入右上角的待发布列表,单击全部打包发布

    image

  4. 发布包列表页面查看已发布的内容。

在生产环境运行任务

  1. 任务发布成功后,单击右上角的运维中心

  2. 选择周期任务运维 > 周期任务中的相应节点。

    image

  3. 右键单击DAG图中的start节点,选择补数据 > 当前节点及下游节点

    image

  4. 选中需要补数据的任务,并选择业务日期

    image

  5. 单击提交

  6. 补数据实例页面,单击刷新,直至SQL任务都运行成功即可。

后续步骤

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