Hologres のデータの型は PostgreSQL のデータの型と互換があります。このトピックでは、Hologres がサポートするデータの型および配列の型について説明します。
データの型
Hologres は PostgreSQL のデータの型の一部をサポートしています。次の表に、サポートされているデータの型を示します。
|
名前 |
サポート対象バージョン |
ストレージサイズ |
説明 |
値の範囲 |
例 |
|
INTEGER (エイリアス INT または INT4) |
すべての Hologres バージョン |
4 バイト |
一般的な整数 |
-2147483648 ~ +2147483647 |
2147483647 |
|
BIGINT (エイリアス INT8) |
すべての Hologres バージョン |
8 バイト |
広範囲の整数 |
-9223372036854775808 ~ +9223372036854775807 |
9223372036854775807 |
|
BOOLEAN (エイリアス BOOL) |
すべての Hologres バージョン |
1 バイト |
ブール値 |
|
True |
|
REAL (エイリアス FLOAT4) |
すべての Hologres バージョン |
4 バイト |
可変精度、不正確。 説明
PostgreSQL エコシステムでは、精度が指定されていない FLOAT はデフォルトで DOUBLE PRECISION (FLOAT8) になります。 |
小数点以下 6 桁の精度。 |
123.123 |
|
DOUBLE PRECISION (エイリアス FLOAT8) |
すべての Hologres バージョン |
8 バイト |
可変精度、不正確。 |
小数点以下 15 桁の精度。 |
123.123456789123 |
|
TEXT |
すべての Hologres バージョン |
可変長 |
可変長文字列。TEXT は VARCHAR(n) や CHAR(n) よりも柔軟性に優れています。VARCHAR(n) や CHAR(n) の代わりに TEXT を使用してください。 |
なし |
abcdefg |
|
TIMESTAMP WITH TIME ZONE (エイリアス TIMESTAMPTZ) |
すべての Hologres バージョン |
8 バイト |
タイムゾーン付きタイムスタンプ。ミリ秒精度で格納されます。 説明
標準的な PostgreSQL では、 |
紀元前 4713 年 ~ 紀元後 294276 年 |
2004-10-19 10:23:54+02 |
|
DECIMAL (エイリアス NUMERIC) |
すべての Hologres バージョン |
可変長 |
PRECISION および SCALE を指定する必要があります。
|
最大 38 桁(整数部と小数部の合計) |
DECIMAL(38, 10) |
|
DATE |
Hologres V0.8 で追加 |
4 バイト |
単位は 1 日です。 |
紀元前 4713 年 ~ 紀元後 5874897 年 |
2004-10-19 |
|
TIMESTAMP |
Hologres V0.8 で追加 |
8 バイト |
タイムゾーンなしのタイムスタンプ。マイクロ秒精度で格納されます。 |
紀元前 4713 年 ~ 紀元後 5874897 年 |
2020-01-01 01:01:01.123456 |
|
CHAR(n) |
Hologres V0.8 で追加 |
固定長文字、最大 n 文字。 |
ストレージサイズは 1 GB を超えません。 |
固定長文字列。 |
|
|
VARCHAR(n) |
Hologres V0.8 で追加 |
可変長、最大 n 文字。 |
ストレージサイズは 1 GB を超えません。 |
文字数が制限された可変長文字列。 |
abcdefg |
|
SERIAL (自動インクリメントシーケンス) |
Hologres V0.8 で追加 |
詳細については、「自動インクリメントシーケンス」をご参照ください。 |
なし |
なし |
なし |
|
SMALLINT |
Hologres V0.9 で追加 |
2 バイト |
小範囲の整数 |
-32768 ~ +32767 |
32767 |
|
JSON および JSONB |
Hologres V0.9 で追加 |
詳細については、「JSON の型」をご参照ください。 |
なし |
なし |
なし |
|
BYTEA |
Hologres V0.9 で追加 |
可変長。詳細については、「バイナリデータの型」をご参照ください。 |
可変長バイナリ文字列。 |
ストレージサイズは 1 GB を超えません。 |
なし |
|
RoaringBitmap |
Hologres V0.10 で追加 |
可変長。詳細については、「RoaringBitmap 関数」をご参照ください。 |
定数配列ビットマップ操作をサポートする効率的な INT 配列。 |
なし |
なし |
|
RoaringBitmap64 |
Hologres V3.1 で追加 |
可変長。詳細については、「RoaringBitmap 関数」をご参照ください。 |
定数配列ビットマップ操作をサポートする効率的な BIGINT 配列。 |
なし |
なし |
|
BIT(n) |
Hologres V0.9 で追加 |
n ビットのバイナリ文字列 |
固定長バイナリ文字列。 |
ストレージサイズは 1 GB を超えません。 |
なし |
|
VARBIT(n) |
Hologres V0.9 |
可変長、最大 n ビット |
ビット数が制限されたバイナリ文字列 |
ストレージサイズは 1 GB を超えません。 |
なし |
|
INTERVAL |
すべての Hologres バージョン |
16 バイト |
なし |
-178000000 年 ~ 178000000 年 |
interval '1 year' |
|
TIMETZ |
Hologres V0.9 で追加 |
12 バイト |
タイムゾーン付き時刻(マイクロ秒精度)。 |
00:00:00 ~ 24:00:00 |
12:00:00+08 |
|
TIME |
Hologres V0.9 で追加 |
8 バイト |
タイムゾーンなしの時刻(マイクロ秒精度)。 |
00:00:00 ~ 24:00:00 |
12:00:00 |
|
INET |
Hologres V0.9 で追加 |
詳細については、「ネットワークアドレスタイプ」をご参照ください。 |
INET は、IPv4 または IPv6 ホストアドレスを単一のデータドメインに格納します。 |
なし |
192.168.100.128/25 |
|
MONEY |
Hologres V0.9 で追加 |
8 バイト。詳細については、「通貨の型」をご参照ください。 |
money 型は、固定小数点精度で通貨金額を格納します。 |
-92233720368547758.08 ~ +92233720368547758.07 |
12.34 USD |
|
OID |
Hologres V0.9 で追加 |
4 バイト |
数値オブジェクト識別子。 |
なし |
1024 |
|
UUID |
Hologres V0.9 で追加 |
16 バイト |
ユニバーサルに一意な識別子(固定長 128 ビット)。 説明
uuid-ossp で実装されているアルゴリズムは現在サポートされていません。 |
00000000-0000-0000-0000-000000000000 ~ ffffffff-ffff-ffff-ffff-ffffffffffff |
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 |
次の SQL 文は、TIMESTAMP WITH TIME ZONE、DATE、および DECIMAL の例を示しています。
CREATE TABLE test_data_type (
tswtz_column TIMESTAMP WITH TIME ZONE,
date_column date,
decimal_column decimal(38, 10),
char_column char(20),
varchar_volumn varchar(225)
);
INSERT INTO test_data_type
VALUES ('2004-10-19 08:08:08', '2004-10-19', 123.456, 'abcd', 'a');
SELECT * FROM test_data_type;
tswtz_column | date_column | decimal_column | char_column | varchar_volumn
------------------------+-------------+----------------+----------------------+----------------
2004-10-19 08:08:08+08 | 2004-10-19 | 123.4560000000 | abcd | a
(1 row)
次の SQL 文は、BIT、VARBIT、および BYTEA の例を示しています。
//BIT, VARBIT
CREATE TABLE test (a BIT(3), b BIT VARYING(5));
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10', B'101');
ERROR: bit string length 2 does not match type bit(3)
INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;
a | b
-----+-----
101 | 00
100 | 101
//BYTEA
SET bytea_output = 'escape';
SELECT 'abc \153\154\155 \052\251\124'::bytea;
bytea
----------------
abc klm *\251T
RESET bytea_output; -- 'hex' by default
SELECT 'abc \153\154\155 \052\251\124'::bytea;
bytea
--------------------------
\x616263206b6c6d202aa954
(1 row)
配列の型
Hologres は次の一次元配列のみをサポートしています。
-
int4[]
-
int8[]
-
float4[]
-
float8[]
-
boolean[]
-
text[]
使用例:
-
配列を宣言します。
CREATE TABLE array_example( int4_array int4[], int8_array int8[], float4_array float4[], float8_array float8[], boolean_array boolean[], text_array text[]); -
配列を挿入します。
-
ARRAY キーワードを使用します。
INSERT INTO array_example( int4_array, int8_array, float4_array, float8_array, boolean_array, text_array) VALUES (ARRAY[1, 2, 3, 4], ARRAY[1, 2, 3, 4], ARRAY[1.0, 2.0], ARRAY[1.0, 2.0, 3.0], ARRAY[true, true, false], ARRAY['foo1', 'foo2', 'foo3']); -
{}式を使用します。INSERT INTO array_example( int4_array, int8_array, float4_array, float8_array, boolean_array, text_array) VALUES ('{1, 2, 3, 4}', '{1, 2, 3, 4}', '{1.0, 2.0}', '{1.0, 2.0, 3.0}', '{true, true, false}', '{"foo1", "foo2", "foo3"}');
-
-
配列をクエリします。
-
配列内の単一要素をクエリします。
SELECT int4_array[3] FROM array_example; -
配列内の複数要素をクエリします。
SELECT int4_array[1:2] FROM array_example;
-
MaxCompute と Hologres 間のデータの型のマッピング
MaxCompute 外部テーブルを作成する際の MaxCompute と Hologres のデータの型のマッピングを次の表に示します。
|
MaxCompute のデータの型 |
Hologres のデータの型 |
サポート対象マッピングバージョン |
説明 |
|
JSON |
JSONB |
Hologres V4.1 で追加 |
|
|
TEXT |
すべての Hologres バージョン |
なし |
|
BIGINT |
INT8 |
すべての Hologres バージョン |
なし |
|
INT |
|
すべての Hologres バージョン |
なし |
|
FLOAT |
|
すべての Hologres バージョン |
なし |
|
DOUBLE |
|
すべての Hologres バージョン |
なし |
|
BOOLEAN |
BOOL |
すべての Hologres バージョン |
なし |
|
DATETIME |
TIMESTAMP WITH TIME ZONE |
すべての Hologres バージョン |
MaxCompute DATETIME は日時型で、中国標準時 (UTC + 08:00) をシステム標準時として使用します。有効値は 0000 年 1 月 1 日から 9999 年 12 月 31 日までで、ミリ秒精度です。 |
|
DECIMAL |
NUMERIC |
すべての Hologres バージョン |
MaxCompute DECIMAL の精度が指定されていない場合、デフォルトは (38,18) になります。IMPORT FOREIGN SCHEMA を使用してテーブルを作成すると、システムが自動的に精度を変換します。 |
|
TIMESTAMP |
TIMESTAMP WITH TIME ZONE |
Hologres V0.8 で追加 |
|
|
CHAR(n) |
デフォルトでは CHAR(n) にマッピングされます。 Hologres は MaxCompute CHAR(n) を TEXT にマッピングすることもサポートしています。パラメーター |
Hologres V0.8 で追加 |
MaxCompute CHAR(n) は固定長文字型で、n は長さです。最大値は 255 です。長さが不足している場合は、スペースで埋められます。 |
|
VARCHAR(n) |
デフォルトでは VARCHAR(n) にマッピングされます。 Hologres は MaxCompute VARCHAR(n) を TEXT にマッピングすることもサポートしています。パラメーター |
Hologres V0.8 で追加 |
MaxCompute VARCHAR(n) は可変長文字型で、n は長さです。有効値は 1 ~ 65535 です。 |
|
DATE |
DATE |
Hologres V0.8 で追加 |
なし |
|
SMALLINT |
デフォルトでは INT2 にマッピングされます。 Hologres は MaxCompute SMALLINT を INT8 にマッピングすることもサポートしています。パラメーター |
すべての Hologres バージョン (V0.8 では INT4、V0.9 では INT2) |
なし |
|
TINYINT |
デフォルトでは INT2 にマッピングされます。 Hologres は MaxCompute TINYINT を INT8 にマッピングすることもサポートしています。パラメーター |
すべての Hologres バージョン (V0.8 では INT4、V0.9 では INT2) |
なし |
|
CHAR |
サポートされていません |
サポートされていません |
なし |
|
ARRAY<INT> |
INT4[] |
Hologres V0.8 で追加 |
なし |
|
ARRAY<BIGINT> |
INT8[] |
Hologres V0.8 で追加 |
なし |
|
ARRAY<FLOAT> |
FLOAT4[] |
Hologres V0.8 で追加 |
なし |
|
ARRAY<DOUBLE> |
FLOAT8[] |
Hologres V0.8 で追加 |
なし |
|
ARRAY<BOOLEAN> |
BOOLEAN[] |
Hologres V0.8 で追加 |
なし |
|
ARRAY<STRING> |
TEXT[] |
Hologres V0.8 で追加 |
なし |
|
BINARY |
BYTEA |
Hologres V0.9 で追加 |
なし |
|
ARRAY<TINYINT> |
サポートされていません |
サポートされていません |
なし |
|
ARRAY<SMALLINT> |
サポートされていません |
サポートされていません |
なし |
MaxCompute データテーブルに Hologres でサポートされていないデータの型のフィールドが含まれている場合でも、そのフィールドにアクセスしないクエリであれば、サポートされているフィールドを引き続きクエリできます。
Blink/Flink と Hologres 間のデータの型のマッピング
Blink/Flink と Hologres 間のデータの型のマッピングを次の表に示します。
Binlog ソーステーブルはデータの型の一部のみをサポートしています。詳細については、「Flink/Blink を使用した Hologres Binlog のリアルタイム消費」をご参照ください。
|
Flink のデータの型 |
Hologres のデータの型 |
サポート対象 Hologres バージョン |
サポート対象 Flink バージョン |
|
INT |
|
すべての Hologres バージョン |
すべてのバージョン |
|
BIGINT |
INT8 |
すべての Hologres バージョン |
すべてのバージョン |
|
VARCHAR |
TEXT |
すべての Hologres バージョン |
すべてのバージョン |
|
DOUBLE |
|
すべての Hologres バージョン |
すべてのバージョン |
|
BOOLEAN |
BOOL |
すべての Hologres バージョン |
すべてのバージョン |
|
DECIMAL |
NUMERIC 説明
CTAS を使用してデータを Hologres に同期する場合:
詳細については、「MySQL テーブルの bigint unsigned プライマリキーが Flink カタログ登録時に decimal になるが、CTAS で Hologres に同期すると text になるのはなぜですか?」をご参照ください。 |
すべての Hologres バージョン |
すべてのバージョン |
|
DATE |
DATE |
Hologres V0.8 で追加 |
すべてのバージョン |
|
TIMESTAMP |
TIMESTAMP WITH TIME ZONE |
すべての Hologres バージョン |
すべてのバージョン |
|
FLOAT |
|
すべての Hologres バージョン |
すべてのバージョン |
|
TIME |
TIME および TIMETZ |
すべての Hologres バージョン 説明
Hologres V2.1.24 以降、Fixed Plan による SQL 実行の高速化 で TIME および TIMETZ 型がサポートされています。 |
|
|
VARCHAR |
JSONB |
Hologres V0.10 で追加 |
|
|
VARCHAR |
JSON |
Hologres V0.9 で追加 |
|
|
BYTES |
RoaringBitmap |
Hologres V0.10 で追加 |
|
|
VARCHAR |
GEOMETRY および GEOGRAPHY |
すべての Hologres バージョン 説明
Hologres V2.1 以降、Fixed Plan による SQL 実行の高速化 で GEOMETRY および GEOGRAPHY データの書き込みがサポートされています。 |
|
|
TINYINT |
SMALLINT |
すべての Hologres バージョン |
|
|
SMALLINT |
SMALLINT |
すべての Hologres バージョン |
|
|
ARRAY<INT> |
int4[] |
Hologres V0.8 で追加 |
|
|
ARRAY<BIGINT> |
int8[] |
Hologres V0.8 で追加 |
|
|
ARRAY<FLOAT> |
float4[] |
Hologres V0.8 で追加 |
|
|
ARRAY<DOUBLE> |
float8[] |
Hologres V0.8 で追加 |
|
|
ARRAY<BOOLEAN> |
boolean[] |
Hologres V0.8 で追加 |
|
|
ARRAY<VARCHAR> |
TEXT[] |
Hologres V0.8 で追加 |
|
|
ARRAY<VARCHAR> |
VARCHAR[] |
Hologres V0.8 で追加 |
|
|
CHAR |
サポートされていません |
サポートされていません |
サポートされていません |
|
BINARY |
サポートされていません |
サポートされていません |
サポートされていません |
MySQL と Hologres 間のデータの型のマッピング
MySQL と Hologres 間のデータの型のマッピングを次の表に示します。詳細については、「MySQL から Hologres への移行」をご参照ください。
|
MySQL のデータの型 |
Hologres のデータの型 |
|
BIGINT |
BIGINT |
|
BINARY(n) |
BYTEA |
|
BIT |
BOOLEAN |
|
|
|
DATE |
DATE |
|
DATETIME |
TIMESTAMP [WITHOUT TIME ZONE] |
|
|
|
DOUBLE |
DOUBLE PRECISION |
|
FLOAT |
REAL |
|
|
|
MEDIUMINT |
INTEGER |
|
NUMERIC(p,s) |
NUMERIC(p,s) |
|
SMALLINT |
SMALLINT |
|
BYTEA |
|
TINYINT |
SMALLINT |
|
TEXT |
|
TIME |
TIME [WITHOUT TIME ZONE] |
|
TIMESTAMP |
TIMESTAMP [WITH TIME ZONE] |
|
BYTEA |
|
VARCHAR(n) |
VARCHAR(n) |
|
VARCHAR(max) |
TEXT |
DLF と Hologres 間のデータの型のマッピング
|
DLF のデータの型 |
Hologres のデータの型 |
|
TINYINT |
SMALLINT |
|
SMALLINT |
SMALLINT |
|
INT |
INT |
|
BIGINT |
BIGINT |
|
BOOLEAN |
BOOLEAN |
|
FLOAT |
REAL |
|
DOUBLE |
DOUBLE PRECISION |
|
DATE |
DATE |
|
TIMESTAMP |
TIMESTAMP WITHOUT TIME ZONE |
|
STRING |
TEXT |
|
BINARY |
BYTEA |
|
DECIMAL(m,n) |
NUMERIC(m,n) |
|
VARCHAR(n) |
CHARACTER VARYING(n) |
|
CHAR(n) |
CHARACTOR(n) |
|
ARRAY<type> |
ARRAY<hologres_data_type> サポートされる型:
|
Hive と Hologres 間のデータの型のマッピング
|
Hive のデータの型 |
Hologres のデータの型 |
|
TINYINT |
SMALLINT |
|
SMALLINT |
SMALLINT |
|
INT |
INT |
|
BIGINT |
BIGINT |
|
FLOAT |
REAL |
|
DOUBLE |
DOUBLE PRECISION |
|
DECIMAL |
NUMERIC |
|
NUMERIC |
NUMERIC |
|
DATE |
DATE |
|
TIMESTAMP |
TIMESTAMP WITHOUT TIME ZONE |
|
STRING |
TEXT |
|
VARCHAR |
VARCHAR |
|
CHAR |
CHAR |
|
BINARY |
BYTEA |
|
BOOL |
BOOLEAN |
|
ARRAY<type> |
ARRAY<hologres_data_type> サポートされる型:
|
Hudi と Hologres 間のデータの型のマッピング
この機能は Hologres V1.3 以降でサポートされています。
|
Hudi のデータの型 |
Hologres のデータの型 |
|
IntegerType |
INT |
|
LongType |
BIGINT |
|
FloatType |
REAL |
|
DoubleType |
DOUBLE PRECISION |
|
DecimalType |
NUMERIC |
|
TimestampType |
TIMESTAMP WITHOUT TIME ZONE |
|
DateType |
DATE |
|
YearMonthIntervalType |
サポートされていません |
|
DayTimeIntervalType |
サポートされていません |
|
StringType |
TEXT |
|
VarcharType |
サポートされていません |
|
CharType |
サポートされていません |
|
BooleanType |
BOOL |
|
BinaryType |
BYTEA |
|
ByteType |
サポートされていません |
|
ShortType |
サポートされていません |
|
ArrayType(elementType, containsNull) |
ARRAY<hologres_data_type> サポートされる型:
|
Delta Lake と Hologres 間のデータの型のマッピング
この機能は Hologres V1.3 以降でサポートされています。
|
Delta Lake のデータの型 |
Hologres のデータの型 |
|
TINYINT |
SMALLINT |
|
SMALLINT |
SMALLINT |
|
INT |
INT |
|
BIGINT |
BIGINT |
|
FLOAT |
REAL |
|
DOUBLE |
DOUBLE PRECISION |
|
DECIMAL(p,s) |
NUMERIC |
|
TIMESTAMP |
TIMESTAMP WITHOUT TIME ZONE |
|
DATE |
DATE |
|
INTERVAL intervalQualifier |
サポートされていません |
|
STRING |
TEXT |
|
BOOLEAN |
BOOLEAN |
|
BINARY |
BYTEA |
|
ARRAY<elementType> |
ARRAY<hologres_data_type> サポートされる型:
|
Paimon と Hologres 間のデータの型のマッピング
|
Paimon のデータの型 |
Hologres のデータの型 |
|
TINYINT |
SMALLINT |
|
SMALLINT |
SMALLINT |
|
INT |
INT |
|
BIGINT |
BIGINT |
|
FLOAT |
REAL |
|
DOUBLE |
DOUBLE PRECISION |
|
DECIMAL(p,s) |
DECIMAL |
|
TIMESTAMP |
TIMESTAMP WITHOUT TIME ZONE |
|
DATE |
DATE |
|
CHAR |
CHAR |
|
VARCHAR |
VARCHAR |
|
BINARY |
BYTEA |
|
ARRAY |
ARRAY<hologres_data_type> サポートされる型:
|
Iceberg と Hologres 間のデータの型のマッピング
|
Iceberg のデータの型 |
Hologres のデータの型 |
|
BOOLEAN |
BOOLEAN |
|
INT |
INTEGER |
|
LONG |
BIGINT |
|
FLOAT |
REAL |
|
DOUBLE |
DOUBLE PRECISION |
|
DECIMAL(P,S) |
NUMERIC(P,S) |
|
DATE |
DATE |
|
TIME |
TEXT (Spark は TIME 型をサポートしていません。Flink の TIME 型は DLF に書き込む際に STRING になります。) |
|
TIMESTAMP |
TIMESTAMP WITHOUT TIME ZONE |
|
TIMESTAMPTZ |
サポートされていません |
|
STRING |
TEXT |
|
UUID |
サポートされていません (Flink/Spark はこの型を書き込めません。) |
|
FIXED(L) |
BYTEA |
|
BINARY |
BYTEA |
|
LIST |
ARRAY<hologres_data_type> サポートされる型:
|
|
STRUCT |
サポートされていません |
|
MAP |
サポートされていません |