Azure Data Factory でデータレイクから最新日付のファイルを取得する
Azureを使ってデータ分析基盤を構築すると、Azure Data Lake Storage Gen2にデータを溜めていく事が多いです。 この日々溜まっていくデータから最新日付のファイルのみを取り出したいときに使えるテクニックです。
前提条件
前提条件として、XXX_yyyyMMdd.csv
やZZZ_yyyyMMddHHmmss.csv
といった、同じファイル名の末尾に日時の情報がくっついているデータを取得するケースとします。
準備
パイプライン
まずはパイプラインに変数を用意します。今回は最新日付のファイルだったので、latest_filename
としました。
次にアクティビティを用意します。
今回使うのはGetMetadata
と変数の設定
です。2つとも「全般」の中に存在しています。
変数とアクティビティの設定が終わると、画像のようになります。
データセット
ファイルが置いてあるディレクトリへのデータセットを作成します。
ファイルパスの部分には「ディレクトリ」を設定し、「ファイル」の設定はおこないません。
GetMetadata
アクティビティに、データセットを設定し、フィールドリストに子項目
を設定します。
変数の設定
変数の設定
アクティビティの変数
タブへ移動し、下記の設定をします。
- 名前
latest_filename
- 値
@last(activity('get_files').output['childItems'])['name']
ここでは、latest_filename
という変数に @last(activity('get_files').output['childItems'])['name']
の値を入れています。
分解していくと、activity('get_files')
は一つ前のアクティビティです。activity('get_files').output['childItems']
は一つ前のアクティビティの出力結果の子要素、今回はactivity('get_files')
のデータセットに、フォルダを指定していたので複数のファイル群になります。
その複数のファイル群の中からlast
関数の実行結果である最後のファイルの['name']
をlatest_filename
という変数に格納していることになります。
実行
今回はフォルダ配下に、2ファイル配置しました。test_20210609110816.csv
が取得できれば良さそうです。デバッグ実行してみます。
get_files
アクティビティの出力結果は2ファイル取れています。
set_filename
アクティビティの出力結果は1ファイル、そして最新のファイルの結果が取れています。
まとめ
Azure Data Factory でデータレイクから最新日付のファイルを取得してみました。 デフォルトの機能をうまく使いこなすことで、少し込み入ったことも出来るようになりそうです。