All Products
Search
Document Center

MaxCompute:Analisis data dengan klien MaxCompute

Last Updated:Jun 26, 2026

Tutorial ini ditujukan untuk pengembang yang baru mengenal MaxCompute. Anda akan menggunakan klien MaxCompute untuk terhubung ke MaxCompute dan menjalankan alur kerja analisis data dasar: membuat proyek dan tabel, mengunggah serta mengkueri data, dan mengunduh hasilnya.

Catatan

MaxCompute mendukung berbagai metode koneksi. Jika Anda lebih suka menggunakan antarmuka visual untuk PoC produk atau memerlukan solusi satu atap untuk sinkronisasi data, desain proses bisnis, pengembangan data, manajemen, dan O&M,ikuti tutorial Mulai cepat dengan MaxCompute menggunakan DataWorks untuk terhubung ke MaxCompute dan menganalisis data.

Apa yang akan Anda pelajari

Tutorial ini mencakup operasi utama berikut:

  1. Create a MaxCompute project: Pelajari cara membuat proyek MaxCompute sebagai lingkungan terisolasi untuk tugas pemrosesan data Anda.

  2. Configure and start the MaxCompute client: Instal dan konfigurasikan klien MaxCompute untuk menghubungkan lingkungan lokal Anda ke MaxCompute.

  3. Create tables: Pelajari cara mendefinisikan dan membuat berbagai jenis struktur tabel di MaxCompute untuk menyimpan dan mengorganisasi data.

  4. Import data: Gunakan tool Tunnel untuk mengunggah data lokal ke MaxCompute secara efisien.

  5. Run SQL queries and analysis: Gunakan SQL standar di MaxCompute untuk mengkueri, mentransformasi, dan mengagregasi data guna mendapatkan insight.

  6. Export result data: Unduh hasil yang telah diproses ke mesin lokal Anda.

Kasus penggunaan

Bayangkan Anda seorang analis data di lembaga keuangan. Anda memiliki data mentah tentang individu lajang, termasuk pendidikan, informasi kredit, dan status kepemilikan rumah mereka. Tugas Anda adalah menganalisis perilaku pinjaman rumah mereka untuk mendapatkan insight yang membantu lembaga tersebut mengoptimalkan produk kreditnya atau menerapkan kampanye pemasaran yang ditargetkan.

Langkah 1: Persiapkan akun Anda

1.1 Daftar Akun Alibaba Cloud

Jika Anda sudah memiliki Akun Alibaba Cloud, Anda dapat melewati langkah ini.

  1. Kunjungi atau situs web resmi Alibaba Cloud. Di sudut kanan atas halaman utama, klik atau Free Trial.

  2. Pada halaman Account Registration, ikuti petunjuk di layar untuk menyelesaikan pendaftaran.

1.2 Buat AccessKey

  1. Buka halaman AccessKey dan klik Create AccessKey.

  2. Pilih I understand the security risks of using the AccessKey of my cloud account, lalu klik Continue to use cloud account AccessKey.

  3. Ikuti petunjuk di layar untuk membuat AccessKey. Klik Download CSV File atau Copy untuk menyimpan ID AccessKey dan AccessKey Secret ke mesin lokal Anda.

Penting
  • AccessKey Secret hanya ditampilkan sekali saat pembuatan. Simpan dengan aman.

  • Simpan AccessKey Anda di lokasi yang aman dan jangan bagikan kepada siapa pun.

  • Jika AccessKey Anda dikompromikan, segera hapus dan buat yang baru.

Langkah 2: Buat proyek MaxCompute

2.1 Aktifkan MaxCompute

  1. Login ke halaman produk MaxCompute Alibaba Cloud dan ikuti petunjuk di halaman tersebut untuk mengaktifkan layanan MaxCompute.

    • Metode Penagihan: pay-as-you-go.

    • Wilayah: Singapura (Tutorial ini menggunakan wilayah Singapura sebagai contoh).

  2. Ikuti petunjuk di layar untuk menyelesaikan aktivasi layanan.

2.2 Buat proyek

  1. Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

    Tutorial ini menggunakan wilayah Singapore.

  2. Di panel navigasi kiri, pilih Manage Configurations > Projects.

  3. Pada tab Internal Project, klik Create Project.

  4. Pada kotak dialog Create Project, konfigurasikan pengaturan proyek sesuai petunjuk.

    • Project Name (Globally Unique): Masukkan nama proyek, misalnya mc_dev.

    • Konfigurasi lainnya: Atur opsi lain sesuai kebutuhan bisnis Anda.

  5. Klik OK untuk membuat proyek.

