Azure DataFactoryを任意のタイミングで起動する


やりたかったこと。

  • CSVファイルが置かれると、それを加工して、自動的にSalesforceやSQLServerにインポートしたい。
  • 定期実行ではなく、おかれたタイミングで加工とインポートを行いたい。
  • プログラム書かずにやれると(後々、引き継ぎが容易になりそうで)尚良し。

自動化に使ったもの。

  • Azure LogicApps / CSVの転送、Azure DataFactoryの起動に使用。
  • Azure DataFactory / CSVの加工やSalesforce、SQLServerへのインポートに使用。

考えたこと。

  • Azure DataFactory自体は、PipelineをRESTにより、任意のタイミングで呼び出すことも可能(っぽい)
  • しかし、リファレンス見るとトークン取得までなかなか面倒。
  • なんかいい方法ないかなと思っていたら、LogicAppsにDataFactoryコネクタがあった。
  • 起動時に変数も与えられる。

設定した内容。

LogicAppsの設定UIはこんな感じ。

  1. Sharepointにファイルが作られると発火。
  2. 作られたファイルの内容を取得
  3. 作られたファイルのパスから識別子を取得
  4. Blobを作成
  5. オリジナルのCSVファイルを退避
  6. Pipelineをキック。
  7. 結果を、Chatworkに投稿。

CSVファイルが作られた場所によって、DataFactoryの処理を変えたかったので、3の中でコネコネしている。
pipelineキック時の引数は以下Parametersでjson形式で指定する。

受け取る側のDataFactory pipelineは、以下のように変数CsvModeを定義して待っておく。

Switchアクティビティでは、以下のように、CsvMode変数の値によって後続するアクティビティを指定する。

以上。