本文为您介绍如何通过PyODPS读取分区表数据。

前提条件

您需要完成以下操作:

操作步骤

  1. 准备测试数据。
    1. 创建表并上传数据。操作方法请参见建表并上传数据
      表结构以及源数据信息如下。
      • 分区表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
    2. 右键单击业务流程,选择新建 > ODPS SQL
    3. 输入节点名称,并单击提交
    4. 在ODPS SQL节点中输入如下代码。
      insert overwrite table user_detail partition (dt,region)
      select userid,job,education,dt,region from user_detail_ods;
    5. 单击运行,将数据插入到分区表user_detail中。
  2. 使用PyODPS读取分区表数据。
    1. 登录DataWorks控制台
    2. 在左侧导航栏上单击工作空间列表
    3. 单击工作空间后的进入数据开发
    4. 在数据开发页面,右键单击已经创建的业务流程,选择新建 > MaxCompute > PyODPS 2
    5. 输入节点名称,单击提交
    6. 在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"]
    7. 单击高级运行(带参数运行)
    8. 参数对话框填写配置参数,单击确定
      配置参数说明如下:
      • 调度资源组:选择默认资源组
      • dt:设置为dt=20190715
    9. 运行日志中查看运行结果。运行日志