Langkah 3: Konfigurasikan dan jalankan klien MaxCompute

3.1 Unduh dan ekstrak paket klien

  1. Unduh versi terbaru dari paket klien MaxCompute (GitHub).

  2. Ekstrak paket yang telah diunduh. Folder-folder berikut akan dihasilkan:

    • bin: Direktori untuk file yang dapat dieksekusi.

    • conf: Direktori untuk file konfigurasi.

    • lib: Direktori untuk file pustaka.

    • plugins: Direktori untuk plug-in.

  3. Catat jalur tempat paket diekstrak. Anda akan membutuhkannya pada langkah selanjutnya.

3.2 Konfigurasikan klien

  1. Buka folder conf dan temukan file konfigurasi odps_config.ini.

  2. Buka file odps_config.ini dengan editor teks dan konfigurasikan parameter berikut:

    project_name=<your_project_name>
    access_id=<your_access_key_id>
    access_key=<your_access_key_secret>
    end_point=https://service.ap-southeast-1.maxcompute.aliyun.com/api

    Deskripsi parameter:

    • project_name: Masukkan nama proyek MaxCompute yang Anda buat di Langkah 2.

    • access_id: Masukkan ID AccessKey yang Anda buat di Langkah 1.2.

    • access_key: Masukkan AccessKey Secret yang Anda buat di Langkah 1.2.

    • end_point: Titik akhir layanan MaxCompute. Tutorial ini menggunakan titik akhir untuk wilayah Singapura.

    Penting

    Jika wilayah yang Anda pilih di Langkah 1 bukan Singapura, Anda perlu mencari titik akhir publik yang sesuai untuk wilayah yang Anda pilih.

3.3 Jalankan klien MaxCompute

Anda dapat menjalankan klien MaxCompute dengan salah satu cara berikut:

Gunakan file skrip

  • Windows:

    Di folder bin direktori instalasi klien MaxCompute, klik ganda file odpscmd.bat.

  • macOS:

    Di folder bin direktori instalasi klien MaxCompute, klik ganda file odpscmd.

Gunakan CLI

  1. Buka CLI sistem operasi Anda (Command Prompt atau PowerShell untuk Windows; Terminal untuk macOS/Linux).

  2. Navigasi ke direktori bin dalam jalur instalasi klien MaxCompute:

    # Untuk Windows
    cd <installation_path>\bin
    
    # Untuk macOS/Linux
    cd <installation_path>/bin
  3. Jalankan perintah startup:

    # Untuk Windows
    odpscmd
    
    # Untuk Linux atau macOS
    sh odpscmd
    
    # Untuk Ubuntu (instruksi khusus)
    ./odpscmd
Catatan

Di Ubuntu, menjalankan sh odpscmd dapat menyebabkan error. Coba jalankan klien dengan perintah ./odpscmd sebagai gantinya.

Hasil yang diharapkan: Klien berhasil dijalankan dan mengembalikan pesan berikut, yang menunjukkan bahwa koneksi ke proyek MaxCompute telah terbentuk:

          __                         __
 ___  ___/ /___   ___ ____ __ _  ___/ /
/ _ \/ _  // _ \ (_-</ __//  ' \/ _  / 
\___/\_,_// .__//___/\__//_/_/_/\_,_/  
         /_/                           
Aliyun ODPS Command Line Tool
Version x.xx.x-public
@Copyright 2026 Alibaba Cloud Computing Co., Ltd. All rights reserved.
Connecting to https://service.ap-**.maxcompute.aliyun.com/api, project: <your_project_name>
Endpoint: https://service.ap-**.maxcompute.aliyun.com/api
Project: <your_project_name>
Quota: default in region N/A
Timezone: **
Connected!
<your_project_name> >

Langkah 4: Persiapkan data sampel

4.1 Unduh data sampel

Tutorial ini menggunakan empat file data sampel. Ikuti langkah-langkah berikut untuk mengunduhnya:

  1. banking.txt (Dataset mentah lengkap, 41.188 catatan)

  2. banking_yescreditcard.csv (Pelanggan dengan kartu kredit, 3 catatan)

  3. banking_nocreditcard.csv (Pelanggan tanpa kartu kredit, 32.588 catatan)

  4. banking_uncreditcard.csv (Pelanggan dengan status kartu kredit tidak diketahui, 8.597 catatan)

4.2 Pahami struktur data

Hubungan logis antara keempat dataset tersebut adalah sebagai berikut:

