View a markdown version of this page

Amazon S3 の複数のファイルでデータを接続する - AWS Glue DataBrewデベロッパーガイド

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

Amazon S3 の複数のファイルでデータを接続する

DataBrew コンソールを使用すると、Amazon S3 バケットとフォルダに移動し、データセットのファイルを選択できます。ただし、データセットを 1 つのファイルに制限する必要はありません。

という名前のフォルダmy-databrew-bucketを含む という名前の S3 バケットがあるとしますdatabrew-input。そのフォルダに、同じファイル形式と.json拡張子を持つ多数の JSON ファイルがあるとします。コンソールで、 のソース URL を指定できますs3://my-databrew-bucket/databrew-input/。DataBrew コンソールで、このフォルダを選択できます。データセットは、そのフォルダ内のすべての JSON ファイルで構成されます。

DataBrew は S3 フォルダ内のすべてのファイルを処理できますが、次の条件が満たされる場合に限ります。

  • フォルダ内のすべてのファイルは同じ形式です。

  • フォルダ内のすべてのファイルには、同じファイル拡張子があります。

サポートされているファイル形式と拡張子の詳細については、「」を参照してくださいDataBrew input formats

データセットとして複数のファイルを使用する場合のスキーマ

DataBrew データセットとして複数のファイルを使用する場合、スキーマはすべてのファイルで同じである必要があります。それ以外の場合、プロジェクトワークスペースは複数のファイルからスキーマの 1 つを自動的に選択し、残りのデータセットファイルをそのスキーマに準拠しようとします。この動作により、プロジェクトワークスペース中に表示されるビューが不規則になり、その結果、ジョブ出力も不規則になります。

ファイルに異なるスキーマが必要な場合は、複数のデータセットを作成して個別にプロファイリングする必要があります。

Amazon S3 のパラメータ化されたパスの使用

場合によっては、特定の命名規則に従うファイルを含むデータセット、または複数の Amazon S3 フォルダにまたがることができるデータセットを作成することがあります。または、同じデータセットを、特定のパラメータに依存するパスを持つ S3 ロケーションで定期的に生成される同一の構造化データに再利用することもできます。例としては、データ生成日に という名前のパスがあります。

DataBrew は、パラメータ化された S3 パスでこのアプローチをサポートしています。パラメータ化されたパスは、正規表現またはカスタムパスパラメータ、またはその両方を含む Amazon S3 URL です。

正規表現を使用して S3 パスを持つデータセットを定義する

パスの正規表現は、1 つ以上のフォルダの複数のファイルを照合し、同時にそれらのフォルダ内の無関係なファイルをフィルタリングするのに便利です。

以下にいくつかの例を示します。

  • 名前が で始まるフォルダのすべての JSON ファイルを含むデータセットを定義しますinvoice

  • 名前に を含むフォルダ内のすべてのファイルを含むデータセットを定義します2020

このタイプのアプローチは、データセット S3 パスで正規表現を使用して実装できます。これらの正規表現は、S3 URL の キーの任意の部分文字列を置き換えることができます (バケット名は置き換えません)。

S3 URL のキーの例については、以下を参照してください。ここで、 my-bucketはバケット名、米国東部 (オハイオ) はAWSリージョン、 puppy.pngはキー名です。

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

パラメータ化された S3 パスでは、2 つの角括弧 (<>) の間の文字は正規表現として扱われます。2 つの例を次に示します。

  • s3://my-databrew-bucket/databrew-input/invoice<.*>/data.jsondata.json、名前databrew-inputが で始まる のすべてのサブフォルダ内の という名前のすべてのファイルと一致しますinvoice

  • s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/ は、フォルダ内のすべてのファイルを名前2020に と照合します。

これらの例では、 は 0 文字以上.*に一致します。

注記

正規表現は、S3 パスのキー部分、つまりバケット名の後に続く部分でのみ使用できます。したがって、 s3://my-databrew-bucket/<.*>-input/は有効ですが、 s3://my-<.*>-bucket/<.*>-input/は有効ではありません。

正規表現をテストして、必要な S3 URLs のみに一致し、不要な URL と一致しないことを確認することをお勧めします。

正規表現のその他の例を以下に示します。

  • <\d{2}> は、 07や など、2 桁の連続した文字列と一致しますが03、 は一致しません1a2

  • <[a-z]+.*> は、1 つ以上の小文字のラテン文字で始まり、その後に 0 文字以上の他の文字を持つ文字列と一致します。例としては、a3abc/def、または がありますがa-z、 ではありませんA2

  • <[^/]+> は、スラッシュ (/) を除く文字を含む文字列と一致します。S3 URL では、パス内のフォルダを分離するためにスラッシュが使用されます。

  • <.*=.*> は、等号 (=) を含む文字列と一致します。たとえばmonth=02、、abc/day=2、または は一致しますが=10、 は一致しませんtest

  • <\d.*\d> は、数字で始まる文字列と終わる文字列に一致し、数字の間に 1abc2、、 01-02-03など、他の文字を含めることができますが2020/Jul/21、 は使用できません123a

