すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:テーブルの作成

最終更新日:Nov 22, 2024

テーブルは、MaxComputeにデータを格納する単位です。 テーブルに基づいてMaxComputeでデータを処理する必要があります。 このトピックでは、MaxComputeでテーブルを作成する方法について説明します。

前提条件

次の要件が満たされていることを確認してください。

  • MaxComputeクライアントが起動されました。

    MaxComputeクライアントを起動する方法の詳細については、「MaxComputeクライアントのインストールと起動」をご参照ください。

  • インポートするデータを含むCSVファイルまたはTXTファイルを用意します。

    このトピックでは、次のサンプルファイルを使用します。

  • テーブルの作成に使用する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

列の数を数え、各列のデータ型を識別し、データの各列の意味に基づいて各列に名前を付けることができます。 サンプルファイルから取得できる情報を次の表に示します。

項目

説明

列の数

各サンプルファイルの列数を数え、作成するテーブルの列数を決定します。

  • 非パーティションテーブルの作成に使用されるサンプルファイルには、21列が含まれます。 サンプルファイルに基づいて21個の列を含む非パーティションテーブルを作成できます。

    説明

    テーブルの列数がサンプルファイルの列数を超える場合、テーブルの追加の列にはNULLが入力されます。 テーブルの列数がサンプルファイルの列数より少ない場合、サンプルファイルの余分なデータは破棄されます。

  • パーティションテーブルの作成に使用される各サンプルファイルには、20個の列が含まれます。 サンプルファイルに基づいて、パーティションキー列として1つの列を持つ21列を含むパーティションテーブルを作成できます。 テーブルを作成するときにパーティションを定義する必要があります。

テーブルのフィールド

各サンプルファイルのフィールドを特定し、作成するテーブルのフィールドを決定します。

  • 非パーティションテーブルのフィールド:

    • age: 年齢

    • job: ジョブタイプ

    • marital: 婚姻状況

    • marital: 教育レベル

    • credit: クレジットカードを持っている

    • housing: mortgagors

    • loan: ローンを持っている

    • contact: 連絡先情報

    • month: 月

    • day_of_week: 曜日

    • duration: duration

    • campaign: 現在のキャンペーンの連絡先の数

    • pdays: 最後の連絡後の経過時間

    • previous: 以前の連絡先の数

    • poutcome: 以前のマーケティング活動の結果

    • emp_var_rate: 雇用変動率

    • cons_price_idx: 消費者物価指数

    • cons_conf_idx: 消費者信頼感指数

    • euribor 3m: 3か月ユーロ銀行間取引金利 (Euribor)

    • nr_employed: 従業員の数

    • fixed_deposit: タイムデポジットがあります

  • パーティションテーブルのフィールド:

    • age: 年齢

    • job: ジョブタイプ

    • marital: 婚姻状況

    • education: 教育レベル

    • housing: mortgagors

    • loan: ローンを持っている

    • contact: 連絡先情報

    • month: 月

    • day_of_week: 曜日

    • duration: duration

    • campaign: 現在のキャンペーンの連絡先の数

    • pdays: 最後の連絡後の経過時間

    • previous: 以前の連絡先の数

    • poutcome: 以前のマーケティング活動の結果

    • emp_var_rate: 雇用変動率

    • cons_price_idx: 消費者物価指数

    • cons_conf_idx: 消費者信頼感指数

    • euribor 3m: 3ヶ月のEuribor

    • nr_employed: 従業員の数

    • fixed_deposit: タイムデポジットがあります

    • credit: クレジットカードを持っている (パーティションキー列として使用)

データ型

サンプルファイルの各列のデータ型を特定します。

  • age: BIGINT

  • job: STRING

  • marital: STRING

  • education: STRING

  • credit: 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

ステップ2: テーブルの作成

ビジネスデータを格納するサンプルファイルに基づいて、bank_dataという名前の非パーティションテーブルとbank_data_ptという名前のパーティションテーブルを作成します。 結果データを格納するために、result_table1およびresult_table2という名前の非パーティションテーブルを作成します。 テーブルおよびパーティションに対する操作の詳細については、「テーブル操作」および「パーティションおよび列操作」をご参照ください。 テーブルを作成するには、次の操作を実行します。

  1. オプション: MaxComputeクライアントで、次のコマンドを実行して、使用するMaxComputeプロジェクトに切り替えます。

    MaxComputeクライアントの起動時にMaxComputeプロジェクトが開かれている場合は、このステップは無視してください。

    use doc_test_dev;

    コマンドが正常に実行されると、次の情報が返されます。

    doc_test_dev.default>
  2. 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: テーブルの作成結果を確認する

次の操作を実行して、テーブルが作成されているかどうか、およびテーブルスキーマが正しいかどうかを確認します。

  1. MaxComputeクライアントで、次のコマンドを実行して、作成したテーブルがMaxComputeプロジェクト内にあるかどうかを確認します。

    show tables;

    作成されたテーブルの名前が返されます。

    ALIYUN$****:bank_data
    ALIYUN$****:bank_data_pt
    ALIYUN$****:result_table1
    ALIYUN$****:result_table2
  2. 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

次のステップ

テーブルを作成し、テーブルスキーマが正しいことを確認したら、サンプルファイルのデータをテーブルにインポートできます。 データをインポートする方法の詳細については、「データをテーブルにインポートする」をご参照ください。