banking.txt (Dataset mentah lengkap, 41.188 catatan)
├─ banking_yescreditcard.csv (Pelanggan dengan kartu kredit, 3 catatan)  
├─ banking_nocreditcard.csv (Pelanggan tanpa kartu kredit, 32.588 catatan)  
└─ banking_uncreditcard.csv (Pelanggan dengan status kartu kredit tidak diketahui, 8.597 catatan)

4.3 Pratinjau format data

Analisis sampel dataset banking.txt menunjukkan bahwa setiap catatan pelanggan berisi beberapa atribut. Atribut tersebut mencakup informasi demografis dasar seperti usia, jenis pekerjaan, status perkawinan, dan tingkat pendidikan, serta fitur yang terkait dengan layanan keuangan.

Data sampel:

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

Deskripsi format data:

  • Pemisah: Koma (,)

  • Header: Tidak ada baris header

  • Jumlah bidang: 21

4.4 Tempatkan file data

Tempatkan file data yang telah diunduh di direktori bin klien MaxCompute, atau catat jalur lengkap ke file data tersebut. Jika data sampel yang diunduh tidak berada di direktori bin, Anda harus memberikan jalur file yang benar saat menjalankan perintah impor.

Langkah 5: Buat tabel

5.1 Rancang struktur tabel

  1. Berdasarkan data sampel dan hubungan logisnya, tutorial ini menggunakan struktur tabel berikut:

    • tabel non-partisi bank_data: Menyimpan dataset mentah lengkap dari banking.txt (41.188 catatan).

    • tabel partisi bank_data_pt: Menyimpan tiga dataset CSV, dipartisi berdasarkan bidang credit (status kartu kredit).

      • credit='yes': Pelanggan dengan kartu kredit (3 catatan)

      • credit='no': Pelanggan tanpa kartu kredit (32.588 catatan)

      • credit='unknown': Pelanggan dengan status kartu kredit tidak diketahui (8.597 catatan)

    • tabel non-partisi result_table1: Menyimpan hasil kueri untuk statistik tingkat pendidikan.

    • tabel non-partisi result_table2: Menyimpan hasil kueri untuk statistik tingkat pendidikan dan status kartu kredit.

    Catatan

    Partisi seperti kategori. Dengan mengkategorikan data, Anda menempatkan jenis data yang berbeda ke dalam direktori yang berbeda. Tabel partisi mengoptimalkan kueri. Dengan menentukan partisi dalam klausa WHERE, Anda menghindari pemindaian tabel penuh, yang meningkatkan efisiensi pemrosesan dan mengurangi biaya komputasi.

5.2 Buat tabel non-partisi bank_data

Jalankan pernyataan SQL berikut di klien MaxCompute:

-- Buat tabel non-partisi bank_data untuk menyimpan dataset mentah lengkap.
CREATE TABLE IF NOT EXISTS bank_data
(
 age             BIGINT comment 'Age',
 job             STRING comment 'Job type',
 marital         STRING comment 'Marital status',
 education       STRING comment 'Education level',
 credit          STRING comment 'Credit card status',
 housing         STRING comment 'Home loan status',
 loan            STRING comment 'Personal loan status',
 contact         STRING comment 'Contact method',
 month           STRING comment 'Month',
 day_of_week     STRING comment 'Day of the week',
 duration        STRING comment 'Duration',
 campaign        BIGINT comment 'Number of contacts during this campaign',
 pdays           DOUBLE comment 'Days since the last contact',
 previous        DOUBLE comment 'Number of contacts before this campaign',
 poutcome        STRING comment 'Outcome of the previous marketing campaign',
 emp_var_rate    DOUBLE comment 'Employment variation rate',
 cons_price_idx  DOUBLE comment 'Consumer price index',
 cons_conf_idx   DOUBLE comment 'Consumer confidence index',
 euribor3m       DOUBLE comment 'Euribor 3-month rate',
 nr_employed     DOUBLE comment 'Number of employees',
 fixed_deposit   BIGINT comment 'Has a fixed deposit'
);

5.3 Buat tabel partisi bank_data_pt

Jalankan pernyataan SQL berikut di klien MaxCompute:

