Tabel merupakan unit dasar penyimpanan data di MaxCompute. Tutorial ini memandu Anda merancang dan membuat dua jenis tabel—tabel non-partisi dan tabel partisi—menggunakan data perbankan contoh, lalu memverifikasi hasilnya.
Apa yang akan Anda pelajari:
-
Cara menganalisis file data dan menentukan struktur tabel yang tepat
-
Cara membuat tabel non-partisi dan tabel partisi menggunakan client MaxCompute
-
Cara menambahkan partisi ke tabel partisi
-
Cara memverifikasi bahwa tabel dibuat dengan skema yang benar
Steps overview: Langkah 1: Rancang tabel → Langkah 2: Buat tabel → Langkah 3: Verifikasi tabel
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Client MaxCompute yang telah diinstal dan berjalan. Lihat Instal dan jalankan client MaxCompute.
-
File data CSV atau TXT untuk diimpor. Tutorial ini menggunakan file contoh berikut:
-
Tabel non-partisi: banking.txt
-
Tabel partisi (tiga file): banking_nocreditcard.csv, banking_uncreditcard.csv, dan banking_yescreditcard.csv
-
-
Izin CREATE TABLE pada Proyek MaxCompute Anda. Izin ini diperlukan untuk Pengguna RAM. Pemilik Akun Alibaba Cloud memiliki izin ini secara default.
-
Untuk memeriksa izin Anda, lihat Kueri izin menggunakan MaxCompute SQL.
-
Untuk memberikan izin kepada Pengguna RAM, lihat Izin MaxCompute.
-
Catatan penggunaan
Tipe data kolom dalam tabel Anda harus sesuai dengan tipe data dalam file sumber Anda. Ketidaksesuaian tipe data akan mencegah data diimpor.
Langkah 1: Rancang tabel
Sebelum menulis SQL apa pun, periksa data sumber Anda untuk menentukan jumlah kolom, nama bidang, dan tipe data setiap kolom.
File contoh dalam tutorial ini berisi data debitur hipotek. Bidang dipisahkan koma. Pratinjau berikut menampilkan beberapa baris dari tiap file:
-- Data tabel non-partisi (21 kolom)
44,blue-collar,married,basic.4y,unknown,yes,no,cellular,aug,thu,210,1,999,0,nonexistent,1.4,93.444,-36.1,4.963,5228.1,0
53,technician,married,unknown,no,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,no,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
-- Data tabel partisi (20 kolom per file; kolom credit digunakan sebagai kunci partisi)
53,technician,married,unknown,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
39,services,married,high.school,no,no,cellular,apr,fri,185,2,999,0,nonexistent,-1.8,93.075,-47.1,1.405,5099.1,0
Hitung jumlah kolom, identifikasi tipe data setiap bidang, dan pilih nama kolom yang bermakna. Tabel berikut merangkum analisis untuk file contoh tersebut.
<table> <thead> <tr> <td><p><b>Item</b></p></td> <td><p><b>Deskripsi</b></p></td> </tr> </thead> <colgroup></colgroup> <colgroup></colgroup> <tbody> <tr> <td><p>Jumlah kolom</p></td> <td><p>Hitung jumlah kolom dalam tiap file contoh dan tentukan jumlah kolom dalam tabel yang ingin Anda buat:</p> <ul> <li><p>File contoh yang digunakan untuk membuat tabel non-partisi berisi 21 kolom. Anda dapat membuat tabel non-partisi yang berisi 21 kolom berdasarkan file contoh tersebut. </p> <div> <div> <i></i> </div> <div> <strong>Catatan </strong> <p>Jika jumlah kolom dalam tabel melebihi jumlah kolom dalam file contoh, kolom tambahan dalam tabel akan diisi dengan NULL. Jika jumlah kolom dalam tabel kurang dari jumlah kolom dalam file contoh, data berlebih dalam file contoh akan dibuang. </p> </div> </div></li> <li><p>Tiap file contoh yang digunakan untuk membuat tabel partisi berisi 20 kolom. Anda dapat membuat tabel partisi yang berisi 21 kolom dengan satu kolom sebagai kunci partisi berdasarkan file contoh tersebut. Anda harus mendefinisikan partisi saat membuat tabel. </p></li> </ul></td> </tr> <tr> <td><p>Bidang tabel</p></td> <td><p>Identifikasi bidang dalam tiap file contoh dan tentukan bidang dalam tabel yang ingin Anda buat:</p> <ul> <li><p>Bidang tabel non-partisi:</p> <ul> <li><p>age: usia</p></li> <li><p>job: jenis pekerjaan</p></li> <li><p>marital: status pernikahan</p></li> <li><p>education: tingkat pendidikan</p></li> <li><p>credit: memiliki kartu kredit</p></li> <li><p>housing: debitur hipotek</p></li> <li><p>loan: memiliki pinjaman</p></li> <li><p>contact: informasi kontak</p></li> <li><p>month: bulan</p></li> <li><p>day_of_week: hari dalam seminggu</p></li> <li><p>duration: durasi</p></li> <li><p>campaign: jumlah kontak untuk kampanye saat ini</p></li> <li><p>pdays: waktu yang berlalu setelah kontak terakhir</p></li> <li><p>previous: jumlah kontak sebelumnya</p></li> <li><p>poutcome: hasil aktivitas pemasaran sebelumnya</p></li> <li><p>emp_var_rate: laju variasi ketenagakerjaan</p></li> <li><p>cons_price_idx: indeks harga konsumen</p></li> <li><p>cons_conf_idx: indeks kepercayaan konsumen</p></li> <li><p>euribor 3m: Euribor 3 bulan (Euro Interbank Offered Rate)</p></li> <li><p>nr_employed: jumlah karyawan</p></li> <li><p>fixed_deposit: memiliki deposito</p></li> </ul></li> <li><p>Bidang tabel partisi:</p> <ul> <li><p>age: usia</p></li> <li><p>job: jenis pekerjaan</p></li> <li><p>marital: status pernikahan</p></li> <li><p>education: tingkat pendidikan</p></li> <li><p>housing: debitur hipotek</p></li> <li><p>loan: memiliki pinjaman</p></li> <li><p>contact: informasi kontak</p></li> <li><p>month: bulan</p></li> <li><p>day_of_week: hari dalam seminggu</p></li> <li><p>duration: durasi</p></li> <li><p>campaign: jumlah kontak untuk kampanye saat ini</p></li> <li><p>pdays: waktu yang berlalu setelah kontak terakhir</p></li> <li><p>previous: jumlah kontak sebelumnya</p></li> <li><p>poutcome: hasil aktivitas pemasaran sebelumnya</p></li> <li><p>emp_var_rate: laju variasi ketenagakerjaan</p></li> <li><p>cons_price_idx: indeks harga konsumen</p></li> <li><p>cons_conf_idx: indeks kepercayaan konsumen</p></li> <li><p>euribor 3m: Euribor 3 bulan</p></li> <li><p>nr_employed: jumlah karyawan</p></li> <li><p>fixed_deposit: memiliki deposito</p></li> <li><p>credit: memiliki kartu kredit (kunci partisi) </p></li> </ul></li> </ul></td> </tr> <tr> <td><p>Tipe data</p></td> <td><p>Identifikasi tipe data setiap kolom dalam file contoh:</p> <ul> <li><p>age: BIGINT</p></li> <li><p>job: STRING</p></li> <li><p>marital: STRING</p></li> <li><p>education: STRING</p></li> <li><p>credit: STRING</p></li> <li><p>housing: STRING</p></li> <li><p>loan: STRING</p></li> <li><p>contact: STRING</p></li> <li><p>month: STRING</p></li> <li><p>day_of_week: STRING</p></li> <li><p>duration: STRING</p></li> <li><p>campaign: BIGINT</p></li> <li><p>pdays: DOUBLE</p></li> <li><p>previous: DOUBLE</p></li> <li><p>poutcome: STRING</p></li> <li><p>emp_var_rate: DOUBLE</p></li> <li><p>cons_price_idx: DOUBLE</p></li> <li><p>cons_conf_idx: DOUBLE</p></li> <li><p>euribor3m: DOUBLE</p></li> <li><p>nr_employed: DOUBLE</p></li> <li><p>fixed_deposit: BIGINT</p></li> </ul></td> </tr> </tbody> </table>
Langkah 2: Buat tabel
Tutorial ini membuat total empat tabel:
-
bank_data: tabel non-partisi untuk mengimpor seluruh dataset -
bank_data_pt: tabel partisi, dengancreditsebagai kunci partisi -
result_table1: tabel non-partisi untuk menyimpan hasil kueri -
result_table2: tabel non-partisi untuk menyimpan hasil kueri
Untuk detail sintaks CREATE TABLE, lihat Buat tabel. Untuk detail manajemen tabel dan partisi, lihat Operasi tabel dan Operasi partisi.
-
Optional: Alihkan ke Proyek MaxCompute target Anda. Lewati langkah ini jika proyek sudah dipilih saat Anda menjalankan client.
use doc_test_dev;Prompt diperbarui untuk mengonfirmasi pergantian:
doc_test_dev.default> -
Buat keempat tabel tersebut. Urutan kolom dan tipe data dalam tiap pernyataan CREATE TABLE sesuai langsung dengan bidang yang diidentifikasi di Langkah 1.
-
Buat tabel non-partisi
bank_data:create table if not exists bank_data ( age BIGINT comment 'usia', job STRING comment 'jenis pekerjaan', marital STRING comment 'status pernikahan', education STRING comment 'tingkat pendidikan', credit STRING comment 'memiliki kartu kredit', housing STRING comment 'debitur hipotek', loan STRING comment 'memiliki pinjaman', contact STRING comment 'informasi kontak', month STRING comment 'bulan', day_of_week STRING comment 'hari dalam seminggu', duration STRING comment 'durasi', campaign BIGINT comment 'jumlah kontak untuk kampanye saat ini', pdays DOUBLE comment 'waktu yang berlalu setelah kontak terakhir', previous DOUBLE comment 'jumlah kontak sebelumnya', poutcome STRING comment 'hasil aktivitas pemasaran sebelumnya', emp_var_rate DOUBLE comment 'laju variasi ketenagakerjaan', cons_price_idx DOUBLE comment 'indeks harga konsumen', cons_conf_idx DOUBLE comment 'indeks kepercayaan konsumen', euribor3m DOUBLE comment 'Euribor 3 bulan', nr_employed DOUBLE comment 'jumlah karyawan', fixed_deposit BIGINT comment 'memiliki deposito' ); -
Buat tabel partisi
bank_data_ptdan tambahkan partisi. Kolomcreditdigunakan sebagai kunci partisi alih-alih kolom data biasa, sehingga tabel memiliki 20 kolom data ditambah satu kunci partisi.create table if not exists bank_data_pt ( age BIGINT comment 'usia', job STRING comment 'jenis pekerjaan', marital STRING comment 'status pernikahan', education STRING comment 'tingkat pendidikan', housing STRING comment 'debitur hipotek', loan STRING comment 'memiliki pinjaman', contact STRING comment 'informasi kontak', month STRING comment 'bulan', day_of_week STRING comment 'hari dalam seminggu', duration STRING comment 'durasi', campaign BIGINT comment 'jumlah kontak untuk kampanye saat ini', pdays DOUBLE comment 'waktu yang berlalu setelah kontak terakhir', previous DOUBLE comment 'jumlah kontak sebelumnya', poutcome STRING comment 'hasil aktivitas pemasaran sebelumnya', emp_var_rate DOUBLE comment 'laju variasi ketenagakerjaan', cons_price_idx DOUBLE comment 'indeks harga konsumen', cons_conf_idx DOUBLE comment 'indeks kepercayaan konsumen', euribor3m DOUBLE comment 'Euribor 3 bulan', nr_employed DOUBLE comment 'jumlah karyawan', fixed_deposit BIGINT comment 'memiliki deposito' )partitioned by (credit STRING comment 'memiliki kartu kredit'); alter table bank_data_pt add if not exists partition (credit='yes') partition (credit='no') partition (credit='unknown'); -
Buat tabel non-partisi
result_table1:create table if not exists result_table1 ( education STRING comment 'tingkat pendidikan', num BIGINT comment 'jumlah orang' ); -
Buat tabel non-partisi
result_table2:create table if not exists result_table2 ( education STRING comment 'tingkat pendidikan', num BIGINT comment 'jumlah orang', credit STRING comment 'memiliki kartu kredit' );
-
Langkah 3: Verifikasi tabel
Periksa apakah semua tabel telah dibuat dan skemanya benar.
-
Daftar semua tabel dalam proyek:
show tables;Keempat tabel muncul dalam output:
ALIYUN$****:bank_data ALIYUN$****:bank_data_pt ALIYUN$****:result_table1 ALIYUN$****:result_table2 -
Periksa skema dan partisi tiap tabel:
Bidang
Size: 0adalah hal yang diharapkan—tabel belum berisi data. Ukuran akan bertambah setelah Anda mengimpor data.-- Lihat skema bank_data. desc bank_data; -- Lihat skema bank_data_pt. desc bank_data_pt; -- Lihat partisi bank_data_pt. show partitions bank_data_pt; -- Lihat skema result_table1. desc result_table1; -- Lihat skema result_table2. desc result_table2;Output
desc bank_data_pt;terlihat mirip seperti berikut:+------------------------------------------------------------------------------------+ | Owner: ALIYUN$**** | Project: doc_test_dev | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-05-17 14:02:21 | | LastDDLTime: 2021-05-17 14:02:21 | | LastModifiedTime: 2021-05-17 14:02:21 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | age | bigint | | usia | | job | string | | jenis pekerjaan | | marital | string | | status pernikahan | | education | string | | tingkat pendidikan | | housing | string | | debitur hipotek | | loan | string | | memiliki pinjaman | | contact | string | | informasi kontak | | month | string | | bulan | | day_of_week | string | | hari dalam seminggu | | duration | string | | durasi | | campaign | bigint | | jumlah kontak untuk kampanye saat ini | | pdays | double | | waktu yang berlalu setelah kontak terakhir | | previous | double | | jumlah kontak sebelumnya | | poutcome | string | | hasil aktivitas pemasaran sebelumnya | | emp_var_rate | double | | laju variasi ketenagakerjaan | | cons_price_idx | double | | indeks harga konsumen | | cons_conf_idx | double | | indeks kepercayaan konsumen | | euribor3m | double | | Euribor 3 bulan | | nr_employed | double | | jumlah karyawan | | fixed_deposit | bigint | | memiliki deposito | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | credit | string | memiliki kartu kredit | +------------------------------------------------------------------------------------+Output
show partitions bank_data_pt;mengonfirmasi bahwa ketiga partisi telah dibuat:credit=no credit=unknown credit=yes
Langkah berikutnya
Dengan keempat tabel telah dibuat dan skemanya diverifikasi, impor data dari file contoh. Lihat Impor data ke tabel.