皆さん、こんにちは!
前回は、 Azure Analysis Services(以下、AAS)へ、オンプレミスの CSV ファイルにアクセスするモデルをデプロイするところまで実施しました。
今回は、CSV ファイルの変更を AAS 側に反映するため、AAS にデプロイしたモデルを更新する方法を紹介します。
AAS のモデル更新には以下1~4の方法があります。
今回は、実装が一番楽な4番目の SSIS のワークフローから更新する方法を紹介します。
全体イメージは以下のとおりで、SSIS から Analysis Service DDL 実行のタスクを実行して実現します。
まずは、SSIS のワークフローから開発します。
SQL Server Data Tools (以下、SSDT)で SSIS のプロジェクトを新規作成後、SSIS ツールボックス内の 「Analysis Service DDL …」をクリックした状態で制御フローのウィンドウ上へスライドさせて配置し、「Analysis Services DDL 実行タスク」をダブルクリックします。
DDL を選択し、新しい接続を追加します。
編集ボタンをクリックし、AAS への接続情報を入力して設定します。
次に、 SourceDirect に AAS にデプロイしたモデルを更新する DDL を JSON ベースで Tabular Model Scripting Language (以下、TMSL) を記載する必要があるのですが、簡単に DDL を設定できる方法があります。
SQL Server Management Studio (以下、SSMS)で AAS へ接続し、対象テーブルを右クリックし、テーブルの処理をクリックします。
モードを完全処理に選択し、スクリプトボタンをクリックするとエディタに JSON ベースの TMSL が生成されるのでコピーし、
先ほどの SourceDirect にペーストして設定することができます。JSON データを作成する必要がないので設定が大分楽になるのではないでしょうか。
あとは、開始ボタンをクリックするだけ!
パッケージが正常終了していれば AAS のデータ更新が完了しているはずです!
AAS のモデル更新を定期実行したい場合は、SSIS のパッケージ(dtsx ファイル) を SQL Server のエージェントにジョブとして登録する、SSIS のパッケージを dtexec コマンドで実行する BAT ファイルをタスクスケジューラに登録する、等の方法で実現することができます。
[参考]Integration Services (SSIS) パッケージの実行
また、今回 AAS が更新できる CSV ファイルは1ファイルのみですが、実運用では特定のディレクトリ内の CSV ファイルをすべて AAS へ反映したいという要望もでてくると思います。
そういったご要望がある場合は、別途 SQL Server のデータベースを用意し、SSIS で一旦データベースへ取り込んだ後、AAS からデータベースのデータを取得することにより実現することができます。
皆さんも是非お試しください!それでは!