VARBYTE 型
一定の制限を持つ可変長のバイナリ値を格納するには、VARBYTE 列、VARBINARY 列または BINARY VARYING 列を使用します。
varbyte [ (n) ]
最大バイト数 (n) の範囲は 1~16,777,216 です。デフォルト値は 64,000 です。
以下に、VARBYTE データ型を使用する場合の例をいくつか示します。
VARBYTE 列でのテーブルの結合。
VARBYTE 列を含むマテリアライズドビューの作成。VARBYTE 列を含むマテリアライズド・ビューでは、増分更新がサポートされます。ただし、VARBYTE 列の COUNT、MIN、MAX および GROUP BY 以外の集計関数は、増分更新をサポートしません。
すべてのバイトが表示可能な文字であることを保証するために、Amazon Redshift は 16 進数形式を使用して VARBYTE 値を出力します。例えば、次の SQL では 16 進数の文字列 6162
をバイナリ値に変換しています。戻り値がバイナリ値であっても、結果は 16 進数の 6162
で出力されます。
select from_hex('6162'); from_hex ---------- 6162
Amazon Redshift では、VARBYTE と以下に示すデータ型間でのキャストがサポートされています。
CHAR
VARCHAR
SMALLINT
INTEGER
BIGINT
CHAR と VARCHAR をキャストする場合は、UTF-8 形式が使用されます。UTF-8 形式の詳細については、「TO_VARBYTE」を参照してください。SMALLINT、INTEGER、BIGINT からキャストする場合、元のデータ型のバイト数は維持されます。つまり、SMALLINT の場合は 2 バイト、INTEGER の場合は 4 バイト、BIGINT の場合は 8 バイトとなります。
次の SQL ステートメントは、VARCHAR 文字列を VARBYTE にキャストします。戻り値がバイナリ値であっても、結果は 16 進数の 616263
で出力されます。
select 'abc'::varbyte; varbyte --------- 616263
次の SQL ステートメントは、列内の CHAR 値を VARBYTE にキャストします。次の使用例では、CHAR (10) 列 (c) を持つテーブルを作成し、長さが 10 より短い文字値を挿入します。出力されるキャストでは、スペース文字 (hex'20') を使用して、定義された列サイズに結果がパディングされます。戻り値がバイナリ値の場合でも、結果は 16 進数で表示されます。
create table t (c char(10)); insert into t values ('aa'), ('abc'); select c::varbyte from t; c ---------------------- 61612020202020202020 61626320202020202020
次の SQL ステートメントは、SMALLINT 文字列を VARBYTE にキャストします。戻り値がバイナリ値の場合でも、この結果は 16 進数 0005
(2 バイトつまり 4 桁の 16 進数文字列) として表示されます。
select 5::smallint::varbyte; varbyte --------- 0005
次の SQL ステートメントは、INTEGER を VARBYTE にキャストします。戻り値がバイナリ値の場合でも、この結果は 16 進数 00000005
(4 バイトつまり 8 桁の16進数文字列) として出力されます。
select 5::int::varbyte; varbyte ---------- 00000005
次の SQL ステートメントは、BIGINT を VARBYTE にキャストします。戻り値がバイナリ値の場合でも、この結果は 16 進数 0000000000000005
(8 バイトつまり 16 桁の 16 進数文字列) として出力されます。
select 5::bigint::varbyte; varbyte ------------------ 0000000000000005
VARBYTE データ型をサポートする Amazon Redshift の各機能は以下のとおりです。
Amazon Redshift で VARBYTE データ型を使用する際の制約事項
Amazon Redshift で VARBYTE データを使用する際の制約事項を以下に示します。
Amazon Redshift Spectrum は、Parquet ファイルと ORC ファイルに対してのみ VARBYTE データ型をサポートします。
Amazon Redshift のクエリエディタと Amazon Redshift クエリエディタ v2 は、現段階で VARBYTE データ型を完全にはサポートしていません。したがって、VARBYTE 表現を処理する際には、他の SQL クライアントを使用してください。
クエリエディタを使用する際の回避策として、データの長さが 64 KB 未満で、かつコンテンツが有効な UTF-8 で構成されている場合は、VARBYTE 値を VARCHAR にキャストできます。次にこの例を示します。
select to_varbyte('6162', 'hex')::varchar;
Python または Lambda ユーザー定義関数 (UDF) では VARBYTE データ型を使用することはできません。
VARBYTE 列から HLLSKETCH 列を作成したり、VARBYTE 列で APPROXIMATE COUNT DISTINCT を使用したりすることはできません。
1 MB を超える VARBYTE 値は、以下のファイル形式からのみ取り込むことができます。
Parquet
テキスト
カンマ区切り値 (CSV)