本文为您介绍如何通过PyODPS读取分区表数据。
前提条件
您需要完成以下操作:- 已开通MaxCompute。
- 已开通DataWorks。
- 在DataWorks上完成业务流程创建,本例使用DataWorks简单模式。详情请参见创建业务流程。
操作步骤
准备测试数据。
创建表并上传数据。操作方法请参见建表并上传数据。
表结构以及源数据信息如下。
分区表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 from odps import ODPS reload(sys) print('dt=' + args['dt']) #修改系统默认编码。 sys.setdefaultencoding('utf8') #个人信息凭证。 t = o.get_table('user_detail') #获取分区表。 print t.exist_partition('dt=20190715,region=beijing') #查看所有分区。 for partition in t.partitions: print partition.name #您可以通过以下三种方式查询分区表数据。 #第一种方式如下。 with t.open_reader(partition='dt=20190715,region=beijing') as reader1: count = reader1.count print("第一种方式查询分区表数据:") for record in reader1: print record[0],record[1],record[2] #第二种方式如下。 print("第二种方式查询分区表数据:") reader2 = t.open_reader(partition='dt=20190715,region=beijing') for record in reader2: print record["userid"],record["job"],record["education"] #第三种方式如下。 print("第三种方式查询分表数据:") for record in o.read_table('user_detail', partition='dt=20190715,region=beijing'): print record["userid"],record["job"],record["education"]
单击高级运行(带参数运行)。
在参数对话框填写配置参数,单击确定。
配置参数说明如下:
调度资源组:选择默认资源组。
dt:设置为dt=20190715。
- 在运行日志中查看运行结果。