全部產品
Search
文件中心

MaxCompute:使用 MaxCompute 用戶端體驗資料分析

更新時間:Jun 26, 2026

本文是為剛接觸 MaxCompute 的個人開發人員準備的入門教程。教程以 MaxCompute 用戶端為串連 MaxCompute 的開發工具,結合類比的樣本資料來示範產品的各項功能。教程覆蓋了使用 MaxCompute 的基礎流程,包括:建立專案、串連 MaxCompute、建立資料表、上傳資料、查詢分析資料和下載資料。如果您需要在本地環境進行 PoC 或處理輕量級資料,建議跟隨本教程體驗 MaxCompute 用戶端的使用。

說明

MaxCompute支援多種串連方式。如果希望通過可視化介面完成產品PoC,或者將來有一站式資料同步、商務程序設計、資料開發、管理和營運的訴求,建議參考通過DataWorks快速體驗MaxCompute教程,體驗通過DataWorks串連MaxCompute並分析資料。

您將學到什麼

教程涉及的主要操作包括:

  1. 建立MaxCompute專案:瞭解如何建立MaxCompute專案,作為您資料處理工作的獨立環境

  2. 配置並啟動MaxCompute用戶端:掌握MaxCompute用戶端的安裝與基本配置,建立本地環境與雲端MaxCompute的串連

  3. 建立資料表:學習如何在MaxCompute中定義和建立各種類型的資料表結構,用於儲存和組織資料

  4. 匯入資料:使用Tunnel工具高效地將本機資料上傳至MaxCompute

  5. SQL查詢與分析:運用標準SQL在MaxCompute中執行資料查詢、轉換和彙總操作,擷取業務洞察

  6. 匯出結果資料:將處理結果下載到本地

設定情境

假設某金融機構提供了一些未經處理資料,其中包含單身人士的教育背景、信貸資訊、購房資訊等。您將扮演一名資料分析師,通過分析單身人士的購房貸款行為,為該金融機構提供資料洞察,用於最佳化其信貸產品設計或實施精準營銷。

步驟一:準備帳號

1.1 註冊阿里雲帳號

如果您已經註冊了阿里雲帳號,可以略過該步驟。

  1. 開啟阿里雲官網在阿里雲官網右上方,單擊免費試用

  2. 帳號註冊頁面,按照操作提示完成帳號註冊。

1.2 建立AccessKey

  1. 進入AccessKey頁面,單擊建立 AccessKey

  2. 勾選我確認知曉雲帳號 AccessKey 安全風險,然後單擊繼續使用雲帳號 AccessKey

  3. 按照操作提示完成AccessKey建立,單擊下載 CSV 檔案複製儲存AccessKey ID和AccessKey Secret到本地。

重要
  • AccessKey Secret只在建立時顯示一次,請妥善保管

  • 建議將AccessKey儲存在安全的位置,不要泄露給他人

  • 如果AccessKey泄露,請立即刪除並重新建立

步驟二:建立MaxCompute專案

2.1 開通MaxCompute服務

  1. 登入並進入阿里雲MaxCompute產品首頁,根據購買頁面指引開通MaxCompute服務。

    • 商品類型:隨用隨付。

    • 地區:新加坡(本教程以新加坡地區為例)。

  2. 按照頁面提示完成服務開通。

2.2 建立專案

  1. 登入MaxCompute控制台,在左上方選擇地區。

    本文樣本選擇新加坡地區。

  2. 在左側導覽列,選擇管理配置 > 项目管理

  3. 内部项目頁簽,單擊新建项目

  4. 新增项目對話方塊,根據頁面提示資訊設定項目資訊後,

    • 项目名称(全网唯一):輸入專案名稱(例如: mc_dev)

    • 其他配置:根據實際需求配置其他選項

  5. 單擊確定完成專案建立。

步驟三:配置並啟動MaxCompute用戶端

3.1 下載並解壓MaxCompute用戶端安裝包

  1. 下載最新版本MaxCompute用戶端安裝包(Github)

  2. 解壓下載的安裝包檔案,得到以下檔案夾:

    • bin:可執行檔目錄

    • conf:設定檔目錄

    • lib:庫檔案目錄

    • plugins:外掛程式目錄

  3. 記錄安裝包的解壓路徑,後續操作需要用到。

