表是MaxCompute的資料存放區單元。您需要基於表進行資料處理。本文為您介紹如何建立表。
前提條件
請確認您已滿足如下條件:
已登入MaxCompute用戶端。
更多登入MaxCompute用戶端操作,請參見安裝並登入MaxCompute本地用戶端。
已準備好儲存了待匯入資料的CSV或TXT檔案。
本文提供的資料檔案範例如下:
建立非分區表的資料檔案:banking.txt。
建立分區表的資料檔案:banking_nocreditcard.csv、banking_uncreditcard.csv和banking_yescreditcard.csv。
如果是RAM使用者建立表,請確認阿里雲帳號已經授予RAM使用者建立表的許可權(CreateTable)。
更多查看許可權操作,請參見通過MaxCompute SQL查詢許可權資訊。
更多授權操作,請參見MaxCompute許可權。
注意事項
新建立表的列資料類型務必與資料檔案的各列資料類型保持一致,如果二者不一致,會導致後續匯入資料操作執行失敗。
步驟一:設計表
您需要根據待匯入的資料內容和最終需要產生的結果資料,確定需要建立的表類型、結構及各列的資料類型。
本文中提供的樣本資料內容如下,展示的是銀行貸款購房人員的資料。
--待建立非分區表的資料。
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
--待建立分區表的資料。
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
您可以識別到資料列數、每列資料的資料類型,同時可以瞭解各列資料對應的含義,為每列資料定義一個列名稱。假設基於樣本資料,識別到的資訊如下。
類型 | 說明 |
表的列數 | 從樣本資料中識別表列數資訊如下:
|
表的欄欄位 | 從樣本資料中識別表欄欄位資訊如下:
|
資料類型 | 從樣本資料中識別表欄欄位的資料類型資訊如下:
|
步驟二:建立表
基於樣本資料,建立非分區表bank_data和分區表bank_data_pt,用於儲存業務資料;建立非分區表result_table1和result_table2,用於儲存結果資料。更多表及分區的操作資訊,請參見表操作和分區和列操作。建立表的操作流程如下:
可選:在MaxCompute用戶端,執行如下命令切換至目標MaxCompute專案。
如果您啟動MaxCompute用戶端後已在目標MaxCmpute專案中,請忽略該步驟。
use doc_test_dev;
切換成功顯示如下。
doc_test_dev.default>
在MaxCompute用戶端,建立表bank_data、bank_data_pt、result_table1和result_table2。
更多建立表文法,請參見建立表。
建立非分區表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 '是否有定期存款' );
建立分區表bank_data_pt,並添加分區,命令樣本如下。
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 '是否有信用卡'); alter table bank_data_pt add if not exists partition (credit='yes') partition (credit='no') partition (credit='unknown');
建立非分區表result_table1,命令樣本如下。
create table if not exists result_table1 ( education STRING comment '教育程度', num BIGINT comment '人數' );
建立非分區表result_table2,命令樣本如下。
create table if not exists result_table2 ( education STRING comment '教育程度', num BIGINT comment '人數', credit STRING comment '是否有信用卡' );
步驟三:確認建立結果
建立表後,您需要確認表是否已建立成功,以及表的結構是否正確無誤。操作流程如下:
在MaxCompute用戶端,執行如下命令確認表已在MaxCompute專案中。
show tables;
建立成功的表會顯示在命令返回結果中,返回結果樣本如下。
ALIYUN$****:bank_data ALIYUN$****:bank_data_pt ALIYUN$****:result_table1 ALIYUN$****:result_table2
在MaxCompute用戶端,執行如下命令確認表的結構正確無誤。
--查看bank_data表結構。 desc bank_data; --查看bank_data_pt表結構。 desc bank_data_pt; --查看bank_data_pt的分區。 show partitions bank_data_pt; --查看result_table1表結構。 desc result_table1; --查看result_table2表結構。 desc result_table2;
以bank_data_pt為例,返回結果如下。
desc bank_data_pt; --返回結果。 +------------------------------------------------------------------------------------+ | 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 | | 年齡 | | 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 | 是否有信用卡 | +------------------------------------------------------------------------------------+
show partitions bank_data_pt; --返回結果。 credit=no credit=unknown credit=yes
後續步驟
建立表並確認後,即可將資料檔案中的資料匯入表中,請參見匯入資料。