支援的分割區投影類型 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

支援的分割區投影類型

資料表可以具有 enumintegerdate,injected 分割區資料欄類型的任意組合。

列舉類型

若分割區資料行的值為列舉集的成員 (例如,機場代碼或 AWS 區域),請使用此enum類型。

在資料表中定義分割區屬性,如下所示:

屬性名稱 範例值 描述
projection.columnName.type

enum

必要。用於柱的投影類型 columnName。 該值必須enum(不區分大小寫)才能表示使用枚舉類型。允許開頭和結尾空格。
projection.columnName.values

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

必要。列舉分區值的逗號分隔列表 columnName。 任何空格都被認為是枚舉值的一部分。
注意

建議的最佳實務是將 enum 型分割區投影的使用限制成幾十個或以下。雖然沒有特定的預enum測限制,但是當 gzip 壓縮時,表格中繼資料的總大小不能超過約 1 MB 的 AWS Glue 限制。請注意,您資料表的主要部分會共用此限制,例如資料欄名稱、位置、儲存格式等。如果您發現自己在enum投影IDs中使用了幾十多個獨特的方法,請考慮使用替代方法,例如將代理字段中的少量唯一值分組。您可以透過取捨基數的方式,控制 enum 欄位中唯一數值的數量。

整數類型

對於其可能值會被解譯為定義範圍內整數的分割區資料欄,請使用整數類型。投影整數資料欄目前限制為帶正負號的 Java 長整數範圍 (-263 至 263-1,含)。

屬性名稱 範例值 描述
projection.columnName.type

integer

必要。用於柱的投影類型 columnName。 該值必須是integer(不區分大小寫)才能表示使用整數類型。允許開頭和結尾空格。
projection.columnName.range

0,10

-1,8675309

0001,9999

必要。兩個元素的逗號分隔清單,提供資料行上查詢所傳回的最小值和最大值範圍值 columnName。 請注意,這些值必須用逗號分隔,而不是連字符。這些值包含在內,可以是負的,也可以以零開頭。允許開頭和結尾空格。
projection.columnName.interval

1

5

選用。正整數;指定資料欄連續分割區值之間的間隔 columnName。 例如,range值為「1」的「1,3" 會產生值 1、2 和 3。intervalrange 值相同但 interval 值為 "2" 會產生 1 和 3 的值,略過 2。允許開頭和結尾空格。預設為 1。
projection.columnName.digits

1

5

選用。正整數;指定要包含在資料行的分割區值最終表示中的位數 columnName。 例如,range值為「1」的「1,3" 會產生值 1、2 和 3。digitsrange 值相同但 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

必要。兩個元素的逗號分隔清單,提供資料行的最小值和最大rangecolumnName。 這些值包含在內,並且可以使用與 Java java.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。 例如,2017-01,2018-12具有的range1和值的intervalMONTHS會產生 2017 年 1 月 1 日,2017 年 2 月 3 日的值,依此類推。interval.unit相同的 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

MILLIS

代表 a 的序列化形式的時間單位字。ChronoUnit可能值為 YEARSMONTHSWEEKSDAYSHOURSMINUTESSECONDSMILLIS。這些值不區分大小寫。

如果提供的日期採用單日或單月精確度,則 interval.unit 是選用的,並且分別預設為 1 天或 1 個月。否則,interval.unit 是必要的。

注入類型

注入類型適用於其可能值不能在某個邏輯範圍內依程序產生,但可在查詢的 WHERE 子句中作為單一值提供的分割區資料欄。

請務必牢記以下幾點:

  • 如果未為每個注入的資料欄提供篩選條件表達式,則注入資料欄上的查詢會失敗。

  • 只有當值為分離值時,才能成功在注入資料欄上針對篩選條件表達式查詢多個值。

  • 僅支援 string 類型的資料欄。

屬性名稱 Value 描述
projection.columnName.type

injected

必要。要用於柱的投影類型 columnName。 僅支援string類型。指定的值必須是 injected (不區分大小寫)。允許開頭和結尾空格。

如需詳細資訊,請參閱何時使用injected投影類型