Azure Data Factory または Synapse Analytics を使用して、Dynamics 365 (Microsoft Dataverse) または Dynamics CRM のデータをコピーして変換する

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Data Factory または Synapse パイプラインで Copy アクティビティを使用して、Dynamics 365 (Microsoft Dataverse) または Dynamics CRM との間でデータをコピーし、Data Flow を使用して Dynamics 365 (Microsoft Dataverse) または Dynamics CRM のデータを変換する方法について説明します。 詳細については、Azure Data Factory および Azure Synapse Analytics の概要記事を参照してください。

サポートされる機能

このコネクタは、次のアクティビティでサポートされます。

サポートされる機能 IR
Copy アクティビティ (ソース/シンク) ① ②
マッピング データ フロー (ソース/シンク)
Lookup アクティビティ ① ②

① Azure 統合ランタイム ② セルフホステッド統合ランタイム

コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの一覧については、サポートされるデータ ストアの表を参照してください。

注意

2020 年 11 月に Common Data Service は Microsoft Dataverse に名前が変更されました。 この記事は、最新の用語を反映して更新されています。

この Dynamics コネクタでは、オンラインとオンプレミスの両方で Dynamics バージョン 7 から 9 がサポートされます。 具体的には次のとおりです。

  • バージョン 7 は、Dynamics CRM 2015 にマップされます。
  • バージョン 8 は、Dynamics CRM 2016 および初期バージョンの Dynamics 365 にマップされます。
  • バージョン 9 は、以降のバージョンの Dynamics 365 にマップされます。

Dynamics のバージョンおよび製品でサポートされている認証の種類と構成については、次の表を参照してください。

Dynamics のバージョン 認証の種類 リンクされたサービスの例
Dataverse

Dynamics 365 Online

Dynamics CRM Online
Microsoft Entra サービス プリンシパル

Office 365

ユーザー割り当てマネージド ID
オンライン Dynamics と Microsoft Entra サービス プリンシパルまたは Office 365 認証
インターネットに接続する展開 (IFD) に対応したオンプレミス Dynamics 365

IFD 対応オンプレミス Dynamics CRM 2016

IFD 対応オンプレミス Dynamics CRM 2015
IFD IFD と IFD 認証に対応したオンプレミス Dynamics

注意

リージョンの探索サービスが非推奨になったため、Office 365 認証の使用時にグローバル探索サービスを利用するようにサービスがアップグレードされました。

重要

テナントとユーザーが Microsoft Entra ID で条件付きアクセスに関して構成されている場合、または多要素認証が必要な場合、およびその両方の場合は、Office 365 認証の種類を使用できません。 このような状況では、Microsoft Entra サービス プリンシパル認証を使用する必要があります。

具体的には、Dynamics 365 では、次のアプリケーションの種類がサポートされます。

  • Dynamics 365 for Sales
  • Dynamics 365 for Customer Service
  • Dynamics 365 for Field Service
  • Dynamics 365 for Project Service Automation
  • Dynamics 365 for Marketing

このコネクタでは、Finance、Operations、Talent など、上記以外のアプリケーションの種類はサポートされていません。

ヒント

Dynamics 365 Finance and Operations からデータをコピーするには、Dynamics AX コネクタを使用できます。

この Dynamics コネクタは Dynamics XRM ツールに基づいて構築されています。

前提条件

このコネクタを Microsoft Entra サービス プリンシパル認証で使用するには、Dataverse または Dynamics でサーバー間 (S2S) 認証を設定する必要があります。 最初に、アプリケーション ユーザー (サービス プリンシパル) を Microsoft Entra ID に登録します。 これを行う方法については、こちらを参照してください。 アプリケーションの登録時に、Dataverse または Dynamics でそのユーザーを作成し、アクセス許可を付与する必要があります。 これらのアクセス許可は直接付与することも、Dataverse または Dynamics でアクセス許可が付与されているチームにアプリケーション ユーザーを追加して間接的に付与することもできます。 Dataverse で認証するアプリケーション ユーザーを設定する方法の詳細については、こちらを参照してください。

