パーティション射影のサポートされている型 - Amazon Athena

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

パーティション射影のサポートされている型

テーブルには、enumintegerdate,、または injected パーティション列の型の任意の組み合わせを使用できます。

列挙型

を使用するにはenum型。値が列挙セットのメンバーであるパーティション列(空港コードや AWS リージョンなど)の型です。

テーブルでパーティションプロパティを次のように定義します。

プロパティ名 値の例 説明
projection.columnName.type

enum

必須。列に使用する射影型です。columnName。 この値は にする必要があります。enum(大文字と小文字を区別しない) を使用して、列挙型の使用を通知します。先頭と末尾に空白文字を使用できます。
projection.columnName.values

A,B,C,D,E,F,G,Unknown

必須。列の列挙されたパーティション値のカンマ区切りリスト columnName。 空白は列挙値の一部とみなされます。
注記

ベストプラクティスとして、enum数十以下にベースのパーティション投影。のための具体的な制限はありませんが、enumプロジェクションでは、gzip 圧縮時に、テーブルのメタデータの合計サイズが AWS Glue 制限の約 1MB を超えることはできません。この制限は、列名、場所、格納形式など、テーブルの主要な部分で共有されることに注意してください。あなたが数十以上のユニークなIDを使用していることがわかった場合enum投影法では、サロゲートフィールド内の少数の固有値へのバケティングなどの代替アプローチを検討します。カーディナリティをトレードオフすることで、enumfield.

整数型

使用できる値が定義された範囲内の整数として解釈可能なパーティション列には、整数型を使用します。射影整数列は現在、Java 符号付き長整数値 (-263 ~ 263-1。両端の値を含みます) の範囲に制限されています。

プロパティ名 値の例 説明
projection.columnName.type

integer

必須。列に使用する射影型です。columnName。 この値は にする必要があります。integer(大文字と小文字を区別しない) を使用して、整数型の使用を通知します。先頭と末尾に空白文字を使用できます。
projection.columnName.range

0,10

-1,8675309

0001,9999

必須。列のクエリによって返される最小値と最大値の範囲を示す 2 要素カンマ区切りリスト。columnName。 両端の値が含まれ、負の値でもかまいません。また、先頭をゼロにすることもできます。先頭と末尾に空白文字を使用できます。
projection.columnName.interval

1

5

省略可能。列の連続するパーティション値の間隔を指定する正の整数。columnName。 たとえば、rangeの値を「1,3」に設定してinterval値「1」の場合、値 1、2、3 が生成されます。range 値が同じで interval が「2」の場合、値 1 と 3 が生成され、2 はスキップされます。先頭と末尾に空白文字を使用できます。デフォルトは 1 です。
projection.columnName.digits

1

5

省略可能。列のパーティション値の最終表現に含める桁数を指定する正の整数。columnName。 たとえば、rangeを持つ「1,3」の値がdigits値「1」の場合、値 1、2、3 が生成されます。range 値が同じで digits 値が「2」の場合、値 01、02、03 が生成されます。先頭と末尾に空白文字を使用できます。デフォルトでは、静的な桁数も先頭のゼロもありません。

日付型

定義された範囲内の日付 (オプションで時刻を含む) として解釈可能な値を持つパーティション列には、日付型を使用します。

重要

射影される日付列は、クエリの実行時に協定世界時 (UTC) で生成されます。

プロパティ名 値の例 説明
projection.columnName.type

date

必須。列に使用する射影型です。columnName。 この値は にする必要があります。date(大文字と小文字を区別しない) を使用して、日付タイプの使用を通知します。先頭と末尾に空白文字を使用できます。
projection.columnName.range

201701,201812

01-01-2010,12-31-2018

NOW-3YEARS,NOW

201801,NOW+1MONTH

必須。最小値と最大値を提供する 2 つの要素のコンマ区切りのリストrange列の値 columnName。 これらの値は包括的であり、Javajava.time.*日付タイプ。最小値と最大値のどちらも同じ形式を使用する必要があります。.format プロパティで指定する形式は、これらの値に使用される形式にする必要があります。

この列には、次の正規表現パターンの形式で相対日付文字列を含めることもできます。

\s*NOW\s*(([\+\-])\s*([0-9]+)\s*(YEARS?|MONTHS?|WEEKS?|DAYS?|HOURS?|MINUTES?|SECONDS?)\s*)?

空白は使用できますが、日付リテラルは日付文字列自体の一部と見なされます。

projection.columnName.format

yyyyMM

dd-MM-yyyy

dd-MM-yyyy-HH-mm-ss

必須。Java の日付フォーマット DateTimeFormatter に基づく日付形式文字列。サポートされている任意の Java.time.* 型を使用できます。
projection.columnName.interval

1

5

列の連続するパーティション値の間隔を指定する正の整数 columnName。 たとえば、range2017-01,2018-12interval1interval.unitMONTHS2017-01、2017-02、2017-03、2017-02、2017-03、などの値が生成されます。range 値が同じで interval 値が 2interval.unit 値が MONTHS の場合、2017-01、2017-03、2017-05 というように値が生成されます。先頭と末尾に空白文字を使用できます。

指定された日付が単一日または単一月の精度である場合、interval はオプションであり、デフォルトではそれぞれ 1 日または 1 か月です。それ以外の場合、interval が必要です。

projection.columnName.interval.unit

YEARS

MONTHS

WEEKS

DAYS

HOURS

MINUTES

SECONDS

MILLISECONDS

ChronoUnit のシリアル化された形式を表す時間単位の単語。想定される値は次のとおりです。YEARSMONTHSWEEKSDAYSHOURSMINUTESSECONDS, またはMILLISECONDS。これらの値の大文字と小文字は区別されません。

指定された日付が単一日または単一月の精度である場合、interval.unit はオプションであり、デフォルトではそれぞれ 1 日または 1 か月です。それ以外の場合は、interval.unit が必要です。

挿入型

使用できる値をいくつかの論理範囲内で手動で生成することができないが、クエリの WHERE 句で単一の値として指定されるパーティション列には、挿入型を使用します。

次の点に留意することが重要です。

  • 挿入列ごとにフィルタ式が指定されていない場合、挿入列でのクエリは失敗します。

  • 列のフィルタ式で複数の値が許可される場合、挿入列でのクエリは失敗します。

  • の列のみstringタイプのみがサポートされます。

プロパティ名 説明
projection.columnName.type

injected

必須。列に使用する射影型です。columnName。 のみstringタイプのみがサポートされます。値 injected (大文字と小文字は区別されません) を指定する必要があります。先頭と末尾に空白文字を使用できます。

詳細については、「Injection」を参照してください。