3.2 配置用戶端

  1. 進入conf檔案夾,找到odps_config.ini設定檔。

  2. 使用文字編輯器開啟odps_config.ini檔案,配置以下欄位:

    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

    配置說明

    • project_name:填寫步驟二中建立的MaxCompute專案名稱

    • access_id:填寫步驟1.2中建立的AccessKey ID

    • access_key:填寫步驟1.2中建立的AccessKey Secret

    • end_point:MaxCompute服務的串連地址。本教程使用新加坡地區的Endpoint

    重要

    如果您在步驟一中選擇的地區不是新加坡,需要自行尋找您所選地區對應的公網 Endpoint

3.3 啟動MaxCompute用戶端

您可以通過以下兩種方式啟動MaxCompute用戶端:

方式一:使用安裝包的指令檔

  • Windows系統

    在MaxCompute用戶端安裝路徑下的bin檔案夾中,雙擊odpscmd.bat檔案。

  • macOS系統

    在MaxCompute用戶端安裝路徑下的bin檔案夾中,雙擊odpscmd檔案。

方式二:使用系統的命令列執行視窗

  1. 開啟系統的命令列執行視窗(Windows:命令提示字元或PowerShell;macOS/Linux:終端)。

  2. 進入MaxCompute用戶端安裝路徑下的bin目錄:

    # Windows系統
    cd <安裝路徑>\bin
    
    # macOS/Linux系統
    cd <安裝路徑>/bin
  3. 執行啟動命令:

    # Windows系統
    odpscmd
    
    # Linux系統或macOS系統
    sh odpscmd
    
    # Ubuntu系統(特殊說明)
    ./odpscmd
說明

在Ubuntu執行sh odpscmd會提示報錯,請您使用./odpscmd命令嘗試啟動。

預期結果:用戶端啟動成功,返回如下資訊,表明已成功串連MaxCompute專案:

          __                         __
 ___  ___/ /___   ___ ____ __ _  ___/ /
/ _ \/ _  // _ \ (_-</ __//  ' \/ _  / 
\___/\_,_// .__//___/\__//_/_/_/\_,_/  
         /_/                           
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> >

步驟四:準備樣本資料

4.1 下載樣本資料

本教程使用4個樣本資料檔案,請按以下步驟下載:

  1. banking.txt(原始全集資料,共41188條)

  2. banking_yescreditcard.csv(持有信用卡客戶,共3條)

  3. banking_nocreditcard.csv(無信用卡客戶,共32588條)

  4. banking_yescreditcard.csv(未知/待確認狀態客戶,共8597條)

4.2 理解資料結構

這四個資料集的邏輯關係如下所示:

banking.txt(原始全集,共41188條資料)
├─ banking_yescreditcard.csv(持有信用卡客戶,共3條資料)  
├─ banking_nocreditcard.csv(無信用卡客戶,共32588條資料)  
└─ banking_uncreditcard.csv(未知/待確認狀態客戶,共8597條資料)

4.3 預覽資料格式

banking.txt資料集進行樣本解析可見,每條客戶記錄均包含以下多維屬性:年齡、職業類型、婚姻狀況、教育層次等基礎人口統計資訊,以及金融業務相關衍生特徵。

資料樣本

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

