創(chuàng)建表
表是MaxCompute的數(shù)據(jù)存儲(chǔ)單元。您需要基于表進(jìn)行數(shù)據(jù)處理。本文為您介紹如何創(chuàng)建表。
前提條件
請(qǐng)確認(rèn)您已滿足如下條件:
已登錄MaxCompute客戶端。
更多登錄MaxCompute客戶端操作,請(qǐng)參見(jiàn)安裝并登錄MaxCompute本地客戶端。
已準(zhǔn)備好保存了待導(dǎo)入數(shù)據(jù)的CSV或TXT文件。
本文提供的數(shù)據(jù)文件樣例如下:
創(chuàng)建非分區(qū)表的數(shù)據(jù)文件:banking.txt。
創(chuàng)建分區(qū)表的數(shù)據(jù)文件:banking_nocreditcard.csv、banking_uncreditcard.csv和banking_yescreditcard.csv。
如果是RAM用戶創(chuàng)建表,請(qǐng)確認(rèn)阿里云賬號(hào)已經(jīng)授予RAM用戶創(chuàng)建表的權(quán)限(CreateTable)。
更多查看權(quán)限操作,請(qǐng)參見(jiàn)通過(guò)MaxCompute SQL查詢權(quán)限信息。
更多授權(quán)操作,請(qǐng)參見(jiàn)MaxCompute權(quán)限。
注意事項(xiàng)
新創(chuàng)建表的列數(shù)據(jù)類型務(wù)必與數(shù)據(jù)文件的各列數(shù)據(jù)類型保持一致,如果二者不一致,會(huì)導(dǎo)致后續(xù)導(dǎo)入數(shù)據(jù)操作執(zhí)行失敗。
步驟一:設(shè)計(jì)表
您需要根據(jù)待導(dǎo)入的數(shù)據(jù)內(nèi)容和最終需要生成的結(jié)果數(shù)據(jù),確定需要?jiǎng)?chuàng)建的表類型、結(jié)構(gòu)及各列的數(shù)據(jù)類型。
本文中提供的示例數(shù)據(jù)內(nèi)容如下,展示的是銀行貸款購(gòu)房人員的數(shù)據(jù)。
--待創(chuàng)建非分區(qū)表的數(shù)據(jù)。
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
--待創(chuàng)建分區(qū)表的數(shù)據(jù)。
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
您可以識(shí)別到數(shù)據(jù)列數(shù)、每列數(shù)據(jù)的數(shù)據(jù)類型,同時(shí)可以了解各列數(shù)據(jù)對(duì)應(yīng)的含義,為每列數(shù)據(jù)定義一個(gè)列名稱。假設(shè)基于示例數(shù)據(jù),識(shí)別到的信息如下。
類型 | 說(shuō)明 |
表的列數(shù) | 從示例數(shù)據(jù)中識(shí)別表列數(shù)信息如下:
|
表的列字段 | 從示例數(shù)據(jù)中識(shí)別表列字段信息如下:
|
數(shù)據(jù)類型 | 從示例數(shù)據(jù)中識(shí)別表列字段的數(shù)據(jù)類型信息如下:
|
步驟二:創(chuàng)建表
基于示例數(shù)據(jù),創(chuàng)建非分區(qū)表bank_data和分區(qū)表bank_data_pt,用于存儲(chǔ)業(yè)務(wù)數(shù)據(jù);創(chuàng)建非分區(qū)表result_table1和result_table2,用于存儲(chǔ)結(jié)果數(shù)據(jù)。更多表及分區(qū)的操作信息,請(qǐng)參見(jiàn)表操作和分區(qū)和列操作。創(chuàng)建表的操作流程如下:
可選:在MaxCompute客戶端,執(zhí)行如下命令切換至目標(biāo)MaxCompute項(xiàng)目。
如果您啟動(dòng)MaxCompute客戶端后已在目標(biāo)MaxCmpute項(xiàng)目中,請(qǐng)忽略該步驟。
use doc_test_dev;
切換成功顯示如下。
doc_test_dev.default>
在MaxCompute客戶端,創(chuàng)建表bank_data、bank_data_pt、result_table1和result_table2。
更多創(chuàng)建表語(yǔ)法,請(qǐng)參見(jiàn)創(chuàng)建表。
創(chuàng)建非分區(qū)表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 '聯(lián)系方式', month STRING comment '月份', day_of_week STRING comment '星期幾', duration STRING comment '持續(xù)時(shí)間', campaign BIGINT comment '本次活動(dòng)聯(lián)系的次數(shù)', pdays DOUBLE comment '與上一次聯(lián)系的時(shí)間間隔', previous DOUBLE comment '之前與客戶聯(lián)系的次數(shù)', poutcome STRING comment '之前市場(chǎng)活動(dòng)的結(jié)果', emp_var_rate DOUBLE comment '就業(yè)變化速率', cons_price_idx DOUBLE comment '消費(fèi)者物價(jià)指數(shù)', cons_conf_idx DOUBLE comment '消費(fèi)者信心指數(shù)', euribor3m DOUBLE comment '歐元存款利率', nr_employed DOUBLE comment '職工人數(shù)', fixed_deposit BIGINT comment '是否有定期存款' );
創(chuàng)建分區(qū)表bank_data_pt,并添加分區(qū),命令示例如下。
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 '聯(lián)系方式', month STRING comment '月份', day_of_week STRING comment '星期幾', duration STRING comment '持續(xù)時(shí)間', campaign BIGINT comment '本次活動(dòng)聯(lián)系的次數(shù)', pdays DOUBLE comment '與上一次聯(lián)系的時(shí)間間隔', previous DOUBLE comment '之前與客戶聯(lián)系的次數(shù)', poutcome STRING comment '之前市場(chǎng)活動(dòng)的結(jié)果', emp_var_rate DOUBLE comment '就業(yè)變化速率', cons_price_idx DOUBLE comment '消費(fèi)者物價(jià)指數(shù)', cons_conf_idx DOUBLE comment '消費(fèi)者信心指數(shù)', euribor3m DOUBLE comment '歐元存款利率', nr_employed DOUBLE comment '職工人數(shù)', 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');
創(chuàng)建非分區(qū)表result_table1,命令示例如下。
create table if not exists result_table1 ( education STRING comment '教育程度', num BIGINT comment '人數(shù)' );
創(chuàng)建非分區(qū)表result_table2,命令示例如下。
create table if not exists result_table2 ( education STRING comment '教育程度', num BIGINT comment '人數(shù)', credit STRING comment '是否有信用卡' );
步驟三:確認(rèn)創(chuàng)建結(jié)果
創(chuàng)建表后,您需要確認(rèn)表是否已創(chuàng)建成功,以及表的結(jié)構(gòu)是否正確無(wú)誤。操作流程如下:
在MaxCompute客戶端,執(zhí)行如下命令確認(rèn)表已在MaxCompute項(xiàng)目中。
show tables;
創(chuàng)建成功的表會(huì)顯示在命令返回結(jié)果中,返回結(jié)果示例如下。
ALIYUN$****:bank_data ALIYUN$****:bank_data_pt ALIYUN$****:result_table1 ALIYUN$****:result_table2
在MaxCompute客戶端,執(zhí)行如下命令確認(rèn)表的結(jié)構(gòu)正確無(wú)誤。
--查看bank_data表結(jié)構(gòu)。 desc bank_data; --查看bank_data_pt表結(jié)構(gòu)。 desc bank_data_pt; --查看bank_data_pt的分區(qū)。 show partitions bank_data_pt; --查看result_table1表結(jié)構(gòu)。 desc result_table1; --查看result_table2表結(jié)構(gòu)。 desc result_table2;
以bank_data_pt為例,返回結(jié)果如下。
desc bank_data_pt; --返回結(jié)果。 +------------------------------------------------------------------------------------+ | 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 | | 聯(lián)系方式 | | month | string | | 月份 | | day_of_week | string | | 星期幾 | | duration | string | | 持續(xù)時(shí)間 | | campaign | bigint | | 本次活動(dòng)聯(lián)系的次數(shù) | | pdays | double | | 與上一次聯(lián)系的時(shí)間間隔 | | previous | double | | 之前與客戶聯(lián)系的次數(shù) | | poutcome | string | | 之前市場(chǎng)活動(dòng)的結(jié)果 | | emp_var_rate | double | | 就業(yè)變化速率 | | cons_price_idx | double | | 消費(fèi)者物價(jià)指數(shù) | | cons_conf_idx | double | | 消費(fèi)者信心指數(shù) | | euribor3m | double | | 歐元存款利率 | | nr_employed | double | | 職工人數(shù) | | fixed_deposit | bigint | | 是否有定期存款 | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | credit | string | 是否有信用卡 | +------------------------------------------------------------------------------------+
show partitions bank_data_pt; --返回結(jié)果。 credit=no credit=unknown credit=yes
后續(xù)步驟
創(chuàng)建表并確認(rèn)后,即可將數(shù)據(jù)文件中的數(shù)據(jù)導(dǎo)入表中,請(qǐng)參見(jiàn)導(dǎo)入數(shù)據(jù)。