はじめに

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。

UI を使用して Dynamics 365 (Microsoft Dataverse) または Dynamics CRM へのリンクされたサービスを作成する

次の手順を使用して、Azure portal UI で Dynamics 365 のリンク サービスを作成します。

  1. Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンクされたサービス] を選択して、[新規] をクリックします。

  2. Dynamics または Dataverse を検索し、Dynamics 365 (Microsoft Dataverse) または Dynamics CRM コネクタを選択します。

    Screenshot of the Dynamics 365 connector.

    Screenshot of the Dataverse connector.

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    Screenshot of linked service configuration for Dynamics 365.

コネクタの構成の詳細

以下のセクションでは、Dynamics に固有のエンティティの定義に使用されるプロパティについて詳しく説明します。

リンクされたサービスのプロパティ

Dynamics のリンクされたサービスでは、次のプロパティがサポートされます。

オンラインの Dynamics 365 および Dynamics CRM

プロパティ Description 必須
type type プロパティは、"Dynamics"、"DynamicsCrm"、"CommonDataServiceForApps" のいずれかに設定する必要があります。 はい
deploymentType Dynamics インスタンスの展開の種類。 オンライン Dynamics の場合、値を "Online" にする必要があります。 はい
serviceUri Dynamics インスタンスのサービス URL。ブラウザーからアクセスしたときに使用したものと同じ。 "https://<organization-name>.crm[x].dynamics.com" などです。 はい
authenticationType Dynamics サーバーに接続する認証の種類。 有効な値は、"AADServicePrincipal"、"Office365" および "ManagedIdentity" です。 はい
servicePrincipalId Microsoft Entra アプリケーションのクライアント ID。 はい (認証が "AADServicePrincipal" の場合)
servicePrincipalCredentialType サービス プリンシパル認証に使用する資格情報の種類。 有効な値は "ServicePrincipalKey" と "ServicePrincipalCert" です。

注: ServicePrincipalKey を使用することをお勧めします。 ServicePrincipalCert 資格情報の種類には既知の制限があり、サービスでキー コンテナーからシークレットを取得できないという一時的な問題が発生する可能性があります。
はい (認証が "AADServicePrincipal" の場合)
servicePrincipalCredential サービス プリンシパルの資格情報。

資格情報の種類として "ServicePrincipalKey" を使用する場合、servicePrincipalCredential には、リンク サービスのデプロイ時にサービスによって暗号化される文字列を設定できます。 または、Azure Key Vault 内のシークレットへの参照を設定できます。

資格情報として "ServicePrincipalCert" を使う場合は、servicePrincipalCredential から Azure Key Vault 内の証明書を参照し、証明書のコンテンツ タイプを必ず PKCS #12 にします。
はい (認証が "AADServicePrincipal" の場合)
username Dynamics に接続するためのユーザー名。 はい (認証が "Office365" の場合)
password username として指定したユーザー アカウントのパスワード。 このフィールドを "SecureString" でマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します はい (認証が "Office365" の場合)
資格情報 ユーザー割り当てマネージド ID を資格情報オブジェクトとして指定します。

1 つ以上のユーザー割り当てマネージド ID を作成し、データ ファクトリに割り当てて、ユーザー割り当てマネージド ID ごとに資格情報を作成します。
はい (認証が "ManagedIdentity" の場合)
connectVia データ ストアに接続するために使用される統合ランタイム。 値を指定しない場合、プロパティでは既定の Azure 統合ランタイムが使用されます。 いいえ

注意

以前の Dynamics コネクタでは、省略可能な organizationName プロパティを使用してオンラインの Dynamics CRM または Dynamics 365 インスタンスを識別していました。 そのプロパティはまだ機能しますが、代わりに新しい serviceUri プロパティを指定して、インスタンス検出のパフォーマンスを向上させることをお勧めします。

