全部产品
Search
文档中心

MaxCompute:Gunakan node PyODPS untuk membaca data dari tabel terpartisi

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan node PyODPS untuk membaca data dari tabel terpartisi.

Prasyarat

Operasi berikut telah selesai dilakukan:

  • MaxCompute telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan MaxCompute.

  • DataWorks telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan DataWorks.

  • Sebuah alur kerja dibuat di konsol DataWorks. Dalam contoh ini, sebuah alur kerja dibuat untuk ruang kerja DataWorks dalam mode dasar. Untuk informasi lebih lanjut, lihat Buat Alur Kerja.

Prosedur

  1. Persiapkan data uji.

    1. Buat tabel dan unggah data. Untuk informasi lebih lanjut, lihat Buat Tabel dan Unggah Data.

      Dalam contoh ini, gunakan pernyataan pembuatan tabel dan data sumber berikut:

      • Pernyataan berikut membuat tabel terpartisi user_detail:

        CREATE TABLE IF NOT EXISTS user_detail
        (
        userid    BIGINT COMMENT 'User ID',
        job       STRING COMMENT 'Job type',
        education STRING COMMENT 'Education level'
        ) COMMENT 'User information table'
        PARTITIONED BY (dt STRING COMMENT 'Date',region STRING COMMENT 'Region');
      • Pernyataan berikut membuat tabel data sumber user_detail_ods:

        CREATE TABLE IF NOT EXISTS user_detail_ods
        (
          userid    BIGINT COMMENT 'User ID',
          job       STRING COMMENT 'Job type',
          education STRING COMMENT 'Education level',
          dt STRING COMMENT 'Date',
          region STRING COMMENT 'Region'
        );
      • Simpan data uji sebagai file user_detail.txt. Unggah file ini ke tabel user_detail_ods:

        0001,Internet,Bachelor,20190715,beijing
        0002,Education,junior college,20190716,beijing
        0003,Finance,master,20190715,shandong
        0004,Internet,master,20190715,beijing
    2. Tulis data dari tabel data sumber user_detail_ods ke tabel terpartisi user_detail.

      1. Masuk ke Konsol DataWorks.

      2. Di panel navigasi di sebelah kiri, klik Workspace.

      3. Temukan ruang kerja target, pilih Shorcuts > Data Development di kolom Actions.

      4. Klik kanan alur bisnis dan pilih Create Node > ODPS SQL.

      5. Masukkan nama node dan klik Confirm.

      6. Masukkan kode berikut di node ODPS SQL:

        INSERT OVERWRITE TABLE user_detail PARTITION (dt, region) 
        SELECT userid, job, education, dt, region FROM user_detail_ods;
      7. Klik Run untuk menyelesaikan penulisan data.

  2. Gunakan node PyODPS untuk membaca data dari tabel terpartisi.

    1. Masuk ke Konsol DataWorks.

    2. Di panel navigasi di sebelah kiri, klik Workspace.

    3. Temukan ruang kerja target, pilih Shorcuts > Data Development di kolom Actions.

    4. Pada halaman Data Development, klik kanan alur bisnis yang telah dibuat dan pilih Create Node > PyODPS 2.

    5. Masukkan nama node dan klik Confirm.

    6. Pada tab konfigurasi node PyODPS 2, masukkan kode berikut di editor kode:

      import sys
      from odps import ODPS
      reload(sys)
      print('dt=' + args['dt'])
      # Set UTF-8 sebagai format pengkodean default.
      sys.setdefaultencoding('utf8')
      # Dapatkan tabel terpartisi.
      t = o.get_table('user_detail')
      # Periksa apakah partisi yang ditentukan ada.
      print t.exist_partition('dt=20190715,region=beijing')
      # Lihat semua partisi di tabel terpartisi.
      for partition in t.partitions:
          print partition.name
      # Anda dapat menggunakan salah satu metode berikut untuk mengquery data di tabel terpartisi:
      # Metode 1
      with t.open_reader(partition='dt=20190715,region=beijing') as reader1:
          count = reader1.count
      print("Query data di tabel terpartisi dengan menggunakan Metode 1:")
      for record in reader1:
          print record[0],record[1],record[2]
      # Metode 2
      print("Query data di tabel terpartisi dengan menggunakan Metode 2:")
      reader2 = t.open_reader(partition='dt=20190715,region=beijing')
      for record in reader2:
          print record["userid"],record["job"],record["education"]
      # Metode 3
      print("Query data di tabel terpartisi dengan menggunakan Metode 3:")
      for record in o.read_table('user_detail', partition='dt=20190715,region=beijing'):
          print record["userid"],record["job"],record["education"]
    7. Klik Run with Parameters.

    8. Di kotak dialog Parameters, konfigurasikan parameter dan klik Run.

      Konfigurasikan parameter berikut:

      • Resource Group Name: Pilih Default Resource Group.

      • dt: Atur menjadi dt=20190715.

      image

    9. Lihat hasil eksekusi node PyODPS 2 pada tab Run Log.Run Log