edit-icon download-icon

SQL

最終更新日: Jun 08, 2018

ここではSQL 構文の利用に関するいくつかの特別な注意事項について説明します。

注意

  • MaxCompute SQL はトランザクション、索引、および更新/削除操作をサポートしていません。また、MaxCompute SQL 構文は Oracle や MySQL と異なり、ユーザーは他のデータベースの SQL 文をMaxCompute にシームレスに移行することはできません。

  • MaxCompute ジョブをサブミットした後、ジョブはキューに入れられ、実行がスケジュールされます。その結果、数秒から数分の時間がかかります。 MaxCompute はバッチ処理に適しています。 1 つのバッチ処理ジョブで大量のデータを処理できます。

Select

  • “group by”文のキーは、入力表の列名にすることもできますし、入力表の列で構成することもできますが、Select文の出力列にすることはできません。
  1. select substr(col2, 2) from tbl group by substr(col2, 2); -- Yes, the key of group by can be the expression consisted of input table column;
  2. select col2 from tbl group by substr(col2, 2); -- No, the key of group by is not in the column of Select statement;
  3. select substr(col2, 2) as c from tbl group by c; -- No, the key of group by can not be the column alias, i.e., the output column of Select statement;

制限の理由:通常のSQL解析では、「グループ化」操作は「選択」操作の前に実行されるため、「グループ化」は入力表の列または式のみをキーとして認識する仕様になっています。

  • “oder”ステートメントは”limit”と組み合わせて使用する必要があります。
  • “distribute”ステートメントは”sort”の前に追加する必要があります。
  • “order by / sort by / distribute by”のキーは、”select”文の出力列、つまり列の別名でなければなりません。
  1. select col2 as c from tbl order by col2 limit 100 -- No, the key of order by is not the output column (column alias) of Select statement.
  2. select col2 from tbl order by col2 limit 100; -- Yes, use column name as the alases if the output column of Select statement has no alias.

制限の理由:通常のSQL解析では、操作による並べ替え/並べ替え/並べ替えが「選択」操作の後に実行されます。したがって、SELECTステートメントの出力列をキーとして認識する仕様になっています。

Insert

  • 指定したパーティションにデータを挿入する場合、「select」リストのパーティション列は使用できません。
  1. insert overwrite table sale_detail_insert partition (sale_date='2013', region='china')
  2. select shop_name, customer_id, total_price, sale_date, region from sale_detail;
  3. -- Return error; sale_date and region are partition columns, which are not allowed in Select statement in static partition.
  • 動的パーティションを挿入する場合、動的パーティションの列が「select」リストになければなりません。
  1. insert overwrite table sale_detail_dypart partition (sale_date='2013', region)
  2. select shop_name,customer_id,total_price from sale_detail;
  3. -- Failed, to insert the dynamic partition, the dynamic partition column must be in Select list.

Join

  • MaxCompute SQLは、以下の結合操作タイプをサポートしています:{LEFT OUTER | RIGHT OUTER | FULL OUTER | INNER} JOIN。
  • 現在、MaxCompute SQLは最大16の同時結合操作をサポートしています。
  • 6つの小さなテーブルまでのmapjoinをサポートしています。

その他

  • MaxCompute SQLは現在、最大128の並行結合操作をサポートしています。
  • 最大128の同時挿入/書換えをサポートします。