All Products
Search
Document Center

MaxCompute:Buat tabel

Last Updated:Mar 27, 2026

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:

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, dengan credit sebagai 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.

  1. 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>
  2. 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_pt dan tambahkan partisi. Kolom credit digunakan 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.

  1. 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
  2. Periksa skema dan partisi tiap tabel:

    Bidang Size: 0 adalah 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.