4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ASTERIA WarpAdvent Calendar 2021

Day 2

ASTERIA WARPでAzure CosmosDBにアップロードする

Last updated at Posted at 2021-12-01

業務でAzureをよく使う関係で,Microsoft Azure アダプターを導入しています。リレーショナルにしづらいデータを格納したり,Azure Searchの検索対象にしたりするのに便利です。しかしながら,ASTERIA WARPでの実例があまり見当たらないのでここに書いてみることにしました。

CosmosDB コンテナー作成

テスト用にコンテナーを作成します。

  • Container id:Test
  • Partition key:/type(テストなので何でもよいのですが,今回は type をパーティションキーにします)

image.png

フロー作成

今回の記事に使うフローを作成します。
image.png

CSVから顧客データ(架空)を読取り,CosmosDBにアップロードするだけのシンプルなフローです。
image.png

CSVの準備

CSVは個人情報テストデータジェネレーターで作成しました。
idとして使うため,「コード」列は自分で追加します。
image.png

CSVを読み取るためのFileGetは以下のように設定します。
image.png

ParameterListに変換

マッパーを追加して,以下のように設定します。

  • ループを開始:はい(今回は1行ずつアップロードします)
  • ストリーム型:ParameterList(RecordやCSVのままだとJSONに変換した時に配列になり,エラーが発生します)
  • フィールド名:id(CosmosDBのid)
  • フィールド名:type(CosmosDBのパーティションキー)
    image.png

以下のように連結します。

  • id:コード(コードをCosmosDBのidとして使います)
  • type:customer(今回は固定の文字列を使います)
    image.png

JSONに変換

JSONEncodeを追加し,以下のように設定します。
image.png

以下のようなJSONテキストになります。
image.png

CosmosDBにアップロード

AzureDocumentDBPutを追加し,以下のように設定します。

  • コネクション情報,データベース名(自分の環境を使用)
  • コレクション名:Test
  • 実行する処理:Create
  • パーティションキー:["customer"](typeと同じ値。行によって変えたい場合は変数やマッパーを使用)

image.png

パーティションキー

ポイントはパーティションキーで,大括弧と引用符で囲む必要があります。これを設定しないと以下のようなエラーが発生します。

空白の場合
The partition key supplied in x-ms-partitionkey header has fewer components than defined in the the collection
customerだけの場合
Partition key customer is invalid

実行結果

10件のデータをアップロードすることができました。
image.png

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?