例: Microsoft Entra サービス プリンシパルとキー認証を使用したオンライン Dynamics

{  
    "name": "DynamicsLinkedService",  
    "properties": {  
        "type": "Dynamics",  
        "typeProperties": {  
            "deploymentType": "Online",  
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com",  
            "authenticationType": "AADServicePrincipal",  
            "servicePrincipalId": "<service principal id>",  
            "servicePrincipalCredentialType": "ServicePrincipalKey",  
            "servicePrincipalCredential": "<service principal key>"
        },  
        "connectVia": {  
            "referenceName": "<name of Integration Runtime>",  
            "type": "IntegrationRuntimeReference"  
        }  
    }  
}  

例: Microsoft Entra サービス プリンシパルと証明書認証を使用したオンライン Dynamics

{ 
    "name": "DynamicsLinkedService", 
    "properties": { 
        "type": "Dynamics", 
        "typeProperties": { 
            "deploymentType": "Online", 
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com", 
            "authenticationType": "AADServicePrincipal", 
            "servicePrincipalId": "<service principal id>", 
            "servicePrincipalCredentialType": "ServicePrincipalCert", 
            "servicePrincipalCredential": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<AKV reference>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<certificate name in AKV>" 
            } 
        }, 
        "connectVia": { 
            "referenceName": "<name of Integration Runtime>", 
            "type": "IntegrationRuntimeReference" 
        } 
    } 
} 

例:Office 365 認証を使用したオンライン Dynamics