-- Buat tabel partisi bank_data_pt, dengan 'credit' (status kartu kredit) sebagai kunci partisi.
CREATE TABLE IF NOT EXISTS bank_data_pt
(
 age             BIGINT comment 'Age',
 job             STRING comment 'Job type',
 marital         STRING comment 'Marital status',
 education       STRING comment 'Education level',
 housing         STRING comment 'Home loan status',
 loan            STRING comment 'Personal loan status',
 contact         STRING comment 'Contact method',
 month           STRING comment 'Month',
 day_of_week     STRING comment 'Day of the week',
 duration        STRING comment 'Duration',
 campaign        BIGINT comment 'Number of contacts during this campaign',
 pdays           DOUBLE comment 'Days since the last contact',
 previous        DOUBLE comment 'Number of contacts before this campaign',
 poutcome        STRING comment 'Outcome of the previous marketing campaign',
 emp_var_rate    DOUBLE comment 'Employment variation rate',
 cons_price_idx  DOUBLE comment 'Consumer price index',
 cons_conf_idx   DOUBLE comment 'Consumer confidence index',
 euribor3m       DOUBLE comment 'Euribor 3-month rate',
 nr_employed     DOUBLE comment 'Number of employees',
 fixed_deposit   BIGINT comment 'Has a fixed deposit'
)partitioned by (credit STRING comment 'Credit card status');

-- Tambahkan tiga partisi: yes, no, dan unknown.
alter table bank_data_pt add if not exists partition (credit='yes') partition (credit='no') partition (credit='unknown');

5.4 Buat tabel hasil result_table1

Jalankan pernyataan SQL berikut di klien MaxCompute:

-- Buat tabel hasil result_table1 untuk menyimpan statistik tingkat pendidikan.
CREATE TABLE IF NOT EXISTS result_table1
(
 education   STRING comment 'Education level',
 num         BIGINT comment 'Count'
);

5.5 Buat tabel hasil result_table2

Jalankan pernyataan SQL berikut di klien MaxCompute:

-- Buat tabel hasil result_table2 untuk menyimpan statistik tingkat pendidikan dan status kartu kredit.
CREATE TABLE IF NOT EXISTS result_table2
(
 education   STRING comment 'Education level',
 num         BIGINT comment 'Count',
 credit      STRING comment 'Credit card status'
);

5.6 Verifikasi pembuatan tabel

5.6.1 Lihat tabel yang dibuat

Jalankan perintah berikut untuk melihat tabel yang telah dibuat:

SHOW tables;

Output yang diharapkan:

ALIYUN$****:bank_data
ALIYUN$****:bank_data_pt
ALIYUN$****:result_table1
ALIYUN$****:result_table2

OK

5.6.2 Lihat struktur tabel

Jalankan perintah berikut untuk melihat struktur tabel:

-- Lihat struktur tabel bank_data.
DESC bank_data;

-- Lihat struktur tabel bank_data_pt.
DESC bank_data_pt;

-- Lihat struktur tabel result_table1.
DESC result_table1;

-- Lihat struktur tabel result_table2.
DESC result_table2;

Output yang diharapkan (menggunakan bank_data_pt sebagai contoh):

+------------------------------------------------------------------------------------+
| Owner: ALIYUN$****          | Project: doc_test_dev                                |
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2026-05-17 14:02:21                                      |
| LastDDLTime:              2026-05-17 14:02:21                                      |
| LastModifiedTime:         2026-05-17 14:02:21                                      |
+------------------------------------------------------------------------------------+
| InternalTable: YES      | Size: 0                                                  |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| age             | bigint     |       | Age                                         |
| job             | string     |       | Job type                                    |
| marital         | string     |       | Marital status                              |
| education       | string     |       | Education level                             |
| housing         | string     |       | Home loan status                            |
| loan            | string     |       | Personal loan status                        |
| contact         | string     |       | Contact method                              |
| month           | string     |       | Month                                       |
| day_of_week     | string     |       | Day of the week                             |
| duration        | string     |       | Duration                                    |
| campaign        | bigint     |       | Number of contacts during this campaign     |
| pdays           | double     |       | Days since the last contact                 |
| previous        | double     |       | Number of contacts before this campaign     |
| poutcome        | string     |       | Outcome of the previous marketing campaign  |
| emp_var_rate    | double     |       | Employment variation rate                   |
| cons_price_idx  | double     |       | Consumer price index                        |
| cons_conf_idx   | double     |       | Consumer confidence index                   |
| euribor3m       | double     |       | Euribor 3-month rate                        |
| nr_employed     | double     |       | Number of employees                         |
| fixed_deposit   | bigint     |       | Has a fixed deposit                         |
+------------------------------------------------------------------------------------+
| Partition Columns:                                                                 |
+------------------------------------------------------------------------------------+
| credit          | string     | Credit card status                                  |
+------------------------------------------------------------------------------------+

OK

Jalankan perintah berikut untuk melihat partisi:

SHOW partitions bank_data_pt;

