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

前提条件

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

注册自定义函数

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

配置节点

  1. 配置虚拟节点start。
    1. 双击start节点,进入节点配置页面。
    2. 单击右侧的调度配置,在调度依赖下单击使用工作空间根节点完成配置。
      配置start
    3. 单击按钮,完成节点提交。
  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. 完成后,单击提交
  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
    如果运行状态异常,请右键单击出错节点,单击查看运行日志进行排查。