パーティション射影用にサポートされている型
テーブルには、enum
、integer
、date,
、または injected
パーティション列の型の任意の組み合わせを使用できます。
列挙型
値が列挙セット (空港コードや AWS リージョン など) のメンバーであるパーティション列には、enum
型を使用します。
テーブルでパーティションプロパティを次のように定義します。
プロパティ名 | 値の例 | 説明 |
---|---|---|
projection. |
|
必須。列 columnName に使用する射影型です。列挙型の使用を通知するには、値を enum (大文字と小文字を区別しない) にする必要があります。先頭と末尾に空白文字を使用できます。 |
projection. |
|
必須。列 columnName に対する列挙されたパーティション値のカンマ区切りリスト。空白は列挙値の一部とみなされます。 |
注記
ベストプラクティスとして、enum
ベースのパーティション射影の使用は数 10 個以下に制限することが推奨されます。enum
射影に固有の制限はありませんが、テーブルのメタデータを gzip に圧縮するときには、合計サイズが約 1MB という AWS Glue の制限を超えることはできません。この制限は、列名、場所、およびストレージ形式といったテーブルの主要部分全体で共有されることに注意してください。enum
射影で使用している一意の ID が数十個ある場合は、サロゲートフィールドにバケット化する一意の値を少なくするなど別のアプローチを検討してください。カーディナリティをトレードオフすることで、enum
フィールドの一意の値の数を制御できます。
整数型
使用できる値が定義された範囲内の整数として解釈可能なパーティション列には、整数型を使用します。射影整数列は現在、Java 符号付き長整数値 (-263 ~ 263-1。両端の値を含みます) の範囲に制限されています。
プロパティ名 | 値の例 | 説明 |
---|---|---|
projection. |
|
必須。列 columnName に使用する射影型です。整数型の使用を通知するには、値を integer (大文字と小文字を区別しない) にする必要があります。先頭と末尾に空白文字を使用できます。 |
projection. |
|
必須。columnName 列のクエリによって返される最小値と最大値の範囲を示す 2 要素カンマ区切りリスト。値はハイフンではなくカンマで区切る必要があることに注意してください。両端の値が含まれ、負の値でもかまいません。また、先頭をゼロにすることもできます。先頭と末尾に空白文字を使用できます。 |
projection. |
|
オプション。列 columnName の連続するパーティション値の間隔を指定する正の整数。たとえば、range 値が「1,3」で、interval 値が「1」の場合、値 1、2、3 が生成されます。range 値が同じで interval が「2」の場合、値 1 と 3 が生成され、2 はスキップされます。先頭と末尾に空白文字を使用できます。デフォルトは 1 です。 |
projection. |
|
オプション。列 columnName のパーティション値の最終表現に含める桁数を指定する正の整数。たとえば、range 値が「1,3」で digits 値が「1」の場合、値 1、2、3 が生成されます。range 値が同じで digits 値が「2」の場合、値 01、02、03 が生成されます。先頭と末尾に空白文字を使用できます。デフォルトでは、静的な桁数も先頭のゼロもありません。 |
日付型
定義された範囲内の日付 (オプションで時刻を含む) として解釈可能な値を持つパーティション列には、日付型を使用します。
重要
射影される日付列は、クエリの実行時に協定世界時 (UTC) で生成されます。
プロパティ名 | 値の例 | 説明 |
---|---|---|
projection. |
|
必須。列 columnName に使用する射影型です。日付タイプの使用を通知するには、値を date (大文字と小文字を区別しない) にする必要があります。先頭と末尾に空白文字を使用できます。 |
projection. |
|
必須。 この列には、次の正規表現パターンの形式で相対日付文字列を含めることもできます。
空白は使用できますが、日付リテラルは日付文字列自体の一部と見なされます。 |
projection. |
|
必須。Java の日付フォーマット DateTimeFormatterJava.time.* 型を使用できます。 |
projection. |
|
列 指定された日付が単一日または単一月の精度である場合、 |
projection. |
|
ChronoUnit 指定された日付が単一日または単一月の精度である場合、 |
例 – 月によるパーティション
次のテーブル設定例では、2015 年から現在までのデータを月ごとにパーティション化しています。
'projection.month.type'='date', 'projection.month.format'='yyyy-MM', 'projection.month.interval'='1', 'projection.month.interval.unit'='MONTHS', 'projection.month.range'='2015-01,NOW', ...
挿入型
使用できる値をいくつかの論理範囲内で手動で生成することができないが、クエリの WHERE
句で単一の値として指定されるパーティション列には、挿入型を使用します。
次の点に留意することが重要です。
-
挿入列ごとにフィルタ式が指定されていない場合、挿入列でのクエリは失敗します。
-
挿入された列のフィルター式に複数の値を持つクエリは、値が論理和である場合にのみ成功します。
-
string
型の列のみがサポートされています。
プロパティ名 | 値 | 説明 |
---|---|---|
projection. |
|
必須。列 columnName に使用する射影型です。string 型のみがサポートされています。値 injected (大文字と小文字は区別されません) を指定する必要があります。先頭と末尾に空白文字を使用できます。 |
詳細については、「injected 射影タイプを使用すべき場合」を参照してください。