表是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
后續步驟
創建表并確認后,即可將數據文件中的數據導入表中,請參見導入數據。