Azure Data Factoryのパイプラインでファイルのコピーをする
IT技術
前回、Azure Data Factory(以下、ADF) でSlack通知をしました。
その後も相変わらず業務ではADFを触ってます。最近はファイルのコピーとかをいろいろ触っているので、よくあるシナリオを共有したいと思います。
今回のシナリオ
A Blobは毎日 file_yyyyMMddHH.csv が作成されます。そこから、B Blobにファイルを file_yyyyMMddHH_bk.csv というファイル名でコピーします。その後、元となったファイルは削除するようなケースです。
ADFにパイプラインを作る
データセットパラメタを作成します
パイプラインを作成する前に、パイプラインに設定するデータセットパラメータを作成します。
今回のシナリオだとコピー元のfile.jsonとコピー先のfile_bk.jsonを2つを作成する必要があります。
コピー元のデータセット
新しいデータセットで、Azure>Azure BLOB ストレージ>DelimitedTexと進みます。
名前欄にfileと記入し、リンクサービスはコピー元のAzureBlobStorageを選択します。
今回はAzureBlobStorageというblobのjapan/userからコピーします。
@{concat('file_', getFutureTime(9,'Hour','yyyyMMdd'), '.csv')}
コピー先のデータセット
コピー元と同様にAzure>Azure BLOB ストレージ>DelimitedTexと進みます。
名前欄にfileと記入し、リンクサービスはコピー元のAzureBlobStorageを選択します。
今回はAzureBlobStorage_backupというblobのjapan/user/bkからコピーします。
そして、パイプライン式ビルダーとして下記を登録します。
@{concat('file_', getFutureTime(9,'Hour','yyyyMMdd'), '_bk.csv')}
パイプラインを作成する
まずは、Copy アクティビティを配置します。
ソース欄のソースデータセットに先ほど作成したコピー元のデータセットを登録し、ファイルパスの種類で、データセット内のファイルパスを選択。
シンク欄のシンクデータセットにコピー先のデータセットを登録します。
次にコピー元のファイルを削除する処理を作ります。
Deleteアクティビティを配置してCopyアクティビティとつなぎます。
そしたらDeleteアクティビティに削除対象のデータセットを登録します。
ソース欄のデータセットに、コピー元のfileを選択。ファイルパスの種類もデータセット内のファイルパスを選択します。
これで、 A Blobのfile_yyyyMMddHH.csv からB Blobのfile_yyyyMMddHH_bk.csv にコピーし、A Blobのfile_yyyyMMddHH.scvを削除します。
まとめ
今回は、実際の業務でありそうなシナリオをベースに実装してみました。
IfConditionアクティビティを利用してコピー元がない場合、前回のSlack通知などするのが良いと思います。
次回は、DBからBlobのコピーにしようかな。でもベースは同じだからなぁ...
会社的にはAWSとGCPを推していきたいようだけど。。。
以上!!(前回のslackの時にそのまま動かしっぱなしでMSに3万円請求されました;;)
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
グンマー帝国から密出国してきてるブタ。 東京人多い...
おすすめ記事
immichを知ってほしい
2024.10.31