本文为您介绍如何在DataWorks中进行PyODPS参数的传递。
操作步骤
- 准备测试数据。
- 创建表并上传数据。操作方法请参见建表并上传数据。
表结构以及源数据信息如下。
- 分区表user_detail建表语句如下。
create table if not exists user_detail
(
userid BIGINT comment '用户id',
job STRING comment '工作类型',
education STRING comment '教育程度'
) comment '用户信息表'
partitioned by (dt STRING comment '日期',region STRING comment '地区');
- 源数据表user_detail_ods建表语句如下。
create table if not exists user_detail_ods
(
userid BIGINT comment '用户id',
job STRING comment '工作类型',
education STRING comment '教育程度',
dt STRING comment '日期',
region STRING comment '地区'
);
- 测试数据保存为user_detail.txt文件。将此文件上传至表user_detail_ods中。
0001,互联网,本科,20190715,beijing
0002,教育,大专,20190716,beijing
0003,金融,硕士,20190715,shandong
0004,互联网,硕士,20190715,beijing
- 右键单击业务流程,选择。
- 输入节点名称,并单击提交。
- 在ODPS SQL节点中输入如下代码。
insert overwrite table user_detail partition (dt,region)
select userid,job,education,dt,region from user_detail_ods;
- 单击运行,将数据插入到分区表user_detail中。

- 使用PyODPS传递参数。
- 登录DataWorks控制台。
- 在左侧导航栏上单击工作空间列表。
- 单击工作空间后的进入数据开发。
- 在数据开发页面,右键单击已经创建的业务流程,选择。
- 输入节点名称,单击提交。
- 在PyODPS 2节点中输入如下代码实现参数传递。
import sys
reload(sys)
print('dt=' + args['dt'])
#修改系统默认编码。
sys.setdefaultencoding('utf8')
#获取表。
t = o.get_table('user_detail')
#接受传入的分区参数。
with t.open_reader(partition='dt=' + args['dt'] + ',region=beijing') as reader1:
count = reader1.count
print("查询分区表数据:")
for record in reader1:
print record[0],record[1],record[2]
- 单击高级运行(带参数运行)。

- 在参数对话框填写配置参数,单击确定。
配置参数说明如下:
- 调度资源组:选择默认资源组。
- dt:设置为dt=20190715。
- 在运行日志中查看运行结果。
