jsonファイルからデータベースにデータをコピーしようとしています。データベースには、同じjsonフィールドに入力する必要のある2つの列があります。ただし、このマッピングを行うと、アクティビティの実行時にエラーが発生しますAn item with the same key has already been added
。これを多くのマッピングに行うことはできませんか?
ソースデータセットスキーマの1つの列を宛先の複数の列にマップすることは、ADFではまだサポートされていません。
ただし、ソースデータセットスキーマを変更して列が重複するようにすることで、これを実現する方法は他にもあります。次に、これらの重複する列を使用して、異なる宛先列にマップできます。
SQLデータセットの場合と同様に、「xxxからcolumn1をcolumn1Aとして、column1をcolumn1Bとしてxxxから選択」などのSQLクエリを使用して、ソースデータセット内の重複する列を取得できます。次に、column1AをdestCol1に、column1BをdestCol2にマップできます。
この場合のJSONファイルについては、jsonPathDefinitionを使用して重複する列を定義できます。参照https://docs.microsoft.com/en-us/azure/data-factory/supported-file-formats-and-compression-codecs#json-format
たとえば、次のような形式のjsonがあります
{"a":1,"b":2}
次に、次のようなデータセット形式のプロパティを設定できます。
"format": {
"type": "JsonFormat",
"filePattern": "setOfObjects",
"jsonPathDefinition": {
"a1": "$.['a']",
"b": "$.['b']",
"a2": "$.['a']"
}
},
ソースデータセットスキーマに3つの列a1、b、a2を作成し、a1とa2は同じjsonフィールドaを参照します。次に、これらの列を宛先の異なる列にマップできるようになります。
ありがとう
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加