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 でデータレイクから最新日付のファイルを取得してみました。 デフォルトの機能をうまく使いこなすことで、少し込み入ったことも出来るようになりそうです。