AzureBlobGetコンポーネントを使用して、Azure Blob Storageのライブデータに接続し、リアルタイム分析や分散アクセスのためにBlobからデータを取得するフローを作成できます。
このガイドでは、AzureBlobGetコンポーネントの最も一般的な使用方法を紹介します。今回は例として、ウェビナー企画やリード文書を検索して取得します。AzureBlobGetコンポーネントのプロパティ設定方法とフローの結果を確認します。
- AzureStorageコネクションの作成
- コンテナへの接続
- 単一のバイナリファイルの取得
- メタデータの取得
- CSVファイルの取得
- フォルダー内のすべてのCSVファイルの取得
- ファイルをループする
- 取得するファイルの制限
AzureStorageコネクションの作成
フローデザイナーの左下にあるコネクションペインでAzureStorageコネクションを作成します。詳細な設定方法については、AzureStorageコネクションの作成を参照してください。
コンテナへの接続
AzureBlobGetコンポーネントをダブルクリックしてストレージブラウザを開き、「Container」を選択すると、AzureBlobGetコンポーネントの「コンテナ名」プロパティが自動的に設定されます。また、ストレージブラウザでは「Queue」とメッセージを表示および変更できます。このとき、Azure Storage Explorerに切り替える必要はありません。
以下の画像では、「Container」では「sample-webinars」が選択されています。
単一のバイナリファイルの取得
以下に示す「no-code-camp/interviews/rec1.mp4」というビデオファイルのような、単一のファイルのみを取得する必要がある場合、ストレージブラウザでファイル選択が可能です。
「OK」をクリックすると、「Blob名」プロパティにストレージブラウザで選択した「no-code-camp/interviews/rec1.mp4」というパスが自動的に設定されます。
次に、AzureBlobGetコンポーネントのBinary出力ストリームを他のコンポーネントに接続します。例えば以下に示すようにコンポーネントを接続すると、取得したバイナリデータを.mp4ファイルに保存できます。
バイナリストリームをファイルに保存する
AzureBlobGetコンポーネントの次にMapperコンポーネントを配置し、その次にFilePutコンポーネントを配置します。
Mapperコンポーネントの「入力をそのまま出力」プロパティを「はい」に設定します。Mapperコンポーネントでは、ストリームデータを変更せずに渡していることを示す赤い矢印のバッジが表示されます。
Mapperコンポーネントをダブルクリックしてマッピングウィンドウを開き、左側のAzureBlobGetコンポーネントの「Blob名」プロパティを右側のFilePutコンポーネントの「ファイルパス」プロパティにリンクします。
フローを実行すると、FilePutコンポーネントは、Flow Serviceユーザーのホームフォルダの下に「no-code-camp/interviews/rec1.mp4」というrec1.mp4ファイルを出力します。
以下の図では、ツリーペインで作成されたフォルダーと、ファイルペインで作成されたファイルを確認できます。
注意
- FilePutコンポーネントは、宛先フォルダーがまだ存在しない場合、新たなフォルダーを作成します。
- デフォルトでは、FilePutコンポーネントは、宛先ファイルパスが既に存在する場合、それを上書きします。
メタデータの取得
AzureBlobGetコンポーネントを使用して、カスタムメタデータを取得できます。例えば、「カテゴリー」の「internal use」のようなメタデータを使用して、取得されるファイルをフィルタリングできます。
Azure Storage Explorerでファイルのカスタムメタデータを表示および編集できます。以下は、rec1.mp4ファイルのメタデータです。
「カテゴリー」のメタデータを取得するには、AzureBlobGetコンポーネントで、メタデータタブのプロパティ名「category」を定義します。Typeはデータ型を選択する項目です。ここでは「String」と設定します。
次に、マッピングウィンドウでコンポーネントプロパティのメタデータタブからcategoryをマッピングします。
メタデータの値を簡単に確認する方法
一時的にフローの内容を組み替えることで、メタデータの内容を簡単に確認することができます。
AzureBlobGetコンポーネントのリンクを解除し、新しいMapperコンポーネントを追加します。そして、メタデータタブのカテゴリーをテキスト出力ストリームにマッピングします。このマッピングは以下に示されています。
注意
このテストフローの実行結果をフローデザイナーで表示できるようにするために、EndResponseコンポーネントを追加します。これにより、フローは以下のようになります。
フローを実行すると、フローデザイナーの「フローの実行」ダイアログボックスに結果としてメタデータ「internal use」というテキストストリームが表示されます。
メタデータの内容を確認できたら、フローを元に戻しておきましょう。
CSVファイルの取得
CSVストリームを使用して、CSVファイルのフィールドや形式を処理します。「event-data」フォルダから「2022catalog.csv」というファイルを取得するには、下図のようにストレージブラウザでファイルを選択します。
OKをクリックすると、コンポーネントプロパティの「コンテナ名」と「Blob名」の両プロパティが自動的に設定されます。
次のステップで処理する今回のファイルのデータは以下のとおりです。
Citizen Integrator Meeting, 20220815 No-Code Camp, 20221210 RPA Seminar,20220104
フローデザイナーのワークスペースで、AzureBlobGetコンポーネントの横にある「BIN」と書かれたラベルをクリックし、「CSV」のストリームタイプに変更します。
ストリームペインで、「EventName」と「EventDate」のフィールドを定義します。
フローを実行すると、ストリームのコンテンツとCSVデータが表示されるのを確認できます。
フォルダ内のすべてのCSVファイルを取得
「event-data」フォルダー内のすべてのCSVファイルを取得するには、「Prefix」プロパティに「event-data/」というフォルダーパスを入力します。また、フォルダー内のすべてのCSVファイルにマッチさせるために、「Blob名」プロパティに正規表現パターンの「.*\.csv$」を入力します。
この正規表現パターンは、「.csvで終わるファイルに一致する、一つ以上の任意の文字が前にある」という意味です。
フローを実行すると、コンポーネントはマッチングするファイルを単一のストリームに結合し、下図のように表示されるのを確認できます。
注意
ループの後に
ループは、ループを終了させるコンポーネント(この場合は、フローの終了コンポーネント)まで実行され、次の繰り返しのためにAzureBlobGetコンポーネントに戻ります。
ファイルをループ処理する
ほとんどの場合、すべてのファイルを1つのストリームにまとめるのではなく、一致するファイルを処理するためにループを使用します。各ファイルをループ処理するには、「ループを開始」プロパティを「はい」に設定します。各ループの反復は、一致するファイルが含まれるストリームを出力します。
コンポーネントのプロパティは、次のようになります。
コンポーネントのストリームタイプのラベルは、「ループを開始」が「はい」に設定している場合、緑の枠が追加され、ループを使用していることが確認できます。
フローデザイナーでフローを実行するときには注意が必要です。フローデザイナーは出力ストリームを結合するため、コンポーネントがループを実行していても、前のフローと同じ結果が表示されます。
ループの結果をフローデザイナーで簡単に確認する方法として、EndResponseコンポーネントの「出力形態」プロパティを「最後のストリーム」に設定することで、AzureBlobGetの最後のストリームのみが出力されるようにできます。
その後、フローを実行すると、フローの出力は最後に一致したファイルである「2022catalog.csv」のデータのみ出力します。
取得するファイルの制限
「最大取得件数」プロパティを設定して、取得するファイルの数を指定できます。
「ループを開始」プロパティを「はい」に設定し、「最大取得件数」プロパティを「2」に設定してフローを実行すると、コンポーネントは「2019catalog.csv」と「2020catalog.csv」という2つのファイルをループ処理します。