Artikel ini menjelaskan cara membaca data dari tabel terpartisi menggunakan PyODPS.
Prasyarat
Anda harus menyelesaikan langkah-langkah berikut:
-
Telah mengaktifkan MaxCompute.
-
Telah mengaktifkan DataWorks.
-
Telah membuat alur kerja di DataWorks. Untuk detailnya, lihat Create a workflow.
Langkah-langkah Operasional
Contoh ini menggunakan mode sederhana DataWorks. Saat membuat ruang kerja, opsi 参加数据开发(Data Studio)公测 tidak diaktifkan secara default. Ruang kerja beta publik tidak berlaku untuk contoh ini.
-
Siapkan data pengujian.
-
Buat tabel dan unggah data. Untuk petunjuknya, lihat Create a table and upload data.
Struktur tabel dan informasi data sumber adalah sebagai berikut.
-
Skrip pembuatan tabel terpartisi user_detail adalah sebagai berikut.
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 '地区'); -
Skrip pembuatan tabel sumber data user_detail_ods adalah sebagai berikut.
CREATE TABLE IF NOT EXISTS user_detail_ods ( userid BIGINT COMMENT '用户id', job STRING COMMENT '工作类型', education STRING COMMENT '教育程度', dt STRING COMMENT '日期', region STRING COMMENT '地区' ); -
Data pengujian disimpan dalam file user_detail.txt. Unggah file ini ke dalam tabel user_detail_ods.
0001,互联网,本科,20190715,beijing 0002,教育,大专,20190716,beijing 0003,金融,硕士,20190715,shandong 0004,互联网,硕士,20190715,beijing
-
-
Tulis data dari tabel sumber
user_detail_odske tabel terpartisiuser_detail.-
Login ke Konsol DataWorks.
-
Pada panel navigasi kiri, klik Workspace.
-
Pastikan workspace target telah dipilih, lalu pilih pada kolom Actions.
-
Klik kanan pada alur kerja, lalu pilih .
-
Masukkan nama node, lalu klik OK.
-
Masukkan kode berikut ke dalam node ODPS SQL.
INSERT OVERWRITE TABLE user_detail PARTITION (dt, region) SELECT userid, job, education, dt, region FROM user_detail_ods; -
Klik Run untuk menyelesaikan penulisan data.
-
-
-
Gunakan PyODPS untuk membaca data tabel terpartisi.
-
Login ke Konsol DataWorks.
-
Pada panel navigasi kiri, klik Workspace.
-
Konfirmasi ruang kerja target, lalu pada kolom Actions, pilih .
-
Pada halaman Data Development, klik kanan pada alur kerja yang telah dibuat, lalu pilih .
-
Masukkan nama node, lalu klik OK.
-
Masukkan kode berikut ke dalam node PyODPS 2 untuk membaca data tabel terpartisi.
import sys from odps import ODPS reload(sys) print('dt=' + args['dt']) # Ubah encoding default sistem. sys.setdefaultencoding('utf8') # Kredensial informasi pribadi. t = o.get_table('user_detail') # Dapatkan tabel terpartisi. print t.exist_partition('dt=20190715,region=beijing') # Lihat semua partisi. for partition in t.partitions: print partition.name # Anda dapat mengakses data tabel terpartisi dengan tiga cara berikut. # Cara pertama sebagai berikut. with t.open_reader(partition='dt=20190715,region=beijing') as reader1: count = reader1.count print("Cara pertama mengakses data tabel terpartisi:") for record in reader1: print record[0],record[1],record[2] # Cara kedua sebagai berikut. print("Cara kedua mengakses data tabel terpartisi:") reader2 = t.open_reader(partition='dt=20190715,region=beijing') for record in reader2: print record["userid"],record["job"],record["education"] # Cara ketiga sebagai berikut. print("Cara ketiga mengakses data tabel terpartisi:") for record in o.read_table('user_detail', partition='dt=20190715,region=beijing'): print record["userid"],record["job"],record["education"] -
Klik Run with Parameters.
-
Isi parameter konfigurasi pada dialog Parameters, lalu klik Run.
Penjelasan parameter konfigurasi sebagai berikut:
-
Resource Group Name: Pilih Shared Resource Group.
-
dt: Atur menjadi dt=20190715.
-
-
Lihat hasil eksekusi di Runtime Log.
Executing user script with PyODPS 0.8.0 dt=20190715 True dt='20190715',region='beijing' dt='20190715',region='shandong' dt='20190716',region='beijing' Cara pertama mengakses data tabel terpartisi: 4 互联网 硕士 1 互联网 本科 Cara kedua mengakses data tabel terpartisi: 4 互联网 硕士 1 互联网 本科 Cara ketiga mengakses data tabel terpartisi: 4 互联网 硕士 1 互联网 本科
-