Dataphin は現在、コンピュートエンジンとして MaxCompute 2.0 を使用しています。このトピックでは、Dataphin 内で MaxCompute 2.0 がサポートするデータ型について概要を説明します。
シナリオ
MaxCompute V2.0 データ型エディションは、プロジェクトに 2020 年 4 月より前に生成されたデータが含まれておらず、MaxCompute V2.0 データ型エディションをサポートするコンポーネントに依存しているシナリオに適しています。
基本データ型
型 | 定数の例 | 説明 |
TINYINT | 1Y および -127Y | 8 ビット符号付き整数型です。 有効値の範囲は -128 ~ 127 です。 |
SMALLINT | 32767S および -100S | 16 ビット符号付き整数型です。 有効値の範囲は -32768 ~ 32767 です。 |
INT | 1000 および -15645787 | 32 ビット符号付き整数型です。 有効値の範囲は -231 ~ 231-1 です。 |
BIGINT | 100000000000L および -1L | 64 ビット符号付き整数型です。 有効値の範囲は -263+1 ~ 263 -1 です。 |
BINARY |
| 最大長が 8 MB のバイナリ数値です。 説明
|
FLOAT | 3.14F および cast(3.14159261E+7 as float) | 32 ビットのバイナリ浮動小数点型です。 説明 FLOAT データ型の計算では、コンピューターのストレージと内部計算ロジックにより、精度が低下する可能性があります。高精度の要件の場合は、FLOAT データを DECIMAL データに変換することを検討してください。 |
DOUBLE | 3.14D および 3.14159261E+7 | 64 ビットのバイナリ浮動小数点型です。 説明 DOUBLE データ型の計算では、コンピューターのストレージと内部計算ロジックにより、精度が低下する可能性があります。高精度の要件の場合は、DOUBLE データを DECIMAL データに変換することを検討してください。 |
DECIMAL(precision,scale) | 3.5BD および 99999999999.9999999BD | 10 進数に基づく正確な数値型です。
精密度とスケールが指定されていない場合、デフォルトは 説明
|
VARCHAR(n) | なし | 可変長文字型。n は長さを指定します。 有効値: 1 ~ 65535。 |
CHAR(n) | なし | 固定長文字型。n によって長さが定義されます。最大 255 文字です。長さが足りない場合は、パディングのためにスペースが追加されます。ただし、これらのスペースは比較時には考慮されません。 |
STRING | "abc"、'bcd'、"alibaba"、'inc' | 最大長が 8 MB の文字列型です。 |
DATE | DATE'2017-11-11' |
有効値の範囲は 0001-01-01 ~ 9999-12-31 です。 |
DATETIME | DATETIME'2017-11-11 00:00:00' | DATETIME 型です。 有効値の範囲は 0001-01-01 00:00:00.000 ~ 9999-12-31 23:59:59.999 で、ミリ秒単位の精度です。 |
TIMESTAMP | TIMESTAMP'2017-11-11 00:00:00.123456789' | TIMESTAMP データ型です。 有効値の範囲は 0001-01-01 00:00:00.000000000 ~ 9999-12-31 23:59:59.999999999 で、ナノ秒単位の精度です。 説明 タイムスタンプはタイムゾーンに依存しません。すべてのタイムゾーンで一貫性のある、エポック (UTC 1970-01-01 00:00:00) からの日付オフセットが格納されます。TIMESTAMP データは、ビルトイン関数を使用してタイムゾーン計算用に操作できます。たとえば、 |
TIMESTAMP_NTZ | TIMESTAMP_NTZ '2017-11-11 00:00:00.123456789' | タイムゾーンを考慮しない TIMESTAMP データ型です。 有効値の範囲は 0000-01-01 00:00:00.000000000 ~ 9999-12-31 23:59:59.999999999 です。TIMESTAMP_NTZ データ型の詳細については、「MaxCompute TIMESTAMP_NTZ データ型のドキュメント」をご参照ください。 |
BOOLEAN | True および False | BOOLEAN 型です。 有効値: True および False。 |
以下の点にご注意ください。
上記のすべてのデータ型は、NULL 値をサポートしています。
SQL 文の INT キーワードは、32 ビット整数型を指します。
-- a を 32 ビット整数に変換します。 CAST(a AS INT)
デフォルトでは、整数定数は INT 型として処理されます。たとえば、
SELECT 1 + a;
の整数定数 1 は、INT 型として処理されます。定数が INT 型の値の範囲を超えていても、BIGINT 型の値の範囲を超えていない場合は、定数は BIGINT 型として処理されます。定数が BIGINT 型の値の範囲を超えている場合は、定数は DOUBLE 型として処理されます。暗黙的な変換
一部の暗黙的な変換は無効になっています。データ型が STRING から BIGINT、STRING から DATETIME、DOUBLE から BIGINT、DECIMAL から DOUBLE、または DECIMAL から BIGINT に変換されると、精度が低下したり、エラーが発生したりする可能性があります。CAST 関数を使用して、データ型の変換を強制できます。
VARCHAR 型の定数は、STRING 型に暗黙的に変換できます。
テーブル、ビルトイン関数、ユーザー定義関数 (UDF)
MaxCompute V2.0 データ型エディションを必要とするビルトイン関数を実行できます。
UDF で定義されたデータ型は、MaxCompute V2.0 データ型エディションに基づいて解析およびオーバーロードされます。
パーティションキー列のデータ型は、STRING、VARCHAR、CHAR、TINYINT、SMALLINT、INT、または BIGINT にすることができます。
STRING 型の定数は連結をサポートしています。2 つ以上の文字列は、自動的に 1 つの文字列に連結されます。たとえば、
select 'abc' 'efg' 'ddt';
を実行すると、戻り値はabcefgddt
になります。定数が DECIMAL 型のフィールドに挿入される場合、定数の式は定数定義の形式に準拠している必要があります。例: 次のサンプルコードの
3.5BD
INSERT INTO test_tb(a) VALUES (3.5BD)
DATETIME 値にはミリ秒は含まれません。ミリ秒単位の精度で時間形式を指定するには、
-dfp
パラメーターをトンネルコマンドで使用します (tunnel upload -dfp 'yyyy-MM-dd HH:mm:ss.SSS'
など)。詳細については、「トンネルコマンドのドキュメント」をご参照ください。
複合データ型
データ型 | 定義 | コンストラクター |
ARRAY |
|
|
MAP |
|
|
STRUCT |
|
|