カスタムパラメータを使用して S3 パスを持つデータセットを定義する

カスタムパラメータを使用してパラメータ化されたデータセットを定義すると、S3 ロケーションにパラメータを指定したい場合に正規表現を使用するよりも利点があります。

  • 正規表現と同じ結果を得ることができ、正規表現の構文を知る必要はありません。パラメータは、「starts with」や「contains」などの使い慣れた用語を使用して定義できます。

  • パスでパラメータを使用して動的データセットを定義する場合、「過去 1 か月」や「過去 24 時間」などの時間範囲を定義に含めることができます。これにより、データセット定義は後で新しい受信データで使用されます。

動的データセットを使用する場合の例を次に示します。

  • 最終更新日またはその他の意味のある属性でパーティション分割された複数のファイルを 1 つのデータセットに接続するには。その後、これらのパーティション属性をデータセット内の追加の列としてキャプチャできます。

  • データセット内のファイルを、特定の条件を満たす S3 の場所に制限するには。たとえば、S3 パスに のような日付ベースのフォルダが含まれているとしますfolder/2021/04/01/。この場合、日付をパラメータ化し、「2021 年 3 月 1 日から 2021 年 4 月 1 日の間」または「先週」などの特定の範囲に制限できます。

パラメータを使用してパスを定義するには、パラメータを定義し、次の形式を使用してパスに追加します。

s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json

注記

S3 パスの正規表現と同様に、パスのキー部分、つまりバケット名の後に続く部分でのみパラメータを使用できます。

パラメータ定義には、名前とタイプという 2 つのフィールドが必要です。タイプは、文字列数値日付のいずれかです。Date タイプのパラメータには、DataBrew が日付値を正しく解釈して比較できるように、日付形式の定義が必要です。必要に応じて、パラメータの一致条件を定義できます。DataBrew ジョブまたはインタラクティブセッションによってロードされているときに、パラメータの一致する値を列としてデータセットに追加することもできます。

DataBrew コンソールでパラメータを使用して動的データセットを定義する例を考えてみましょう。この例では、入力データが次のような場所を使用して S3 バケットに定期的に書き込まれると仮定します。

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv

ここには、米国のような国コードと、2021-03-30 のようなファイル名の日付の 2 つの動的部分があります。ここでは、すべてのファイルに同じクリーンアップレシピを適用できます。クリーンアップジョブを毎日実行するとします。このシナリオのパラメータ化されたパスを定義する方法は次のとおりです。

  1. 特定のファイルに移動します。

  2. 次に、日付などのさまざまな部分を選択し、パラメータに置き換えます。この場合、日付を置き換えます。

    パラメータに置き換えるために日付 2021-03-23 が強調表示された S3 パス。
  3. カスタムパラメータの作成のコンテキスト (右クリック) メニューを開き、そのプロパティを設定します。

    • 名前: レポート日

    • タイプ: 日付

    • 日付形式: yyyy-MM-dd (事前定義された形式から選択)

    • 条件 (時間範囲): 過去 24 時間

    • 列として追加: true (チェック済み)

    他のフィールドはデフォルト値のままにします。

  4. [作成] を選択します。

これを行うと、次のスクリーンショットのように更新されたパスが表示されます。

バケット内で見つかった 6 つの一致するファイルを示すパラメータプレースホルダーを持つ S3 パス。

これで、国コードに対して同じことを行い、次のようにパラメータ化できます。

  • 名前: 国コード

  • タイプ: 文字列

  • 列として追加: true (チェック済み)

すべての値が関連している場合は、条件を指定する必要はありません。たとえば、 new-casesフォルダには国コードを持つサブフォルダのみがあるため、条件は必要ありません。除外するフォルダが他にもある場合は、次の条件を使用できます。

正規表現パターン A~Z の後に括弧で囲まれた 2 を含む文字列値フィールド。

このアプローチでは、新しいケースのサブフォルダに 2 つの大文字のラテン文字を含めるように制限します。

このパラメータ化の後、データセットに一致するファイルのみがあり、データセットの作成を選択できます。

注記

条件で相対時間範囲を使用すると、データセットがロードされたときに時間範囲が評価されます。これは、「過去 24 時間」などの事前定義された時間範囲でも、「5 日前」などのカスタム時間範囲でも当てはまります。この評価アプローチは、インタラクティブセッションの初期化中またはジョブの開始中にデータセットをロードするかどうかに適用されます。

データセットの作成を選択すると、動的データセットを使用する準備が整います。たとえば、最初にこれを使用してプロジェクトを作成し、インタラクティブな DataBrew セッションを使用してクリーンアップレシピを定義できます。その後、毎日実行するようにスケジュールされたジョブを作成できます。このジョブは、ジョブの開始時にパラメータの条件を満たすデータセットファイルにクリーンアップレシピを適用する場合があります。

動的データセットでサポートされている条件

