全部產品
Search
文件中心

MaxCompute:PyODPS參數傳遞

更新時間:Jun 03, 2026

本文為您介紹如何在DataWorks中進行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)
      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]
    7. 單擊帶參運行

      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]

    8. 參數對話方塊填寫配置參數,單擊运行

      配置參數說明如下:

      • 资源组名称:選擇默認資源組

      • dt:設定為dt=20190715

    9. 運行日誌中查看運行結果。

      Executing user script with PyODPS 0.8.0
      dt=20190715
      查詢分區表資料:
      4 互連網  碩士
      1 互連網  本科
      xxx xxx xxx xxx INFO ===================================================================