Parquet形式のデータを含む外部ファイルにアクセスするには、CREATE FOREIGN TABLE文のUSING STOREDASオプションで、PARQUETを指定する必要があります。
Parquetデータの列名には最大128文字を使用でき、大文字と小文字は区別されます。
Parquetデータの外部テーブルは、プライマリ インデックスなし(NOPI)で作成され、列パーティション化されます。
Parquet形式のデータを格納する外部テーブルに対して、次のテーブル レベルのオプションを指定することはできません。
- 行パーティション化
- 副行パーティション(列パーティション化テーブルの部分行パーティション)
- 複数列パーティション
- 自動圧縮
- USING句のROWFORMATオプション
- プライマリ インデックス
外部のParquetファイルは、Snappy形式で圧縮することができます。
Parquetデータを格納する外部テーブルのデータ列を明示的に定義する必要があります。Parquetファイルの列と同じ順序で列を定義し、Parquetデータ型に対応するVantageデータ型を使用します。
Parquetデータ型 | 対応するVantageデータ型 | 説明 |
---|---|---|
UINT_8 | SMALLINT | 0から255の範囲の符号なし整数。 |
UINT_16 | INTEGER | 0から65535の範囲の符号なし整数。 |
UINT_32 | BIGINT | 0から4,294,967,295の範囲の符号なし整数。 |
UINT_64 | DECIMAL(20,0) | 0から18,446,744,073,709,551,615の範囲の符号なし整数。 |
INT_8 | BYTEINT | -128から127の範囲の符号付き整数。 |
INT_16 | SMALLINT | -32768から32767の範囲の符号付き整数。 |
INT_32 | INTEGER | -2,147,483,648から2,147,483,647の範囲の符号付き整数。 |
INT_64 | BIGINT | -9,223,372,036,854,775,808から9,223,372,036,854,775,807の範囲の符号付き整数。 |
INT_96 | TIMESTAMP(6) | タイムスタンプを示すために使用されます。最初の8バイトはナノ秒数で、次の4バイトはユリウス日以降の日数です。 |
DECIMAL(p,s) | DECIMAL(p,s) | 精度が1から38 (両端含む)の範囲で、スケールが0から38 (両端含む)までの範囲の10進数。 |
VARBYTE(p+1)、pはDECIMALの精度。 | 精度とスケールが38を超える。 | |
FLOAT | REAL | IEEE 32ビット浮動小数点。 |
DOUBLE | REAL | IEEE 64ビット浮動小数点。 |
DATE | DATE | Unixエポック(1970年1月1日)からの日数 |
TIME_MILLIS | TIME(3)またはTIME(6) | 時間をミリ秒単位で格納する。 |
TIME_MICROS | TIME(6) | 時間をマイクロ秒単位で格納する。 |
TIMESTAMP_MILLIS | TIMESTAMP(3)またはTIMESTAMP(6) | タイムスタンプをミリ秒単位で格納する。 |
TIMESTAMP_MICROS | TIMESTAMP(6) | タイムスタンプをマイクロ秒単位で格納する。 |
INTERVAL | VARCHAR CHARACTER SET UNICODE | 月、日、ミリ秒単位で間隔を保存する。 |
BOOL | BYTEINT | ブール値(TrueまたはFalse)。 |
STRING | VARCHARまたはCLOB CHARACTER SET UNICODE | UTF8バイト配列としてエンコードされる。 |
BSON | JSON STORAGE FORMAT BSON | BSONデータ。 |
JSON | JSON CHARACTER SET UNICODE | JSONデータ。 |
STRUCT | VARCHARまたはCLOB CHARACTER SET UNICODE | 固定メンバーのグループ。 |
MAP | VARCHARまたはCLOB CHARACTER SET UNICODE | キーを値にマップする。 |
LIST | VARCHARまたはCLOB CHARACTER SET UNICODE | 配列に格納されているデータを格納する。 |
ENUM | VARCHARまたはCLOB CHARACTER SET UNICODE | UTF8文字列としてエンコードされた列挙値を格納する。 |
ARRAY | VARCHARまたはCLOB CHARACTER SET UNICODE | 繰り返しフィールドとして格納される。単一の値または複数の値の配列を指定できる。 |
Parquetファイルは同じ列レイアウトを必要とせず、外部テーブル定義と同じデータ型(データ型に互換性がある場合)は必要ありません。次に例を示します。
ファイル | 列1 | 列2 | 列3 | 列4 | 可能かどうか |
---|---|---|---|---|---|
データ型が右に指定された3列で定義された外部テーブル | INT | VARCHAR | DATE | N/A | |
ファイル1-外部テーブルと同じデータ型の3列 | INT | VARCHAR | DATE | YES | |
ファイル2-末尾に列を追加 | INT | VARCHAR | DATE | TIMESTAMP | YES |
ファイル3-末尾の列を削除 | INT | VARCHAR | 列3がNULL受入れ可能な場合は可 | ||
ファイル4-異なるデータ型 | VARCHAR | INTERVAL | BIGINT | 不可、ファイルはスキップされる | |
ファイル5-異なるが互換性のあるデータ型 | BIGINT | CLOB | DATE | YES |