パスエクストラクターの例
次のパスエクストラクターの例は、フィールドをフラット化して名前を変更する方法、またはデータを 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
フライトデータをテキスト形式で抽出する
次の例の 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/'