Output yang diharapkan:

credit=no
credit=unknown
credit=yes

OK

Langkah 6: Impor data

6.1 Tool Tunnel

Tunnel adalah saluran data yang berfungsi sebagai tool impor dan ekspor data untuk MaxCompute. Anda dapat menggunakan Tunnel untuk mengunggah data ke atau mengunduh data dari MaxCompute.

6.2 Impor data ke tabel bank_data

Jalankan perintah berikut untuk mengimpor file banking.txt ke tabel bank_data:

tunnel upload banking.txt bank_data;

Format perintah:

tunnel upload <path_to_the_data_file_to_import> <destination_table>

Output yang diharapkan:

Upload session: 20260202192653092c3b1a0d8ed099
Start upload:banking.txt
Using \n to split records
Upload in strict schema mode: true
Total bytes:4841548	 Split input to 1 blocks
2026-05-02 19:26:53	scan block: '1'
2026-05-02 19:26:53	scan block complete, block id: 1
2026-05-02 19:26:53	upload block: '1'
2026-05-02 19:26:55	Block info: 1:0:4841548:banking.txt, progress: 100%, bs: 4.6 MB, speed: 2.3 MB/s
2026-05-02 19:26:55	upload block complete, block id: 1
upload complete, average speed is 1.5 MB/s
OK

6.3 Impor data ke tabel partisi

Jalankan perintah berikut untuk mengimpor tiga file CSV ke partisi yang sesuai di tabel bank_data_pt:

-- Impor data untuk pelanggan dengan kartu kredit ke partisi credit='yes'.
tunnel upload banking_yescreditcard.csv bank_data_pt/credit="yes";

-- Impor data untuk pelanggan dengan status tidak diketahui ke partisi credit='unknown'.
tunnel upload banking_uncreditcard.csv bank_data_pt/credit="unknown";

-- Impor data untuk pelanggan tanpa kartu kredit ke partisi credit='no'.
tunnel upload banking_nocreditcard.csv bank_data_pt/credit="no";

Format perintah (untuk tabel partisi):

tunnel upload <path_to_the_data_file_to_import> <destination_table>/<partition_key>="<partition_value>"

Output yang diharapkan (menggunakan perintah pertama sebagai contoh):

Upload session: 20260202192822042e3b1a0d8f28f6
Start upload:banking_yescreditcard.csv
Using \r\n to split records
Upload in strict schema mode: true
Total bytes:351	 Split input to 1 blocks
2026-05-02 19:28:22	scan block: '1'
2026-05-02 19:28:22	scan block complete, block id: 1
2026-05-02 19:28:22	upload block: '1'
2026-05-02 19:28:22	upload block complete, block id: 1
upload complete, average speed is 351 bytes/s
OK

Pesan OK dalam output menunjukkan bahwa data berhasil diimpor.

6.4 Verifikasi impor data

Jalankan perintah berikut untuk memeriksa apakah jumlah baris di setiap tabel sudah benar:

-- Periksa jumlah baris di tabel bank_data (seharusnya 41.188).
select count(*) as num1 from bank_data;

-- Periksa jumlah baris di partisi credit='yes' tabel bank_data_pt (seharusnya 3).
select count(*) as num2 from bank_data_pt where credit="yes";

-- Periksa jumlah baris di partisi credit='unknown' tabel bank_data_pt (seharusnya 8.597).
select count(*) as num3 from bank_data_pt where credit="unknown";

-- Periksa jumlah baris di partisi credit='no' tabel bank_data_pt (seharusnya 32.588).
select count(*) as num4 from bank_data_pt where credit="no";

Output yang diharapkan:

-- Jumlah baris di bank_data
+------------+
| num1       | 
+------------+
| 41188      | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

-- Jumlah baris di bank_data_pt dengan credit='yes'
+------------+
| num2       | 
+------------+
| 3          | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

-- Jumlah baris di bank_data_pt dengan credit='unknown'
+------------+
| num3       | 
+------------+
| 8597       | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

-- Jumlah baris di bank_data_pt dengan credit='no'
+------------+
| num4       | 
+------------+
| 32588      | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

Hasil verifikasi:

  • Tabel bank_data: 41.188 baris (sesuai dengan banking.txt)

  • Tabel bank_data_pt, partisi credit='yes': 3 baris (sesuai dengan banking_yescreditcard.csv)

  • Tabel bank_data_pt, partisi credit='unknown': 8.597 baris (sesuai dengan banking_uncreditcard.csv)

  • Tabel bank_data_pt, partisi credit='no': 32.588 baris (sesuai dengan banking_nocreditcard.csv)

