完成工作流设计后,您需要对每个数据开发节点进行配置,填写SQL语句。

前提条件

本次数据开发过程中需要使用UDF自定义函数,您首先需要完成自定义函数的注册,详细请参见注册自定义函数

注册自定义函数

  1. 添加资源。
    1. 下载用于IP地转换的自定义函数Java包getaddr.jar以及地址库ip.dat
    2. 右键单击workshop业务流程下的MaxCompute,选择新建 > 资源。需要分别新建FileJAR类型的资源。
      新建JAR与File
      • File类型上传地址库ip.dat。
        1. 输入资源名称,选中大文件(内容超过500KB)上传为ODPS资源,然后单击点击上传新建File资源
        2. 上传文件完成后,单击新建
        3. 按下图所示,单击提交提交
      • JAR类型对应Java包getaddr.jar。
        1. 您需要勾选上传为ODPS资源,然后单击点击上传新建JAR资源
        2. 上传完成后,单击新建
        3. 按下图所示,单击提交提交
          说明 提交时,请忽略血缘不一致信息。
  2. 注册函数。
    1. 在业务流程下右键单击MaxCompute,选择新建 > 函数,将函数命名为getregion
    2. 注册函数页面,依次填写类名为odps.test.GetAddr,资源列表为getaddr.jar,ip.dat,命令格式为getregion(ip string),保存后单击提交提交函数注册。
      注册函数

配置节点

  1. 配置虚拟节点start。
    1. 双击start节点,进入节点配置页面。
    2. 单击右侧的调度配置,在调度依赖区域下单击使用工作空间根节点完成配置。
      配置start
    3. 在时间属性区域选择重跑属性运行成功或失败后皆可重跑
    4. 单击提交按钮,完成节点提交。
  2. 配置ODPS SQL节点ods_user_trace_log。
    1. 双击ods_user_trace_log节点,进入节点配置界面,编写处理逻辑。SQL代码如下。
      insert overwrite table ods_user_trace_log partition (dt=${bdp.system.bizdate})
      select
          md5,
          uid ,
          ts,
          ip,
          status,
          bytes,
          device,
          system,
          customize_event,
          use_time,
          customize_event_content
          from ots_user_trace_log
          where to_char(FROM_UNIXTIME(ts),'yyyymmdd')=${bdp.system.bizdate};
      说明 关于${bdp.system.bizdate}释义请参见调度参数概述
    2. 完成代码编写后,单击右侧的调度配置,选择自动解析为否。
      调度配置
    3. 手动删除错误的依赖关系。
    4. 按照业务流程顺序搜索正确的上游节点,例如此处为start,并单击添加
    5. 在时间属性区域选择重跑属性运行成功或失败后皆可重跑
    6. 完成后,单击提交
  3. 配置ODPS SQL节点dw_user_trace_log。
    您可以使用与ods_user_trace_log节点一样的方法配置dw_user_trace_log节点,SQL代码如下。
    INSERT OVERWRITE TABLE dw_user_trace_log PARTITION (dt=${bdp.system.bizdate})
    SELECT uid, getregion(ip) AS region
        , CASE
            WHEN TOLOWER(device) RLIKE 'xiaomi' THEN 'xiaomi'
            WHEN TOLOWER(device) RLIKE 'meizu' THEN 'meizu'
            WHEN TOLOWER(device) RLIKE 'huawei' THEN 'huawei'
            WHEN TOLOWER(device) RLIKE 'iphone' THEN 'iphone'
            WHEN TOLOWER(device) RLIKE 'vivo' THEN 'vivo'
            WHEN TOLOWER(device) RLIKE 'honor' THEN 'honor'
            WHEN TOLOWER(device) RLIKE 'samsung' THEN 'samsung'
            WHEN TOLOWER(device) RLIKE 'leeco' THEN 'leeco'
            WHEN TOLOWER(device) RLIKE 'ipad' THEN 'ipad'
            ELSE 'unknown'
        END AS device_brand, device
        , CASE
            WHEN TOLOWER(system) RLIKE 'android' THEN 'android'
            WHEN TOLOWER(system) RLIKE 'ios' THEN 'ios'
            ELSE 'unknown'
        END AS system_type, customize_event, use_time, customize_event_content
    FROM ods_user_trace_log
    WHERE dt = ${bdp.system.bizdate};
  4. 配置ODPS SQL节点rpt_user_trace_log。
    您可以使用与ods_user_trace_log节点一样的方法配置rpt_user_trace_log节点,SQL代码如下。
    INSERT OVERWRITE TABLE rpt_user_trace_log PARTITION (dt=${bdp.system.bizdate})
    SELECT split_part(split_part(region, ',', 1),'[',2) AS country
        , trim(split_part(region, ',', 2)) AS province
        , trim(split_part(region, ',', 3)) AS city
        , MAX(device_brand), MAX(device)
        , MAX(system_type), MAX(customize_event)
        , FLOOR(AVG(use_time / 60))
        , MAX(customize_event_content), COUNT(uid) AS pv
        , COUNT(DISTINCT uid) AS uv
    FROM dw_user_trace_log
    WHERE dt = ${bdp.system.bizdate}
    GROUP BY uid, 
        region;
  5. 验证配置结果。
    双击业务流Workshop,打开画布面板。单击按钮。运行成功如下图所示。业务流程执行成功.png
    如果运行状态异常,请右键单击出错节点,单击查看运行日志进行排查。