テーブルは、MaxComputeにデータを格納する単位です。 テーブルに基づいてMaxComputeでデータを処理する必要があります。 このトピックでは、MaxComputeでテーブルを作成する方法について説明します。
前提条件
次の要件が満たされていることを確認してください。
MaxComputeクライアントが起動されました。
MaxComputeクライアントを起動する方法の詳細については、「MaxComputeクライアントのインストールと起動」をご参照ください。
インポートするデータを含むCSVファイルまたはTXTファイルを用意します。
このトピックでは、次のサンプルファイルを使用します。
非パーティションテーブルの作成に使用されるファイル: banking.txt。
パーティションテーブルの作成に使用されるファイル: banking_nocreditcard.csv、banking_uncreditcard.csv、およびbanking_yescreditcard.csv
テーブルの作成に使用するRAMユーザーには、create TABLE権限が付与されます。 Alibaba Cloudアカウントを使用してテーブルを作成する場合は、この要件を無視してください。
RAMユーザーの権限を確認する方法の詳細については、「MaxCompute SQLを使用した権限の照会」をご参照ください。
RAMユーザーに権限を付与する方法の詳細については、「MaxCompute権限」をご参照ください。
使用上の注意
作成するテーブルの列のデータ型は、データファイルの列のデータ型と一致している必要があります。 一致しない場合、データをテーブルにインポートできません。
ステップ1: テーブルのデザイン
インポートするデータの内容と期待される結果データに基づいて、各列のテーブルタイプ、テーブル構造、およびデータ型を決定します。
このトピックで使用するサンプルファイルには、次の住宅ローンのデータが含まれています。
-- Data that is used to create a non-partitioned table.
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
-- Data that is used to create a partitioned table.
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
列の数を数え、各列のデータ型を識別し、データの各列の意味に基づいて各列に名前を付けることができます。 サンプルファイルから取得できる情報を次の表に示します。
項目 | 説明 |
列の数 | 各サンプルファイルの列数を数え、作成するテーブルの列数を決定します。
|
テーブルのフィールド | 各サンプルファイルのフィールドを特定し、作成するテーブルのフィールドを決定します。
|
データ型 | サンプルファイルの各列のデータ型を特定します。
|
ステップ2: テーブルの作成
ビジネスデータを格納するサンプルファイルに基づいて、bank_dataという名前の非パーティションテーブルとbank_data_ptという名前のパーティションテーブルを作成します。 結果データを格納するために、result_table1およびresult_table2という名前の非パーティションテーブルを作成します。 テーブルおよびパーティションに対する操作の詳細については、「テーブル操作」および「パーティションおよび列操作」をご参照ください。 テーブルを作成するには、次の操作を実行します。
オプション: MaxComputeクライアントで、次のコマンドを実行して、使用するMaxComputeプロジェクトに切り替えます。
MaxComputeクライアントの起動時にMaxComputeプロジェクトが開かれている場合は、このステップは無視してください。
use doc_test_dev;
コマンドが正常に実行されると、次の情報が返されます。
doc_test_dev.default>
MaxComputeクライアントで、bank_data、bank_data_pt、result_table1、およびresult_table2テーブルを作成します。
CREATE TABLE構文の詳細については、「テーブルの作成」をご参照ください。
非パーティションテーブルbank_dataを作成します。 例:
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 'have a credit card', housing STRING comment 'mortgagors', loan STRING comment 'have loans', contact STRING comment 'contact information', month STRING comment 'month', day_of_week STRING comment 'day of the week', duration STRING comment 'duration', campaign BIGINT comment 'number of contacts for the current campaign', pdays DOUBLE comment 'time elapsed after the last contact', previous DOUBLE comment 'number of previous contacts', poutcome STRING comment 'results of previous marketing activities', emp_var_rate DOUBLE comment 'employment variance rate', cons_price_idx DOUBLE comment 'consumer price index', cons_conf_idx DOUBLE comment 'consumer confidence index', euribor3m DOUBLE comment '3-month Euribor', nr_employed DOUBLE comment 'number of employees', fixed_deposit BIGINT comment 'have a time deposit' );
パーティションテーブルbank_data_ptを作成し、テーブルにパーティションを追加します。 例:
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 'mortgagors', loan STRING comment 'have loans', contact STRING comment 'contact information', month STRING comment 'month', day_of_week STRING comment 'day of the week', duration STRING comment 'duration', campaign BIGINT comment 'number of contacts for the current campaign', pdays DOUBLE comment 'time elapsed after the last contact', previous DOUBLE comment 'number of previous contacts', poutcome STRING comment 'results of previous marketing activities', emp_var_rate DOUBLE comment 'employment variance rate', cons_price_idx DOUBLE comment 'consumer price index', cons_conf_idx DOUBLE comment 'consumer confidence index', euribor3m DOUBLE comment '3-month Euribor', nr_employed DOUBLE comment 'number of employees', fixed_deposit BIGINT comment 'have a time deposit' )partitioned by (credit STRING comment 'have a credit card'); 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 'education level', num BIGINT comment 'number of persons' );
非パーティションテーブルresult_table2を作成します。 例:
create table if not exists result_table2 ( education STRING comment 'education level', num BIGINT comment 'number of persons', credit STRING comment 'have a credit card' );
ステップ3: テーブルの作成結果を確認する
次の操作を実行して、テーブルが作成されているかどうか、およびテーブルスキーマが正しいかどうかを確認します。
MaxComputeクライアントで、次のコマンドを実行して、作成したテーブルがMaxComputeプロジェクト内にあるかどうかを確認します。
show tables;
作成されたテーブルの名前が返されます。
ALIYUN$****:bank_data ALIYUN$****:bank_data_pt ALIYUN$****:result_table1 ALIYUN$****:result_table2
MaxComputeクライアントで、次のステートメントを実行して、テーブルスキーマが正しいかどうかを確認します。
-- View the schema of bank_data. desc bank_data; -- View the schema of bank_data_pt. desc bank_data_pt; -- View the partitions of bank_data_pt. show partitions bank_data_pt; -- View the schema of result_table1. desc result_table1; -- View the schema of result_table2. desc result_table2;
desc bank_data_ptの結果が返された; ステートメント:
desc bank_data_pt; -- The following result is returned: +------------------------------------------------------------------------------------+ | 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 | | age | | job | string | | job type | | marital | string | | marital status | | education | string | | educational level | | housing | string | | mortgagors | | loan | string | | have loans | | contact | string | | contact information | | month | string | | month | | day_of_week | string | | day of the week | | duration | string | | duration | | campaign | bigint | | number of contacts for the current campaign | | pdays | double | | time elapsed after the last contact | | previous | double | | number of previous contacts | | poutcome | string | | results of previous marketing activities | | emp_var_rate | double | | employment variation rate | | cons_price_idx | double | | consumer price index | | cons_conf_idx | double | | consumer confidence index | | euribor3m | double | | 3-month Euribor | | nr_employed | double | | number of employees | | fixed_deposit | bigint | | have a time deposit | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | credit | string | have a credit card | +------------------------------------------------------------------------------------+
show partitions bank_data_pt; -- The following result is returned: credit=no credit=unknown credit=yes
次のステップ
テーブルを作成し、テーブルスキーマが正しいことを確認したら、サンプルファイルのデータをテーブルにインポートできます。 データをインポートする方法の詳細については、「データをテーブルにインポートする」をご参照ください。