Azure
AzureStorage
SQLDatabase
AzureDataFactory

はじめに

TableStorageに蓄積されたデータを別の環境に日次で差分コピーする必要がありました。
プログラムを書いてもよかったのですが、出来れば何か別の方法でできないかと模索した所Azure DataFactoryで実現できそうだったので試してみました。

構築メモ

データファクトリ作成

メニューからデータファクトリを選択

何故か検索しても出てきませんでしたのでスクロールで探してきました。
image.png

データファクトリの作成を選択

2つ目以降は左上に追加ボタンがあります。
image.png

新しいデータファクトリ

必要な情報を入力

image.png

しばらく待機

image.png

データファクトリ完成

image.png

データコピー処理の構築

今回はプレビュー機能のウィザード形式で構築していきます。UIを使って構築した後は作成されたJSONを別途保存しておき、JSONから同じ構成を複製していくと便利ですね。
※後にわかったのですが、ウィザード形式だと細かい設定ができない。かつあとで変更できなかったのでウィザード形式でひな形を作り実際に運用するものはJsonで作ったほうが良いです。

データをコピーを選択

image.png

プロパティの入力

スケジュール実行なのか一度きりなのかを指定します 。
開始終了の期間は必要に応じて変更しましょう。ここの設定値はまだ調査中のため、理解できたら詳しく書きたいと思います。その他も特に指定がなければデフォルトのままでも問題ないかと思います。
image.png

コピー元の情報の入力

好きなデータ媒体から選択します。今回はTableStorageからTableStorageを対象にしています。
image.png

コネクション情報の入力

image.png

対象のテーブルを選択

image.png

データの絞込条件の入力

今回は拡張性を考慮してCustomQueryを試してみます。
CustomQueryの場合Queryの入力値のチェックが行われます。
image.png

コピー先情報の入力

コピー元と同じように選択していきます。

コピー先媒体の選択

image.png

コネクション情報の入力

image.png

テーブルマッピングを選択

image.png

スキーママッピングを選択

image.png

エラーが有った場合の挙動についての設定

エラーがあったら止める、エラーが有っても先にすすめる、エラーがあったらログに出力して先にすすめるから選びます。
ログに出す場合は出力先を設定します。
ここはお好みの設定で!
image.png

パフォーマンス設定

エラー時の挙動の下の方にあります。ここはとりあえずオートで
image.png

設定した値の確認

image.png

設定値のデプロイ

image.png

デプロイ完了

あとは動いているか日々確認するだけです。
image.png

確認方法

監視と管理での確認

ポータルに戻ってプレビュー機能で確認できます
image.png
ここはいまいち使い勝手がわからないです。
image.png

ポータル側でも何か見れる方法はある気がしますかよくわからないので割愛
あとはコピー先にデータがコピーされているか実際に見てみるといいですかね。

エクスポート

UIで設定した値をJSONでとっておくと次回以降の設定が楽になると思います。

監視と管理(プレビュー)を選択

コンテンツ内のメニューからはLinkedServicesの設定値のJSONが取れません。。
image.png

resource explorerから順番にエクスポートするjsonを選択していく

pipeline
datasets
linkedservices
にjsonができていると思います。
image.png

Scriptエリアから自力でコピペしていく

resource explorerでjson名を選択すると右のほうのメニューからscriptにjsonの中身が表示されます。ブラウザのテキストからコピペしていきましょう
image.png

jsonすべて上記作業を繰り返す

ひたすらコピーしていきます。

コピーしたJsonの管理

ソース管理しておくと便利だと思います。

まとめ

上記設定でスケジュール実行ができているようです。Dailyで実行だと日付をまたぐ前後のどちらかで実行されるという設定があるようです。
しかし名前の変更が不可能であるのとパイプラインとデータセットが紐付いた後にスケジューラの設定が変えられないという不便な点がありました。
変更する場合はデータセットを新規作成して、パイプラインをあたらしいスケジュールに合わせて紐付け先のデータセットを変更する必要があります。
TableStorageはPartitionKeyとRowkeyの設計がイケていれば速度の問題もクリアできそうです。
DBも自由度の高いSQLQueryをCustomScriptで実行できるのでかなり快適でした。
さらにDBではStoredProcedureの実行も可能でした。
何か機会があればSQLDataBaseとTableStorage以外も試してみたいと思います。

注意点として、使用頻度が高いとチャリンチャリンとどんどん吸い取られてしまうので、高頻度の場合は別のサービスのほうがいいと思います。