{
    "name": "DynamicsLinkedService",
    "properties": {
        "type": "Dynamics",
        "typeProperties": {
            "deploymentType": "Online",
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com",
            "authenticationType": "Office365",
            "username": "test@contoso.onmicrosoft.com",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例: ユーザー割り当てマネージド ID 認証を使用したオンライン Dynamics

{
    "name": "DynamicsLinkedService",
    "properties": {
        "type": "Dynamics",
        "typeProperties": {
            "deploymentType": "Online",
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com",
            "authenticationType": "ManagedIdentity",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

IFD 対応 Dynamics 365 および Dynamics CRM (オンプレミス)

オンライン Dyanmics と比べた場合に追加されたプロパティは、hostNameport です。

プロパティ Description 必須
type type プロパティは、"Dynamics"、"DynamicsCrm"、"CommonDataServiceForApps" のいずれかに設定する必要があります。 はい。
deploymentType Dynamics インスタンスの展開の種類。 IFD 対応オンプレミス Dynamics の場合、値を "OnPremisesWithIfd" にする必要があります。 はい。
hostName オンプレミス Dynamics サーバーのホスト名。 はい。
port オンプレミス Dynamics サーバーのポート。 いいえ。 既定値は 443 です。
organizationName Dynamics インスタンスの組織の名前。 はい。
authenticationType Dynamics サーバーに接続する認証の種類。 IFD 対応オンプレミス Dynamics の場合、"Ifd" を指定します。 はい。
username Dynamics に接続するためのユーザー名。 はい。
password username に指定したユーザー アカウントのパスワード。 このフィールドを "SecureString" でマークすることで安全に保存できます。 または、Key Vault にパスワードを格納して、データ コピーの実行時にコピー アクティビティがそこからプルするようにできます。 詳しくは、「Azure Key Vault への資格情報の格納」をご覧ください。 はい。
connectVia データ ストアに接続するために使用される統合ランタイム。 値を指定しない場合、プロパティでは既定の Azure 統合ランタイムが使用されます。 いいえ

例:IFD 認証を使用する IFD 対応オンプレミス Dynamics

{
    "name": "DynamicsLinkedService",
    "properties": {
        "type": "Dynamics",
        "description": "Dynamics on-premises with IFD linked service using IFD authentication",
        "typeProperties": {
            "deploymentType": "OnPremisesWithIFD",
            "hostName": "contosodynamicsserver.contoso.com",
            "port": 443,
            "organizationName": "admsDynamicsTest",
            "authenticationType": "Ifd",
            "username": "test@contoso.onmicrosoft.com",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

データセットのプロパティ

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。 このセクションでは、Dynamics データセット でサポートされるプロパティの一覧を示します。

Dynamics との間でのデータ コピーについては、次のプロパティがサポートされています。

プロパティ Description 必須
type データセットの type プロパティは、"DynamicsEntity"、"DynamicsCrmEntity"、"CommonDataServiceForAppsEntity" のいずれかに設定する必要があります。 はい
entityName 取得するエンティティの論理名。 ソースの場合は「いいえ」 (アクティビティ ソースが "query" として指定されている場合)、シンクの場合は「はい」

{
    "name": "DynamicsDataset",
    "properties": {
        "type": "DynamicsEntity",
        "schema": [],
        "typeProperties": {
            "entityName": "account"
        },
        "linkedServiceName": {
            "referenceName": "<Dynamics linked service name>",
            "type": "linkedservicereference"
        }
    }
}

コピー アクティビティのプロパティ

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、Dynamics ソースとシンクの種類でサポートされるプロパティの一覧を示します。

ソースの種類としての Dynamics

Dynamics からデータをコピーするために、コピー アクティビティの source セクションでは次のプロパティがサポートされています。

プロパティ Description 必須
type コピー アクティビティのソースの type プロパティは、"DynamicsSource"、"DynamicsCrmSource"、"CommonDataServiceForAppsSource" のいずれかに設定する必要があります。 はい
query FetchXML は、オンラインおよびオンプレミスの Dynamics で使用される独自のクエリ言語です。 次の例を参照してください。 詳細については、「FetchXML を使用したクエリの構築」を参照してください。 いいえ (データセットの entityName が指定されている場合)

注意

PK 列は、FetchXML クエリで構成する列のプロジェクションに含まれていない場合でも常にコピーされます。

重要

  • Dynamics からデータをコピーするとき、Dynamics からシンクへの明示的な列マッピングは任意です。 ただし、決定的なコピー結果を保証するために、マッピングを強くお勧めします。
  • サービスでは、作成 UI でスキーマをインポートするときに、スキーマを推測します。 これは、ソース列リストを初期化するために、Dynamics のクエリ結果から上位の行をサンプリングすることによって行われます。 その場合、上位の行に値がない列は省略されます。 明示的なマッピングがない場合でも、コピーの実行には同じビヘイビアーが適用されます。 マッピングには、自分で確認したうえで列を追加することができます。コピーの実行時には、それが反映されます。

"activities":[
    {
        "name": "CopyFromDynamics",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Dynamics input dataset>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DynamicsSource",
                "query": "<FetchXML Query>"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

FetchXML クエリの例

<fetch>
  <entity name="account">
    <attribute name="accountid" />
    <attribute name="name" />
    <attribute name="marketingonly" />
    <attribute name="modifiedon" />
    <order attribute="modifiedon" descending="false" />
    <filter type="and">
      <condition attribute ="modifiedon" operator="between">
        <value>2017-03-10 18:40:00z</value>
        <value>2017-03-12 20:40:00z</value>
      </condition>
    </filter>
  </entity>
</fetch>

シンクの種類としての Dynamics

Dynamics にデータをコピーするために、コピー アクティビティの sink セクションでは次のプロパティがサポートされています。

プロパティ Description 必須
type コピー アクティビティのシンクの type プロパティは "DynamicsSink"、"DynamicsCrmSink"、"CommonDataServiceForAppsSink" のいずれかに設定する必要があります。 はい。
writeBehavior 操作の書き込み動作。 この値は "Upsert" にする必要があります。 はい
alternateKeyName upsert を実行するためにエンティティに定義されている代替キー名。 いいえ。
writeBatchSize 各バッチで Dynamics に書き込まれたデータの行数。 いいえ。 既定値は 10 です。
ignoreNullValues 書き込み操作時に、キー フィールド以外の入力データからの null 値を無視するかどうか。

有効な値は TRUEFALSE です。
  • TRUE: upsert または更新操作を行うときに、対象オブジェクト内のデータが変更されないようにします。 挿入操作を実行するときに、定義済みの既定値を挿入します。
  • FALSE: upsert または更新操作を行うときに、対象オブジェクト内のデータを null 値に更新します。 挿入操作を実行するときに、null 値を挿入します。
いいえ。 既定値は FALSE です。
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

注意

Dynamics シンクでのシンク writeBatchSize とコピー アクティビティ parallelCopies のどちらでも、既定値は 10 です。 そのため、既定で 100 個のレコードが同時に Dynamics に送信されます。

Dynamics 365 オンラインでは、1 組織あたりの同時バッチ呼び出し数が 52 という制限があります。 この制限を超えた場合、最初の要求が実行される前に "サーバー ビジー" 例外がスローされます。 このような同時呼び出しの帯域幅調整を避けるには、writeBatchSize を 10 以下に保ちます。

writeBatchSizeparallelCopies の最適な組み合わせは、エンティティのスキーマによって異なります。 スキーマの要素には、列の数や行のサイズに加えて、これらの呼び出しにフックされるプラグイン、ワークフロー、またはワークフロー アクティビティの数が含まれます。 writeBatchSize (10) × parallelCopies (10) の既定の設定は、Dynamics サービスによる推奨設定です。 この値は、ほとんどの Dynamics エンティティに対して機能しますが、最高のパフォーマンスをもたらすとは限りません。 コピー アクティビティ設定の組み合わせを調整することで、パフォーマンスを調整できます。

"activities":[
    {
        "name": "CopyToDynamics",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Dynamics output dataset>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "DynamicsSink",
                "writeBehavior": "Upsert",
                "writeBatchSize": 10,
                "ignoreNullValues": true
            }
        }
    }
]

ビューからデータを取得する

Dynamics ビューからデータを取得するには、ビューの保存されているクエリを取得し、そのクエリを使用してデータを取得する必要があります。

異なる種類のビューを格納する 2 つのエンティティがあります。"保存されたクエリ" はシステム ビューを格納し、"ユーザー クエリ" はユーザー ビューを格納します。 ビューの情報を取得するには、次の FetchXML クエリを参照し、"TARGETENTITY" を savedquery または userquery に置き換えます。 各エンティティ型には、必要に応じてクエリに追加できる、より多くの属性が用意されています。 savedquery エンティティuserquery エンティティに関する詳細を確認してください。

<fetch top="5000" >
  <entity name="<TARGETENTITY>">
    <attribute name="name" />
    <attribute name="fetchxml" />
    <attribute name="returnedtypecode" />
    <attribute name="querytype" />
  </entity>
</fetch>

また、フィルターを追加してビューをフィルター処理することもできます。 たとえば、アカウント エンティティの "My Active Accounts" という名前のビューを取得するには、次のフィルターを追加します。

<filter type="and" >
    <condition attribute="returnedtypecode" operator="eq" value="1" />
    <condition attribute="name" operator="eq" value="My Active Accounts" />
</filter>

Dynamics のデータ型のマッピング

次の表は、Dynamics からデータをコピーするときの、Dynamics のデータ型からサービスの中間データ型へのマッピングを示しています。 コピー アクティビティがソース スキーマに、またデータ型がシンクにマップするしくみについては、スキーマとデータ型のマッピングに関するページを参照してください。

次のマッピング表を使用して、ソースの Dynamics のデータ型に基づいて、対応する中間データ型をデータセット構造に構成します。

Dynamics データ型 サービスの中間データ型 ソースとしてサポート シンクとしてサポート
AttributeTypeCode.BigInt Long
AttributeTypeCode.Boolean Boolean
AttributeType.Customer GUID ✓ (ガイダンスを参照)
AttributeType.DateTime Datetime
AttributeType.Decimal Decimal
AttributeType.Double Double
AttributeType.EntityName String
AttributeType.Integer Int32
AttributeType.Lookup GUID ✓ (ガイダンスを参照)
AttributeType.ManagedProperty Boolean
AttributeType.Memo String
AttributeType.Money Decimal
AttributeType.Owner GUID ✓ (ガイダンスを参照)
AttributeType.Picklist Int32
AttributeType.Uniqueidentifier GUID
AttributeType.String String
AttributeType.State Int32
AttributeType.Status Int32

Note

Dynamics データ型の AttributeType.CalendarRulesAttributeType.MultiSelectPicklistAttributeType.PartyList はサポートされていません。

ルックアップ フィールドへのデータの書き込み

Customer や Owner のように、複数のターゲットがあるルックアップ フィールドにデータを書き込むには、次のガイダンスと例に従ってください。

  1. フィールド値と対応するターゲット エンティティ名の両方がソースに含まれるようにします。

    • すべてのレコードが同じターゲット エンティティにマップされる場合は、次のいずれかの条件を確認してください。
      • ターゲット エンティティ名を格納する列がソース データにあること。
      • コピー アクティビティのソースで、ターゲット エンティティを定義するための列を追加済みであること。
    • 異なるレコードが異なるターゲット エンティティにマップされる場合は、対応するターゲット エンティティ名を格納する列がソース データにあることを確認してください。
  2. 値とエンティティ参照の両方の列をソースからシンクにマップします。 エンティティ参照列は、特別な命名パターン {lookup_field_name}@EntityReference を持つ仮想列にマップする必要があります。 この列は、実際には Dynamics に存在しません。 この列が、指定されたマルチターゲット ルックアップ フィールドのメタデータ列であることを示すために使用されます。

たとえば、ソースに次の 2 つの列があるとします。

  • GUID 型の CustomerField 列。これは、Dynamics のターゲット エンティティの主キー値です。
  • String 型の Target 列。これは、ターゲット エンティティの論理名です。

また、そのようなデータを、シンク Dynamics のエンティティ フィールド CustomerField (Customer 型) にコピーするとします。

コピー アクティビティの列マッピングで、次のように 2 つの列をマップします。

  • CustomerFieldCustomerField に。 このマッピングは通常のフィールド マッピングです。
  • TargetCustomerField@EntityReference に。 シンク列は、エンティティ参照を表す仮想列です。 そのようなフィールド名は、スキーマをインポートしても現れないため、マッピングに入力します。

Dynamics lookup-field column mapping

すべてのソース レコードが同じターゲット エンティティにマップされ、ソース データにターゲット エンティティ名が含まれていない場合、簡単な方法は次のとおりです。コピー アクティビティのソースで、列を追加します。 パターン {lookup_field_name}@EntityReference を使用して新しい列に名前を付け、値をターゲット エンティティ名に設定してから、通常どおりの列マッピングに進みます。 ソースとシンクで列名が同一の場合、コピー アクティビティでは既定で名前によって列がマップされるため、明示的な列マッピングをスキップすることもできます。

Dynamics lookup-field adding an entity-reference column

代替キーを使用してルックアップ フィールドにデータを書き込む

代替キー列を使用してルックアップ フィールドにデータを書き込むには、次のガイダンスと例に従います。

  1. ソースにすべてのルックアップ キー列が含まれていることを確認します。

  2. 代替キー列は、{lookup_field_name}@{alternate_key_column_name} という特殊な名前付けパターンを使用して列にマップする必要があります。 この列は、Dynamics には存在しません。 このことは、この列を使用して、ターゲット エンティティ内のレコードが検索されることを示します。

  3. マッピング データ フローのシンク変換の [マッピング] タブに移動します。 ルックアップ フィールドで出力列として代替キーを選択します。 後の値は、この代替キーのキー列を示します。

    Screenshot shows selecting alternate key columns.

  4. 選択すると、代替キー列が自動的に下に表示されます。

    Screenshot shows mapping columns to lookup fields via alternate keys step 1.

  5. 左側の入力列を出力列にマップします。

    Screenshot shows mapping columns to lookup fields via alternate keys step 2.

Note

現在、これは、マッピング データ フローのシンク変換でインライン モードを使用するときにのみサポートされます。

Mapping Data Flow のプロパティ

マッピング データ フローでデータを変換する場合、Dynamics のテーブルに対して読み書きできます。 詳細については、マッピング データ フローのソース変換シンク変換に関する記事をご覧ください。 ソースとシンクの種類として、Dynamics データセットまたはインライン データセットを使用することができます。

ソース変換

次の表に、Dynamics でサポートされるプロパティの一覧を示します。 これらのプロパティは、 [ソース オプション] タブで編集できます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
エンティティ名 取得するエンティティの論理名。 インライン データセットを使用するときは、はい - (インライン データセットのみ)
エンティティ
クエリ FetchXML は、オンラインおよびオンプレミスの Dynamics で使用される独自のクエリ言語です。 次の例を参照してください。 詳細については、「FetchXML を使用したクエリの構築」を参照してください。 いいえ String query

注意

入力の種類としてクエリを選択した場合は、テーブルから列の型を取得できません。 既定で、文字列として扱われます。

Dynamics ソース スクリプトの例

ソースの種類として Dynamics データ セットを使用すると、関連付けられているデータ フロー スクリプトは次のようになります。

source(allowSchemaDrift: true,
	validateSchema: false,
	query: '<fetch mapping='logical' count='3 paging-cookie=''><entity name='new_dataflow_crud_test'><attribute name='new_name'/><attribute name='new_releasedate'/></entity></fetch>') ~> DynamicsSource

インライン データセットを使用する場合、関連付けられているデータ フロー スクリプトは次のようになります。

source(allowSchemaDrift: true,
	validateSchema: false,
	store: 'dynamics',
	format: 'dynamicsformat',
	entity: 'Entity1',
	query: '<fetch mapping='logical' count='3 paging-cookie=''><entity name='new_dataflow_crud_test'><attribute name='new_name'/><attribute name='new_releasedate'/></entity></fetch>') ~> DynamicsSource

シンク変換

次の表に、Dynamics シンクでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [シンク オプション] タブで編集できます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
代替キー名 update、upsert、または delete を実行するためにエンティティに定義されている代替キー名。 いいえ - alternateKeyName
更新方法 対象となるデータベースに対して許可される操作を指定します。 既定では、挿入のみが許可されます。
行を更新、アップサート、または削除するには、それらのアクションに対して行をタグ付けするために行の変更変換が必要になります。
はい true または false insertable
updateable
upsertable
deletable
エンティティ名 書き込むエンティティの論理名。 インライン データセットを使用するときは、はい - (インライン データセットのみ)
エンティティ

Dynamics シンク スクリプトの例

シンクの種類として Dynamics データ セットを使用すると、関連付けられているデータ フロー スクリプトは次のようになります。

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:true,
    insertable:true,
    updateable:true,
    upsertable:true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> DynamicsSink

インライン データセットを使用する場合、関連付けられているデータ フロー スクリプトは次のようになります。

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    store: 'dynamics',
    format: 'dynamicsformat',
    entity: 'Entity1',
    deletable: true,
    insertable: true,
    updateable: true,
    upsertable: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> DynamicsSink

Lookup アクティビティのプロパティ

プロパティの詳細については、Lookup アクティビティに関するページを参照してください。

Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。