Jika jumlah baris tidak sesuai, periksa hal berikut:

  1. Pastikan file data telah diunduh secara lengkap.

  2. Verifikasi bahwa perintah impor telah dijalankan dengan benar.

  3. Periksa apakah format file data sudah benar.

Langkah 7: Kueri dan analisis data dengan SQL

7.1 Jalankan kueri sederhana (Opsional)

Sebelum menjalankan kueri kompleks, Anda dapat menjalankan kueri sederhana untuk memverifikasi bahwa data telah diimpor dengan benar:

-- Lihat 10 baris pertama tabel bank_data.
select * from bank_data limit 10;

Output yang diharapkan: Perintah mengembalikan 10 catatan data, termasuk nilai untuk semua 21 bidang.

7.2 Kueri data dari tabel non-partisi

Jalankan perintah SQL berikut untuk mengkueri tabel non-partisi bank_data guna mendapatkan jumlah individu lajang dengan pinjaman rumah, dikelompokkan berdasarkan tingkat pendidikan. Simpan hasilnya ke result_table1.

-- Kueri jumlah individu lajang dengan pinjaman rumah dari tabel non-partisi bank_data, dikelompokkan berdasarkan tingkat pendidikan.
-- Tulis hasil kueri ke result_table1.
INSERT OVERWRITE TABLE result_table1
 SELECT education, COUNT(marital) AS num
 FROM bank_data
 WHERE housing = 'yes' AND marital = 'single'
 GROUP BY education;

Deskripsi SQL:

  • insert overwrite table: Menimpa tabel tujuan dengan hasil kueri.

  • where housing = 'yes' and marital = 'single': Menentukan kondisi filter (memiliki pinjaman rumah dan lajang).

  • group by education: Mengelompokkan hasil berdasarkan tingkat pendidikan.

  • count(marital): Menghitung jumlah individu untuk setiap tingkat pendidikan.

Output yang diharapkan:

Job Queueing...

OK

7.3 Kueri data dari tabel partisi

Jalankan perintah SQL berikut untuk mengkueri tabel partisi bank_data_pt guna mendapatkan jumlah individu lajang dengan pinjaman rumah, dikelompokkan berdasarkan tingkat pendidikan dan status kartu kredit. Simpan hasilnya ke result_table2.

-- Izinkan pemindaian tabel penuh. Ini diperlukan jika tidak ada kondisi partisi yang ditentukan saat mengkueri tabel partisi.
set odps.sql.allow.fullscan=true;

-- Kueri jumlah individu lajang dengan pinjaman rumah dari tabel partisi bank_data_pt.
-- Kelompokkan hasil kueri berdasarkan tingkat pendidikan dan status kartu kredit, lalu tulis ke result_table2.
insert overwrite table result_table2 
select education, count(marital) as num, credit 
from bank_data_pt 
where housing = 'yes' and marital = 'single'
group by education, credit;

Deskripsi SQL:

  • set odps.sql.allow.fullscan=true;: Mengizinkan pemindaian tabel penuh, yang diperlukan saat mengkueri tabel partisi tanpa filter partisi.

  • group by education, credit: Mengelompokkan hasil berdasarkan tingkat pendidikan dan status kartu kredit.

Output yang diharapkan:

Job Queueing...

OK

7.4 Lihat hasil kueri

Jalankan perintah berikut untuk melihat hasil kueri:

-- Lihat hasil kueri di result_table1.
select * from result_table1;

-- Lihat hasil kueri di result_table2.
select * from result_table2;

Output yang diharapkan:

-- Data di result_table1
+------------+------------+
| education  | num        | 
+------------+------------+
| university.degree | 2399       | 
| basic.4y   | 227        | 
| basic.9y   | 709        | 
| unknown    | 257        | 
| professional.course | 785        | 
| high.school | 1641       | 
| basic.6y   | 172        | 
| illiterate | 1          | 
+------------+------------+
A total of 8 records fetched by instance tunnel. Max record number: 10000

-- Data di result_table2
+------------+------------+------------+
| education  | num        | credit     | 
+------------+------------+------------+
| unknown    | 51         | unknown    | 
| high.school | 172        | unknown    | 
| basic.4y   | 63         | unknown    | 
| university.degree | 196        | unknown    | 
| professional.course | 64         | unknown    | 
| basic.9y   | 162        | unknown    | 
| basic.6y   | 68         | unknown    | 
| illiterate | 1          | unknown    | 
| university.degree | 2203       | no         | 
| basic.4y   | 164        | no         | 
| basic.9y   | 547        | no         | 
| professional.course | 721        | no         | 
| high.school | 1469       | no         | 
| unknown    | 206        | no         | 
| basic.6y   | 104        | no         | 
+------------+------------+------------+
A total of 15 records fetched by instance tunnel. Max record number: 10000

