全部產品
Search
文件中心

MaxCompute:PyODPS查看一級分區

更新時間:Feb 13, 2025

本文為您介紹如何在PyODPS中查看一級分區。

前提條件

請提前完成如下操作:

操作步驟

說明

本例使用DataWorks簡單模式,建立工作空間時,預設保持參加資料開發(Data Studio)公測不開啟,公測工作空間不適用本例。

  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. 將來源資料表user_detail_ods中的資料寫入分區表user_detail

      1. 登入DataWorks控制台

      2. 在左側導覽列,單擊工作空間

      3. 確認目標工作空間,選擇操作列中的快速進入 > 資料開發

      4. 按右鍵商務程序,選擇建立節點 > ODPS SQL

      5. 輸入節點名稱,並單擊確認

      6. 在ODPS SQL節點中輸入如下代碼。

        INSERT OVERWRITE TABLE user_detail PARTITION (dt, region) 
        SELECT userid, job, education, dt, region FROM user_detail_ods;
      7. 單擊運行,完成資料寫入。

  2. 使用PyODPS查看一級分區。

    1. 登入DataWorks控制台

    2. 在左側導覽列,單擊工作空間

    3. 確認目標工作空間,選擇操作列中的快速進入 > 資料開發

    4. 資料開發頁面,按右鍵已經建立的商務程序,選擇建立節點 > PyODPS 2

    5. 輸入節點名稱,單擊確認

    6. 在PyODPS 2節點中輸入如下代碼查看一級分區資料。

      import sys
      reload(sys)
      #修改系統預設編碼。
      sys.setdefaultencoding('utf8')
      
      #非同步方式讀取一級分區。
      instance = o.run_sql('select * from user_detail WHERE dt=\'20190715\'')
      instance.wait_for_success()
      for record in instance.open_reader():
          print record["userid"],record["job"],record["education"]
      
      #同步方式讀取一級分區。
      with o.execute_sql('select * from user_detail WHERE dt=\'20190715\'').open_reader() as reader4:
          print reader4.raw
          for record in reader4:
              print record["userid"],record["job"],record["education"]
      
      #使用ODPS的DataFrame擷取一級分區。
      pt_df = DataFrame(o.get_table('user_detail').get_partition('dt=20190715'))
      print pt_df.head(10)
    7. 單擊運行按鈕。

    8. 作業記錄中查看運行結果。