資料格式說明

  • 分隔字元:逗號(,

  • 表頭:無表頭行

  • 欄位數量:21個欄位

4.4 放置資料檔案

將下載的資料檔案放置到MaxCompute用戶端的bin目錄下,或者記錄資料檔案的完整路徑。如果下載的樣本資料不在MaxCompute用戶端檔案夾的bin目錄下,後續匯入資料時請根據命令格式填寫正確的檔案路徑。

步驟五:建立資料表

5.1 設計表結構

  1. 基於樣本資料及資料集之間的邏輯關係,我們設計如下表結構:

    • 非分區表bank_data:用於儲存banking.txt原始全集資料(41188條)

    • 分區表bank_data_pt:基於分區欄位credit(是否持有信用卡),儲存三個CSV資料集

      • credit='yes':持有信用卡客戶(3條)

      • credit='no':無信用卡客戶(32588條)

      • credit='unknown':未知/待確認狀態客戶(8597條)

    • 非分區表result_table1:用於儲存查詢結果(教育程度統計)

    • 非分區表result_table2:用於儲存查詢結果(教育程度和信用卡狀態統計)

    說明

    分區可以理解為分類,通過分類把不同類型的資料放到不同的目錄下。分區表的意義在於最佳化查詢。查詢表時通過WHERE子句查詢指定所需查詢的分區,避免全表掃描,提高處理效率,降低計算費用。

5.2 建立非分區表bank_data

在MaxCompute用戶端中執行以下SQL語句:

-- 建立非分區表bank_data,用於儲存原始全集資料
CREATE TABLE IF NOT EXISTS bank_data
(
 age             BIGINT comment '年齡',
 job             STRING comment '工作類型',
 marital         STRING comment '婚姻狀態',
 education       STRING comment '教育程度',
 credit          STRING comment '是否有信用卡',
 housing         STRING comment '是否有房貸',
 loan            STRING comment '是否有貸款',
 contact         STRING comment '連絡方式',
 month           STRING comment '月份',
 day_of_week     STRING comment '星期幾',
 duration        STRING comment '期間',
 campaign        BIGINT comment '本次活動聯絡的次數',
 pdays           DOUBLE comment '與上一次聯絡的時間間隔',
 previous        DOUBLE comment '之前與客戶聯絡的次數',
 poutcome        STRING comment '之前行銷活動的結果',
 emp_var_rate    DOUBLE comment '就業變化速率',
 cons_price_idx  DOUBLE comment '消費者物價指數',
 cons_conf_idx   DOUBLE comment '消費者信心指數',
 euribor3m       DOUBLE comment '歐元存款利率',
 nr_employed     DOUBLE comment '職工人數',
 fixed_deposit   BIGINT comment '是否有定期存款'
);

5.3 建立分區表bank_data_pt

在MaxCompute用戶端中執行以下SQL語句:

-- 建立分區表bank_data_pt,分區欄位為credit(是否有信用卡)
CREATE TABLE IF NOT EXISTS bank_data_pt
(
 age             BIGINT comment '年齡',
 job             STRING comment '工作類型',
 marital         STRING comment '婚姻狀態',
 education       STRING comment '教育程度',
 housing         STRING comment '是否有房貸',
 loan            STRING comment '是否有貸款',
 contact         STRING comment '連絡方式',
 month           STRING comment '月份',
 day_of_week     STRING comment '星期幾',
 duration        STRING comment '期間',
 campaign        BIGINT comment '本次活動聯絡的次數',
 pdays           DOUBLE comment '與上一次聯絡的時間間隔',
 previous        DOUBLE comment '之前與客戶聯絡的次數',
 poutcome        STRING comment '之前行銷活動的結果',
 emp_var_rate    DOUBLE comment '就業變化速率',
 cons_price_idx  DOUBLE comment '消費者物價指數',
 cons_conf_idx   DOUBLE comment '消費者信心指數',
 euribor3m       DOUBLE comment '歐元存款利率',
 nr_employed     DOUBLE comment '職工人數',
 fixed_deposit   BIGINT comment '是否有定期存款'
)partitioned by (credit STRING comment '是否有信用卡');

-- 添加三個分區:yes、no、unknown
alter table bank_data_pt add if not exists partition (credit='yes') partition (credit='no') partition (credit='unknown');

5.4 建立結果表result_table1

在MaxCompute用戶端中執行以下SQL語句:

-- 建立結果表result_table1,用於儲存教育程度統計結果
CREATE TABLE IF NOT EXISTS result_table1
(
 education   STRING comment '教育程度',
 num         BIGINT comment '人數'
);

5.5 建立結果表result_table2

在MaxCompute用戶端中執行以下SQL語句:

-- 建立結果表result_table2,用於儲存教育程度和信用卡狀態統計結果
CREATE TABLE IF NOT EXISTS result_table2
(
 education   STRING comment '教育程度',
 num         BIGINT comment '人數',
 credit      STRING comment '是否有信用卡'
);

5.6 驗證表建立

5.6.1 查看已建立的表

執行以下命令查看已建立的表:

SHOW tables;

預期輸出

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

OK

5.6.2 查看錶結構

執行以下命令查看錶結構:

-- 查看bank_data表結構
DESC bank_data;

-- 查看bank_data_pt表結構
DESC bank_data_pt;

-- 查看result_table1表結構
DESC result_table1;

-- 查看result_table2表結構
DESC result_table2;

預期輸出(以bank_data_pt為例):

+------------------------------------------------------------------------------------+
| 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     |       | 年齡                                        |
| job             | string     |       | 工作類型                                    |
| marital         | string     |       | 婚姻狀態                                    |
| education       | string     |       | 教育程度                                    |
| housing         | string     |       | 是否有房貸                                  |
| loan            | string     |       | 是否有貸款                                  |
| contact         | string     |       | 連絡方式                                    |
| month           | string     |       | 月份                                        |
| day_of_week     | string     |       | 星期幾                                      |
| duration        | string     |       | 期間                                    |
| campaign        | bigint     |       | 本次活動聯絡的次數                          |
| pdays           | double     |       | 與上一次聯絡的時間間隔                      |
| previous        | double     |       | 之前與客戶聯絡的次數                        |
| poutcome        | string     |       | 之前行銷活動的結果                          |
| emp_var_rate    | double     |       | 就業變化速率                                |
| cons_price_idx  | double     |       | 消費者物價指數                              |
| cons_conf_idx   | double     |       | 消費者信心指數                              |
| euribor3m       | double     |       | 歐元存款利率                                |
| nr_employed     | double     |       | 職工人數                                    |
| fixed_deposit   | bigint     |       | 是否有定期存款                              |
+------------------------------------------------------------------------------------+
| Partition Columns:                                                                 |
+------------------------------------------------------------------------------------+
| credit          | string     | 是否有信用卡                                        |
+------------------------------------------------------------------------------------+

OK

執行以下命令查看分區:

SHOW partitions bank_data_pt;

預期輸出

credit=no
credit=unknown
credit=yes

OK

步驟六:匯入資料

6.1 Tunnel工具

Tunnel(資料通道)是MaxCompute的資料匯入匯出工具。可以通過Tunnel向MaxCompute中上傳或者下載資料。

6.2 匯入資料到bank_data表

執行以下命令將banking.txt匯入到bank_data表:

tunnel upload banking.txt bank_data;

命令格式說明

tunnel upload <待匯入的資料檔案路徑> <匯入資料的目標表>

預期輸出

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 匯入資料到bank_data_pt分區表

執行以下命令將三個CSV檔案分別匯入到bank_data_pt表的對應分區:

-- 匯入持有信用卡客戶資料到credit='yes'分區
tunnel upload banking_yescreditcard.csv bank_data_pt/credit="yes";

-- 匯入未知狀態客戶資料到credit='unknown'分區
tunnel upload banking_uncreditcard.csv bank_data_pt/credit="unknown";

-- 匯入無信用卡客戶資料到credit='no'分區
tunnel upload banking_nocreditcard.csv bank_data_pt/credit="no";

命令格式說明(分區表):

tunnel upload <待匯入的資料檔案路徑> <匯入資料的目標表>/<分區欄位>="<分區值>"

預期輸出(以第一個命令為例):

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

當回顯資訊出現OK字樣,說明匯入資料成功。

6.4 驗證資料匯入

執行以下命令,查看資料表中的資料條數是否正確:

-- 查看bank_data表中的資料條數(應為41188條)
select count(*) as num1 from bank_data;

-- 查看bank_data_pt表中credit='yes'分區的資料條數(應為3條)
select count(*) as num2 from bank_data_pt where credit="yes";

-- 查看bank_data_pt表中credit='unknown'分區的資料條數(應為8597條)
select count(*) as num3 from bank_data_pt where credit="unknown";

-- 查看bank_data_pt表中credit='no'分區的資料條數(應為32588條)
select count(*) as num4 from bank_data_pt where credit="no";

預期輸出

-- bank_data中的資料條數
+------------+
| num1       | 
+------------+
| 41188      | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

-- bank_data_pt中credit值為yes的資料條數
+------------+
| num2       | 
+------------+
| 3          | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

-- bank_data_pt中credit值為unknown的資料條數
+------------+
| num3       | 
+------------+
| 8597       | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

-- bank_data_pt中credit值為no的資料條數
+------------+
| num4       | 
+------------+
| 32588      | 
+------------+
A total of 1 records fetched by instance tunnel. Max record number: 10000

驗證結果

  • bank_data表:41188條資料(與banking.txt一致)

  • bank_data_ptcredit='yes'分區:3條資料(與banking_yescreditcard.csv一致)

  • bank_data_ptcredit='unknown'分區:8597條資料(與banking_uncreditcard.csv一致)

  • bank_data_ptcredit='no'分區:32588條資料(與banking_nocreditcard.csv一致)

如果資料條數不一致,請檢查:

  1. 資料檔案是否完整下載

  2. 匯入命令是否正確執行

  3. 資料檔案格式是否正確

步驟七:SQL查詢與分析

7.1 執行簡單查詢(可選)

在開始複雜查詢之前,您可以先執行一個簡單的查詢,驗證資料是否正確匯入:

-- 查看bank_data表的前10條資料
select * from bank_data limit 10;

預期輸出:返回10條資料記錄,包含所有21個欄位的值。

7.2 查詢非分區表資料

運行以下SQL命令,基於非分區表bank_data,查詢各個學曆下的貸款買房的單身人士數量,並將結果儲存到result_table1

-- 查詢非分區表bank_data中各個學曆下的貸款買房的單身人士數量
-- 並將查詢結果寫入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;

SQL說明

  • insert overwrite table:將查詢結果覆蓋寫入目標表

  • where housing = 'yes' and marital = 'single':篩選條件(有房貸且單身)

  • group by education:按教育程度分組統計

  • count(marital):統計每個教育程度下的人數

預期輸出

Job Queueing...

OK

7.3 查詢分區表資料

運行以下SQL命令,基於分區表bank_data_pt,查詢各個學曆下的貸款買房的單身人士數量(按信用卡狀態分組),並將結果儲存到result_table2

-- 設定允許全表掃描(查詢分區表時,如果未指定分區條件,需要此設定)
set odps.sql.allow.fullscan=true;

-- 查詢分區表bank_data_pt中各個學曆下的貸款買房的單身人士數量
-- 並將查詢結果寫入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;

SQL說明

  • set odps.sql.allow.fullscan=true;:允許全表掃描(查詢分區表時必需)

  • group by education, credit:按教育程度和信用卡狀態分組統計

預期輸出

Job Queueing...

OK

7.4 查看查詢結果

執行以下命令查看查詢結果:

-- 查看result_table1的查詢結果
select * from result_table1;

-- 查看result_table2的查詢結果
select * from result_table2;

預期輸出

-- 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

-- 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 資料分析洞察

基於查詢結果,我們可以得出以下資料洞察:

使用者類型

特徵描述

資料洞察

建議

大學學曆人群

佔比最高(29.3%)、無信用卡比例低

收入穩定、信用意識強、還款能力強

推出高額度房貸+信用卡聯動產品,結合學曆標籤精準營銷

高中學曆人群

佔比第二(20.1%)、部分無信用卡

群體基數大,有一定購房需求

提供標準房屋貸款產品,推廣至社區、企業園區等情境

基礎教育人群(basic.4y~basic.9y)

人數佔比約13.5%,信用卡缺失嚴重

信用空白人群,但存在購房需求

構建多維信用評估模型,試驗"白名單"預授信機制

教育資訊缺失人群

佔比3.1%,信用資料不完整

影響模型效果與營銷效率

完善前端採集邏輯,定期回訪補全資料

這些洞察將有助於金融機構最佳化信貸產品設計、提升風控能力,並實現更高效的客戶觸達與轉化。

步驟八:匯出結果資料

8.1 匯出result_table1資料

執行以下Tunnel Download命令匯出result_table1的資料:

tunnel download result_table1 result_table1.txt;

命令格式說明

tunnel download <待匯出的資料表> <匯出檔案路徑>

預期輸出

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
說明

如果未指定匯出檔案的路徑,匯出的資料檔案將預設在MaxCompute用戶端的bin路徑下。

當回顯資訊出現OK字樣,說明匯出資料成功。

8.2 匯出result_table2資料

執行以下命令匯出result_table2的資料:

tunnel download result_table2 result_table2.csv;

預期輸出

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 驗證匯出結果

  1. 在匯出路徑下(預設為MaxCompute用戶端的bin目錄)確認資料檔案的存在性。

  2. 開啟匯出的檔案,驗證資料完整性:

    • result_table1.txt:應包含8條記錄(8種教育程度)

    • result_table2.csv:應包含15條記錄(按教育程度和信用卡狀態分組)

預期結果

  • 檔案已成功匯出到指定路徑

  • 檔案中的資料與查詢結果一致

  • 檔案格式正確(TXT或CSV)

步驟九:清理資源

完成本教程後,建議及時清理建立的資源,避免繼續產生費用。

9.1 刪除資料表

在MaxCompute用戶端執行以下命令刪除建立的表:

-- 刪除result_table2
drop table result_table2;

-- 刪除result_table1
drop table result_table1;

-- 刪除bank_data_pt分區表
drop table bank_data_pt;

-- 刪除bank_data非分區表
drop table bank_data;

命令格式

drop table <table_name>;

9.2 驗證表刪除

執行以下命令確認表的刪除結果:

show tables;

預期輸出

OK

返回結果中無表資訊,表明已刪除成功。

9.3 刪除MaxCompute專案

重要警告

刪除專案將導致以下後果:

  • 專案中的所有資源將被刪除:包括所有表、函數、資源等

  • 操作不可恢複:刪除後無法恢複專案及其中的資料

  • 如果使用現有專案:刪除專案將同時刪除專案中的其他工作

刪除步驟

  1. 登入MaxCompute控制台

  2. 在左側導覽列,選擇管理配置 > 项目管理

  3. 项目管理頁面,單擊目標專案操作列的删除

  4. 按照頁面提示確認刪除操作。

說明
  • 如果您使用的是專門為本教程建立的新專案,可以直接刪除整個專案

  • 如果您使用的是現有專案,建議僅刪除本教程建立的表,保留專案和其他資源

9.4 驗證資源清理

完成資源清理後,請確認:

  • 所有資料表已刪除

  • 專案已刪除(如果適用)

  • 不再產生費用

常見問題

Q1:用戶端串連失敗怎麼辦?

可能原因

  • 專案名稱配置錯誤

  • AccessKey ID或Secret配置錯誤

  • Endpoint配置錯誤

  • 網路連接問題

解決方案

  1. 檢查odps_config.ini設定檔中的各項配置是否正確

  2. 確認AccessKey是否有效(未到期、未刪除)

  3. 確認Endpoint是否與專案地區匹配

  4. 檢查網路連接是否正常

Q2:資料匯入失敗怎麼辦?

可能原因

  • 資料檔案路徑錯誤

  • 資料格式不匹配(欄位數量、資料類型)

  • 檔案編碼問題

解決方案

  1. 檢查資料檔案路徑是否正確(使用絕對路徑)

  2. 驗證資料檔案格式是否與表結構匹配

  3. 查看錯誤資訊,根據提示調整

Q3:查詢分區表時報錯怎麼辦?

錯誤資訊ODPS-0130071: Partition exception

解決方案

  • 如果查詢分區表時未指定分區條件,需要先執行:set odps.sql.allow.fullscan=true;

  • 或者,在WHERE子句中指定具體的分區條件,例如:where credit='yes'

總結

通過本教程,您已經完成了:

  1. 建立MaxCompute專案

  2. 配置並啟動MaxCompute用戶端

  3. 建立資料表(非分區表和分區表)

  4. 匯入資料到MaxCompute

  5. 執行SQL查詢和分析

  6. 匯出查詢結果

  7. 清理資源

掌握了使用MaxCompute用戶端進行資料分析的基礎流程。接下來,您可以繼續深入學習 MaxCompute 的進階功能,將所學知識應用到實際專案中。