パスエクストラクターの例 - Amazon Athena

パスエクストラクターの例

次のパスエクストラクターの例は、フィールドをフラット化して名前を変更する方法、またはデータを Amazon Ion テキストとして抽出する方法を示しています。

フィールドをフラット化して、名前を変更する

次の例は、フィールドをフラット化して名前を変更する検索パスのセットを示しています。この例では、検索パスを使用して次の処理を実行します。

  • nickname 列を alias フィールドにマッピングします。

  • identification 構造体にある name サブフィールドに name 列をマッピングします。

次に、Amazon Ion ドキュメントの例を示します。

-- Example Amazon Ion Document { identification: { name: "John Smith", driver_license: "XXXX" }, alias: "Johnny" }

次に、パスエクストラクタを定義する CREATE TABLE ステートメントの例を示します。

-- Example DDL Query CREATE EXTERNAL TABLE example_schema2 ( name STRING, nickname STRING ) ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'ion.nickname.path_extractor' = '(alias)', 'ion.name.path_extractor' = '(identification name)' ) STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/path_extraction2/'

次の例は、抽出されたデータを示しています。

-- Extracted Table | name | nickname | |--------------|--------------| | "John Smith" | "Johnny" |

検索パスの詳細、および検索パスのその他の例については、GitHub の「ion-java-path-extraction」(Ion Java パス抽出) ページを参照してください。

フライトデータをテキスト形式で抽出する

次の例の CREATE TABLE クエリでは、WITH SERDEPROPERTIES を使用してパスエクストラクタを追加し、フライトデータを抽出して、出力エンコードを Amazon Ion テキストに指定しています。この例では STORED AS ION 構文を使用しています。

CREATE EXTERNAL TABLE flights_ion ( yr INT, quarter INT, month INT, dayofmonth INT, dayofweek INT, flightdate STRING, uniquecarrier STRING, airlineid INT, ) ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'ion.encoding' = 'TEXT', 'ion.yr.path_extractor'='(year)', 'ion.quarter.path_extractor'='(results quarter)', 'ion.month.path_extractor'='(date month)') STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/'