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

前提条件

由于本次数据开发过程中需要使用UDF自定义函数,您首先需要完成自定义函数的注册。

操作步骤

  1. 添加资源并创建自定义函数
    1. 单击此处,下载用于IP地转换的自定义函数Java包getaddr.jar以及地址库ip.dat。
      本教程不关注IP地址转换的自定义函数内容。如果您有兴趣了解,请参见MaxCompute中实现IP地址归属地转换
    2. 右键单击您的业务流程下的资源,单击新建资源


      • File类型对应地址库ip.dat。您需要勾选大文件(内容超过500KB)上传为ODPS资源,然后点击上传

        上传完成后,请务必记得单击提交

      • JAR类型对应Java包getaddr.jar。您需要勾选上传为ODPS资源,然后点击上传

        上传完成后,请务必记得单击提交
    3. 注册函数。
      在您的业务流程下右键单击函数,选择新建函数

      请依次填写函数名为getregion,类名为odps.test.GetAddr,资源列表为getaddr.jar,ip.dat,命令格式为getregion(ip string)。填写完成后,单击提交

  2. 配置ODPS SQL节点
    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. 配置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. 配置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;