Factoryのコピーアクティビティでスキーマ構造を動的に定義するツイートシェア送るこんばんは。Factoryのコピーアクティビティで、スキーマ構造を動的に定義する方法を試してみたので、備忘メモを残しておきたいと思います。Databaseのテーブルへコピーするシナリオで、CSVとテーブル間のマッピングを動的に指定できるようにしたい。今回は、STEPを2つに分けて実装を検討してみました。STEP1では、まずは素直に要件を実現すること(=スキーマを動的に指定できるようにすること)を考えます。STEP2では、STEP1の実装をもう一歩、実際の運用を想定した実装に改良してみたいと思います。パイプライン実行時、そのパラメータにマッピングを定義したオブジェクトを指定するようにすればいけます。公式ドキュメント上の解説はここ。Docs以下実装方法。コピーアクティビティのマップタブから、「動的コンテンツの追加」に進む。パイプライン式ビルダーで、新しいObject型のパラメータを追加する。追加したパラメータを選択すると、自動的にパイプライン式が生成される。これでパイプラインの設定は終わり。この状態でパイプラインを実行(今回はデバッグを実行)すると、パラメータ値の指定を求められるので、今回マップに設定しているパラメータ(mapping4)に、スキーマ構造を渡す。スキーマ構造の定義は、公式ドキュメントにサンプルがあるので、それを参考に組み立てる。]}今回自分はヘッダのないCSVファイルをソースにしていたので、source側の列名設定の仕方が少し変わって以下のように。]}ソースのヘッダがない場合は、1,2のような序数で列を指定する必要があるらしい。ファイルからデータをコピーするには、列を名前ではなく序数で表します。Docsこれをパラメータとして渡すときは、以下のようにちょっと変わった書き方をする必要があるのですね。これは、一度パラメータを使わないマッピングを構成してみて、そのARMテンプレートをダウンロードして確認した。},STEP2:パラメータを毎回自動的に付与できるようにするさて、STEP1の実装で、スキーマを動的に指定できるようになりましたが、実運用では、パイプラインの実行都度、このパラメータを渡してやる必要があるかと思います。APIを利用する方法でしょうか。Docsただ、この場合APIをキックする別のしくみが必要になってきそうです。Factoryの中で完結できるような方法はないかなぁと思って探したら、使えそうなものがありました。Activity」です。Docsこれを使うと、任意のデータの内容を取得して、後続のアクティビティに値を渡すことができるようになります。スキーマ構造を定義したファイルを別途事前に用意しておき、コピーアクティビティの前にLookupアクティビティでそのファイル内容を読み取り、それを後続のコピーアクティビティのマップ定義のパラメータとして渡すようにすれば要件を実現できそうです。Storage)などに置いておきます。そのデータを参照するLookupアクティビティをコピーアクティビティの前に配置。コピーアクティビティ側では、STEP1で動的に定義できるようにしたマップの定義式を以下のように変更します。これで、Lookupアクティビティの結果を使えるようになります。Factoryのコピーアクティビティでスキーマ構造を動的に定義する方法のメモでした。参考になった!という方は、下のいいねボタンをポチって頂けますと励みになります!ご覧いただきありがとうございました。AzureFOLLOWこの記事を気に入っていただけたらシェアをお願いします!ツイートシェア送るコメントを残すメールアドレスが公開されることはありません。USYuu113初めまして。ゆうたろうと申します。兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。Clusterの違いProfile初めまして。東京で働くデータ分析屋兼アプリケーションエンジニアです。旅行とカメラと江戸時代が趣味です。日々勉強したこと、趣味のことについて、自分の記録も兼ねて。旅行記残そうと思って始めたブログですが、いつのまにか技術の話ばっかりに・・*記事はすべて個人の見解で、かつ記載時点の情報に基づいています。(AZ-104)を3日で取得した話。現AZ-305)を1週間で取得した話。Associate資格(AZ-204)を10日間で取得した話。(PL-900)を取得した話。2020【2022年最新版】Azureの認定資格を1ヶ月で全部とる。(DP-900)を2日で取得した話。(AI-900)を2日で取得した話。