はじめに
Azure AutomationのPowerShellでAzure Analysis Services(AAS)を自動更新する方法について 書いた が、実際に企業のシステムの中で使おうとした場合、業務システムやその他社内外の新しいデータを取得して、データ分析に適したデータのフォーマットや、データウェアハウスのスキーマに合わせた変換を行って最新化したうえで、モデルの更新処理をしなければならない。このため、単純なAzure Automationのスケジュール実行では片手落ちである。
Data Factory はこれらのデータの抽出・変換・ロードのいわゆるETL処理を含んだ、データのオーケストレーションを自動化し、モニタリングするPaaSである。このData Factoryのパイプライン内のアクティビティとして、Azure Automationを実行できれば上記を満たすことができと考えた。が、、、しかし、Data Factoryのもつアクティビティの中に、Azure Automationは存在しなかった。そのため、Azure AutomationのWebhook機能を使って、Data FactoryのWebアクティビティからRunbookをコールするという形で実装する。
Webhookの作成
Azure Automationで実行したいRunbookを選び、"Webhook"メニューを選択。
Create a new webhook画面で以下のように必要情報を設定する。URL欄に記載されているURLを必ずコピーして、メモ帳かなんかに張り付けておくこと。準備完了したら"OK" > "Create"と進む。
Data Factoryのアクティビティ設定
Data Factoryの細かい設定のところはここでは割愛し、Webhookをコールするアクティビティを作成するところをメモとして残す。
Data FactoryのAuthor & Monitorツールから設定を行う。
Webアクティビティは"General"のカテゴリ内に入っている。ここから"Web"をドラッグ&ドロップしてキャンパスに貼り付ける。
今回はCopyアクティビティでいろんなところからデータをかき集めてきて、ストレージに保存し、Databricksでデータを変換し、SQL Data Warehouseのデータを更新し、最後にAASのモデルを処理したかったので、一番最後のアクティビティとして、以下のように貼り付けて構成した。
Webアクティビティの設定はシンプルで、Generalの部分は変更したのはNameだけ。
Settingsの部分で、URL欄にAzure Automation RunbookのURLを貼り付け、MethodをPOSTに設定。
Bodyは今回のコールには不要だったのだが、入力しないとData FactoryのConfigのValidationで叱られるので、"body"とだけ入れておいた。
設定はこれだけで完了となる。あとはパイプラインをPublishして実行し、エラー無く完了&データが正常に更新されていることが確認できればOK。