MaxCompute では、以下の 3 つのデータの型エディションがサポートされています:MaxCompute V1.0、MaxCompute V2.0、および Hive 互換。各エディションは、プロジェクトレベルのパラメーターのセットによって制御されます。本トピックでは、各エディションの概要、使用タイミング、およびアクティブなエディションの確認・変更方法について説明します。
データの型エディションの選択
DataWorks コンソールでワークスペースを作成する際に、データの型バージョンを直接選択できます。
アクティブなデータの型エディションは、以下の項目に影響を与えます:
テーブルで利用可能なデータの型
DML ステートメントおよびビルトイン関数の動作
MaxCompute に接続される開発コンポーネントの互換性
エディションを設定する前に、MaxCompute V2.0 データの型エディションと他のデータの型エディションの違いをご参照ください。影響範囲を事前に理解することが重要です。
以下の表に、各エディションの使用タイミングをまとめています:
| エディション | 使用タイミング |
|---|---|
| MaxCompute V1.0 | プロジェクトが初期の MaxCompute プロジェクトであり、依存コンポーネントが MaxCompute V2.0 データの型エディションをサポートしていない場合。 |
| MaxCompute V2.0 | プロジェクトに 2020 年 4 月以前に生成されたデータが含まれず、すべての依存コンポーネントが MaxCompute V2.0 データの型エディションをサポートしている場合。 |
| Hive 互換 | プロジェクトが Hadoop から移行されたものであり、依存コンポーネントが MaxCompute V2.0 データの型エディションをサポートしている場合。 |
データの型エディションのリファレンス
各エディションは、以下の 3 つのプロジェクトパラメーターの固定組み合わせに対応しています:
| パラメーター | 説明 | 有効な値 |
|---|---|---|
odps.sql.type.system.odps2 | MaxCompute V2.0 データの型エディションの有効化または無効化。 | true または false |
odps.sql.decimal.odps2 | MaxCompute V2.0 における DECIMAL 型の有効化または無効化。 | true または false |
odps.sql.hive.compatible | Hive 互換データの型エディションの有効化または無効化。Hive 互換エディションでは、一部のデータの型および SQL ステートメントが Hive と互換になります。 | true または false |
MaxCompute V1.0 データの型エディション
setproject odps.sql.type.system.odps2=false; -- MaxCompute V2.0 データの型エディションを無効化します。
setproject odps.sql.decimal.odps2=false; -- MaxCompute V2.0 における DECIMAL 型を無効化します。
setproject odps.sql.hive.compatible=false; -- Hive 互換データの型エディションを無効化します。MaxCompute V2.0 データの型エディション
setproject odps.sql.type.system.odps2=true; -- MaxCompute V2.0 データの型エディションを有効化します。
setproject odps.sql.decimal.odps2=true; -- MaxCompute V2.0 における DECIMAL 型を有効化します。
setproject odps.sql.hive.compatible=false; -- Hive 互換データの型エディションを無効化します。Hive 互換データの型エディション
setproject odps.sql.type.system.odps2=true; -- MaxCompute V2.0 データの型エディションを有効化します。
setproject odps.sql.decimal.odps2=true; -- MaxCompute V2.0 における DECIMAL 型を有効化します。
setproject odps.sql.hive.compatible=true; -- Hive 互換データの型エディションを有効化します。各エディションと互換性を持つ Alibaba Cloud サービスおよびコンポーネントについては、「コンポーネントとデータの型の互換性」をご参照ください。
プロジェクトのデータの型エディションの確認
MaxCompute クライアントで、次のコマンドを実行します:
setproject;出力結果から、odps.sql.type.system.odps2、odps.sql.decimal.odps2、および odps.sql.hive.compatible の値を確認し、アクティブなエディションを特定します。
プロジェクトのデータ型エディションを変更する
データの型エディションを変更するには、プロジェクトオーナーであるか、Super_Administrator ロールを保持している必要があります。
次のコマンドを、MaxCompute クライアント、DataWorks コンソール、または MaxCompute Studio で実行します:
-- プロジェクトのデータの型エディションを確認します。
setproject;
-- MaxCompute V2.0 データの型エディションを有効化または無効化します。
setproject odps.sql.type.system.odps2=true/false;
-- MaxCompute V2.0 における DECIMAL 型を有効化または無効化します。
setproject odps.sql.decimal.odps2=true/false;
-- Hive 互換データの型エディションを有効化または無効化します。
setproject odps.sql.hive.compatible=true/false;DataWorks コンソールの DataStudio の ODPS SQL ノードでは、setproject コマンドを単体で実行できません。SELECT または INSERT SQL ステートメントとともに実行してください。
エディション切替時の互換性問題への対応
問題:プロジェクトで V2.0 を使用していますが、一部のコンポーネントが V1.0 を必要としています。
オプション:
プロジェクトレベルのエディションを MaxCompute V1.0 に変更します。
プロジェクトを V2.0 のまま維持し、該当するコンポーネントに対してセッションレベルのオーバーライドを設定します:
set odps.sql.type.system.odps2=false;説明このコマンドは、同一セッション内の他のコマンドとともに実行してください。また、コマンドは小文字で記述する必要があります。
問題:一部の SQL ステートメントでは V1.0 が必要ですが、他のステートメントでは `current_timestamp` などの V2.0 の機能に依存しています。
オプション:
V1.0 に依存するステートメントを別セッションに分割し、そのセッションのデータの型エディションを V1.0 に設定します。
SQL ステートメントを再構築して、バージョン依存性を除去します。
問題:プロジェクトは当初 V2.0 を使用していましたが、V1.0 へ戻す必要があります。
切り替え前に、V2.0 データの型を使用するテーブルの該当カラムを変換してください:
TINYINT、SMALLINT、または INT → BIGINT
CHAR または VARCHAR → STRING
あるいは、V1.0 データの型を使用する新規テーブルを作成し、CAST 関数を用いて V2.0 テーブルからデータを移行します。