7.5 Analisis data dan insight

Berdasarkan hasil kueri, kita dapat menarik insight berikut:

Segmen pengguna

Karakteristik utama

Insight data

Rekomendasi

Pemegang gelar universitas

Persentase tertinggi (29,3%), tingkat kepemilikan kartu kredit tinggi.

Pendapatan stabil, kesadaran kredit kuat, dan kemampuan pembayaran kembali yang baik.

Luncurkan produk bundel yang menggabungkan pinjaman rumah berbatas tinggi dengan kartu kredit. Gunakan tingkat pendidikan untuk pemasaran yang ditargetkan.

Lulusan SMA

Persentase tertinggi kedua (20,1%), sebagian tidak memiliki kartu kredit.

Basis pelanggan besar dengan permintaan tertentu untuk pembelian rumah.

Tawarkan produk pinjaman rumah standar dan promosikan di komunitas serta taman bisnis.

Kelompok pendidikan dasar (basic.4y hingga basic.9y)

Sekitar 13,5% dari total, sebagian besar tidak memiliki kartu kredit.

Kelompok tanpa riwayat kredit tetapi masih memiliki permintaan untuk pembelian rumah.

Kembangkan model penilaian kredit multidimensi dan uji coba mekanisme persetujuan awal berbasis daftar putih.

Individu dengan informasi pendidikan tidak lengkap

3,1% dari total, dengan data kredit tidak lengkap.

Hal ini memengaruhi kinerja model dan efisiensi pemasaran.

Perbaiki logika pengumpulan data di front-end dan lakukan tindak lanjut berkala untuk melengkapi data.

Insight ini dapat membantu lembaga keuangan mengoptimalkan desain produk kredit, meningkatkan kemampuan pengendalian risiko, serta mencapai jangkauan dan konversi pelanggan yang lebih efisien.

Langkah 8: Ekspor data hasil

8.1 Ekspor data dari result_table1

Jalankan perintah Tunnel Download berikut untuk mengekspor data dari result_table1:

tunnel download result_table1 result_table1.txt;

Format perintah:

tunnel download <source_table> <destination_file_path>

Output yang diharapkan:

2026-05-02 19:34:40  -  new session: 20260202193440d909371a0d8e908c	total lines: 8
2026-05-02 19:34:40  -  file [0]: [0, 8), result_table1.txt
downloading 8 records into 1 file
2026-05-02 19:34:40  -  file [0] start
2026-05-02 19:34:41  -  file [0] OK. total: 128 bytes
total: 128 bytes, time: 442 ms, average speed: 0 bytes/s
download OK
Catatan

Jika Anda tidak menentukan jalur untuk file yang diekspor, file data akan disimpan di direktori bin klien MaxCompute secara default.

Pesan OK dalam output menunjukkan bahwa data berhasil diekspor.

8.2 Ekspor data dari result_table2

Jalankan perintah berikut untuk mengekspor data dari result_table2:

tunnel download result_table2 result_table2.csv;

Output yang diharapkan:

2026-05-02 19:35:26  -  new session: 20260202193526dce7301a0d8ef026	total lines: 15
2026-05-02 19:35:26  -  file [0]: [0, 15), result_table2.csv
downloading 15 records into 1 file
2026-05-02 19:35:26  -  file [0] start
2026-05-02 19:35:26  -  file [0] OK. total: 322 bytes
total: 322 bytes, time: 441 ms, average speed: 0 bytes/s
download OK

8.3 Verifikasi hasil ekspor

  1. Periksa apakah file data ada di jalur ekspor yang ditentukan (secara default di direktori bin klien MaxCompute).

  2. Buka file yang diekspor untuk memverifikasi integritas data:

    • result_table1.txt: Harus berisi 8 catatan (untuk 8 tingkat pendidikan).

    • result_table2.csv: Harus berisi 15 catatan (dikelompokkan berdasarkan tingkat pendidikan dan status kartu kredit).

Hasil yang diharapkan:

  • File berhasil diekspor ke jalur yang ditentukan.

  • Data dalam file sesuai dengan hasil kueri.

  • Format file sudah benar (TXT atau CSV).

Langkah 9: Bersihkan resource

