完成工作流设计后,您需要对每个数据开发节点进行配置,填写SQL语句。
前提条件
本次数据开发过程中需要使用UDF自定义函数,您首先需要完成自定义函数的注册,详细请参见
注册自定义函数。
注册自定义函数
- 添加资源。
- 下载用于IP地转换的自定义函数Java包getaddr.jar以及地址库ip.dat。
- 右键单击workshop业务流程下的MaxCompute,选择。需要分别新建File和JAR类型的资源。

- File类型上传地址库ip.dat。
- 输入资源名称,选中大文件(内容超过500KB)及上传为ODPS资源,然后单击点击上传。

- 上传文件完成后,单击新建。
- 按下图所示,单击提交。

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

- 上传完成后,单击新建。
- 按下图所示,单击提交。
- 注册函数。
- 在业务流程下右键单击MaxCompute,选择,将函数命名为getregion。
- 在注册函数页面,依次填写类名为odps.test.GetAddr,资源列表为getaddr.jar,ip.dat,命令格式为getregion(ip string),保存后单击
提交函数注册。
配置节点
- 配置虚拟节点start。
- 双击start节点,进入节点配置页面。
- 单击右侧的调度配置,在调度依赖区域下单击使用工作空间根节点完成配置。
- 在时间属性区域选择重跑属性为运行成功或失败后皆可重跑。
- 单击
按钮,完成节点提交。
- 配置ODPS SQL节点ods_user_trace_log。
- 双击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}释义请参见
调度参数概述。
- 完成代码编写后,单击右侧的调度配置,选择自动解析为否。
- 手动删除错误的依赖关系。
- 按照业务流程顺序搜索正确的上游节点,例如此处为start,并单击添加。
- 在时间属性区域选择重跑属性为运行成功或失败后皆可重跑。
- 完成后,单击提交。
- 配置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};
- 配置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;
- 验证配置结果。
双击业务流Workshop,打开画布面板。单击

按钮。运行成功如下图所示。

如果运行状态异常,请右键单击出错节点,单击
查看运行日志进行排查。