条件を使用して、パラメータまたは最後に変更された日付属性を使用して、一致する S3 ファイルをフィルタリングできます。

以下に、各パラメータタイプでサポートされている条件のリストを示します。

文字列パラメータで使用される条件
DataBrew SDK の名前 SDK シノニム DataBrew コンソールの名前 説明

is

eq、==

は正確に

パラメータの値は、 条件で指定された値と同じです。

は ではありません

not eq、!=

Is not

パラメータの値は、 条件で指定された値と同じではありません。

contains

Contains

パラメータの文字列値には、 条件で指定された値が含まれます。

が含まれていない

は含まれません

パラメータの文字列値に、 条件で指定された値が含まれていません。

starts_with

Starts with (で始まる)

パラメータの文字列値は、 条件で指定された値で始まります。

starts_with ではない

で始まらない

パラメータの文字列値は、 条件で指定された値で始まりません。

ends_with

Ends with

パラメータの文字列値は、 条件で指定された値で終わります。

ends_with ではない

で終わることはありません

パラメータの文字列値は、 条件で指定された値で終わりません。

matches

マッチ

パラメータの値は、 条件で指定された正規表現と一致します。

一致しない

一致しない

パラメータの値が、 条件で指定された正規表現と一致しません。

注記

文字列パラメータのすべての条件では、大文字と小文字を区別する比較が使用されます。S3 パスで使用されるケースが不明な場合は、「一致」条件を で始まる正規表現値で使用できます(?i)。これを行うと、大文字と小文字を区別しない比較になります。

たとえば、文字列パラメータを で始めるがabcAbcまたは ABCも可能であるとします。この場合、条件値(?i)^abcとして で「一致」条件を使用できます。

数値パラメータで使用される条件
DataBrew SDK の名前 SDK シノニム DataBrew コンソールの名前 説明

is

eq、==

は正確に

パラメータの値は、 条件で指定された値と同じです。

は ではありません

not eq、!=

Is not

パラメータの値は、 条件で指定された値と同じではありません。

less_than

lt、<

Less than

パラメータの数値が、 条件で指定された値より小さい。

less_than_equal

lte、<=

以下

パラメータの数値は、 条件で指定された値以下です。

greater_than

gt、>

Greater than

パラメータの数値が、 条件で指定された値より大きい。

greater_than_equal

gte、>=

以上

パラメータの数値は、 条件で指定された値以上です。

日付パラメータで使用される条件
DataBrew SDK の名前 DataBrew コンソールの名前 条件値の形式 (SDK) 説明

後に

Start

2021-03-30T01:00:00Z または のような ISO 8601 日付形式 2021-03-30T01:00-07:00

date パラメータの値は、 条件で指定された日付より後です。

前に

修了

2021-03-30T01:00:00Z または のような ISO 8601 日付形式 2021-03-30T01:00-07:00

date パラメータの値は、 条件で指定された日付より前です。

relative_after

開始 (相対)

-48h や など、正または負の時間単位の数+7d

date パラメータの値は、 条件で指定された相対日付より後です。

相対日付は、データセットがロードされたとき、インタラクティブセッションが初期化されたとき、または関連するジョブが開始されたときに評価されます。これは、例で「現在」と呼ばれる瞬間です。

relative_before

終了 (相対)

-48h や など、正または負の時間単位の数+7d

date パラメータの値は、 条件で指定された相対日付より前です。

相対日付は、データセットがロードされたとき、インタラクティブセッションが初期化されたとき、または関連するジョブが開始されたときに評価されます。これは、例で「現在」と呼ばれる瞬間です。

SDK を使用する場合は、相対日付を の形式で指定します±{number_of_time_units}{time_unit}。次の時間単位を使用できます。

  • -1h (1 時間前)

  • +2d (2 日後)

  • -120m (120 分前)

  • 5,000 秒 (現在から 5,000 秒後)

  • -3w (3 週間前)

  • +400 万 (今から 4 か月後)

  • -1 年 (1 年前)

相対日付は、データセットがロードされたとき、インタラクティブセッションが初期化されたとき、または関連するジョブが開始されたときに評価されます。これは、前の例で「現在」と呼ばれた瞬間です。

動的データセットの設定を構成する

パラメータ化された S3 パスを提供するだけでなく、複数のファイルを持つデータセットの他の設定も設定できます。これらの設定では、S3 ファイルを最終変更日でフィルタリングし、ファイル数を制限しています。

パスに日付パラメータを設定するのと同様に、一致するファイルが更新されたときの時間範囲を定義し、それらのファイルのみをデータセットに含めることができます。これらの範囲は、「2021 年 3 月 30 日」などの絶対日付または「過去 24 時間」などの相対範囲を使用して定義できます。

過去 24 時間のドロップダウンメニューで選択した最終更新日の範囲のチェックボックスを指定します。

一致するファイルの数を制限するには、0 より大きいファイルの数と、一致するファイルが最新か最も古いかを選択します。

チェックボックスをオンにします 最新のドロップダウンに含めるファイルの数と 10 ファイルを指定します。