Setelah menyelesaikan tutorial ini, kami menyarankan Anda membersihkan resource yang telah dibuat untuk menghindari biaya yang tidak perlu.

9.1 Hapus tabel

Jalankan perintah berikut di klien MaxCompute untuk menghapus tabel yang telah Anda buat:

-- Hapus result_table2.
drop table result_table2;

-- Hapus result_table1.
drop table result_table1;

-- Hapus tabel partisi bank_data_pt.
drop table bank_data_pt;

-- Hapus tabel non-partisi bank_data.
drop table bank_data;

Format perintah:

drop table <table_name>;

9.2 Verifikasi penghapusan tabel

Jalankan perintah berikut untuk memastikan bahwa tabel telah dihapus:

show tables;

Output yang diharapkan:

OK

Output tidak berisi informasi tabel, yang menunjukkan bahwa tabel telah berhasil dihapus.

9.3 Hapus proyek MaxCompute

Peringatan penting

Menghapus proyek memiliki konsekuensi berikut:

  • Semua resource dalam proyek dihapus: termasuk semua tabel, fungsi, dan resource.

  • Operasi ini tidak dapat dibatalkan: setelah dihapus, proyek dan datanya tidak dapat dipulihkan.

  • Jika Anda menggunakan proyek yang sudah ada: menghapus proyek juga akan menghapus pekerjaan lain dalam proyek tersebut.

Prosedur:

  1. Login ke Konsol MaxCompute.

  2. Di panel navigasi kiri, pilih Manage Configurations > Projects.

  3. Pada halaman Projects, klik Delete di kolom Actions untuk proyek target.

  4. Ikuti petunjuk di layar untuk mengonfirmasi penghapusan.

Catatan
  • Jika Anda menggunakan proyek baru yang dibuat khusus untuk tutorial ini, Anda dapat menghapus seluruh proyek.

  • Jika Anda menggunakan proyek yang sudah ada, kami menyarankan Anda hanya menghapus tabel yang dibuat dalam tutorial ini dan mempertahankan proyek serta resource lainnya.

9.4 Verifikasi pembersihan resource

Setelah membersihkan resource, pastikan bahwa:

  • Semua tabel telah dihapus.

  • Tidak ada biaya tambahan yang dikenakan.

  • Tidak lagi dikenai biaya

Pertanyaan yang sering diajukan

Q1: Apa yang harus saya lakukan jika koneksi klien gagal?

Kemungkinan penyebab:

  • Konfigurasi nama proyek salah

  • Konfigurasi ID AccessKey atau Secret salah

  • Konfigurasi endpoint salah

  • Masalah konektivitas jaringan

Solusi:

  1. Periksa apakah pengaturan dalam file odps_config.ini sudah benar.

  2. Verifikasi bahwa AccessKey valid dan belum kedaluwarsa atau dihapus.

  3. Verifikasi bahwa endpoint sesuai dengan wilayah proyek.

  4. Periksa koneksi jaringan Anda.

Q2: Apa yang harus saya lakukan jika impor data gagal?

Kemungkinan penyebab:

  • Jalur file data salah

  • Ketidaksesuaian format data (jumlah bidang, tipe data)

  • Masalah encoding file

Solusi:

  1. Periksa apakah jalur file data sudah benar. Gunakan jalur mutlak.

  2. Verifikasi bahwa format file data sesuai dengan struktur tabel.

  3. Periksa pesan error dan lakukan penyesuaian sesuai petunjuk.

Q3: Apa yang harus saya lakukan jika terjadi error saat mengkueri tabel partisi?

Pesan error: ODPS-0130071: Partition exception

Solusi:

  • Jika Anda mengkueri tabel partisi tanpa menentukan kondisi partisi, jalankan terlebih dahulu perintah: set odps.sql.allow.fullscan=true;

  • Atau, tentukan kondisi partisi dalam klausa WHERE. Contohnya: where credit='yes'

Ringkasan

Dalam tutorial ini, Anda telah mempelajari cara:

  1. Membuat proyek MaxCompute

  2. Mengonfigurasikan dan menjalankan klien MaxCompute

  3. Membuat tabel partisi dan non-partisi

  4. Mengimpor data ke MaxCompute

  5. Menjalankan kueri SQL dan menganalisis data

  6. Mengekspor hasil kueri

  7. Membersihkan resource

Anda telah mempelajari alur kerja dasar untuk analisis data dengan klien MaxCompute. Sekarang, Anda dapat menjelajahi fitur MaxCompute tingkat lanjut dan menerapkan pengetahuan ini ke proyek Anda sendiri.