データ移動サービスのAzure Data Factoryを利用してみます。
Azure Storageに限らず、オンプレミス環境のMySQLなどからもインポートできるようですが、Azureの世界の中でのデータコピーをやってみます。
前提
- Azure の課金アカウントを持っていること
- Azure Storageをアクティベート出来、何らかのデータを保存していること
- Azure DocumentDBをアクティベート出来、コレクションとデータベースを作成していること
関連記事にて、Azure Storageにデータ投入する方法を記載しました。Webブラウザからアップロードするのが簡単だと思いますが。参考まで。
64MB以下(Azure Storage SAS access 延長戦【主にREST API sample code】)
http://qiita.com/snomoto/items/a24b34ebb111706679e8
Azure Data Factoryの設定
2016年12月現在、米国西部・米国東部・ヨーロッパ北部リージョンでしかリソースをアクティベート出来ないのですが、データをコピーする動きをするだけなので、日本リージョンのStorageからDocumentDBへのコピーなどは問題なく実施出来ます。

- GUIツールが用意されているようなので、そちらを利用してみます。

- 日時のバッチ処理的なコピーするスケジュールなども設定できます。

- データ元としてAzure Storageを指定します。


- コピーするデータを指定します。JSONの形式に問題があるときは、この時点でエラーが出力されます。


- 仕向け先のDocumentDBを指定します。



- 保存して実行します。

Azure Data Factoryの実行
単に保存して実行したらエラーが出ました。裏ではアクティベートが終わってないのかも知れません。
改めて、ダッシュボードから実行してみます。



- GUIがすぐには更新されないのですが、少し待つと表示が変わります。

- エラーが出ました。。。
Copy activity encountered a user error at Sink side:
ErrorCode=UserErrorDocumentDBWriteError,
'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
Message=DocumentDb operation failed:
Message: {"Errors":["Request size is too large"]}
- 今回はデータをコピーするだけなので、一旦スケールアップしてみます。

- 改めて実行し、DocumentDBの「ドキュメントエクスプローラー」からデータを確認します。

以上。
Azure StorageのデータをAzure Storageにコピー
2016年12月追記
Data Factoryはスケジュール実行ができるのですが、上記のGUIの流れの中では、DocumentDBに対してはファイル名に日付を付与できません。
使い勝手の良いAzure Storageをアーカイブ代わりに使ってみます。
上記の流れの中で、出力ファイルの名前をセットするときに、年月日を自動で付与するように設定できます。

- フォルダを自動で作らせるとき
例えばですが、"Folder path"の欄に、以下のようにするとStorageのコンテナー内にフォルダが自動で作成されます。
コンテナー名blob/{year}/{month}/{day}/
- ファイルの接頭語として日付を付与する
Fileの接頭語として日付を付与する場合は、Filenameを下記のようにします。
{year}{month}{day}data
結果は以下のスクリーンショットの通りです。
簡単に日次でデータをアーカイブ化できますね。
おわりに
兎にも角にも、データのコピーが出来ました。簡単ですね。