Skip to content
Last updated

Microsoft Dynamics 365 Sales インポート連携

この Treasure Data 連携により、デジタルセールス組織に最新のリモートコラボレーション機能を提供し、優れたチームワークとスムーズなエンゲージメントを実現します。

  • より強固な関係を見つけ、構築する
  • 生産性とパフォーマンスを向上させる
  • 顧客の単一ビューを取得する

このインポート連携により、MS Dynamics 365 から Treasure Data へ、コンタクトやトランザクションデータ(見積もりや受注を含む)を取り込むことができます。

前提条件

  • Treasure Data の基本知識
  • Client Credentials 認証: Azure Active Directory および Dynamics CRM セキュリティ設定にアクセスするための管理者権限
  • OAuth 認証: 同意を付与するための Azure「エンタープライズアプリケーション」へのアクセス権を持つテナント管理者またはユーザー

増分データ読み込みについて

  • 増分読み込みが有効な場合、Dynamics API に発行されるクエリには $filter と $orderby ステートメントが含まれます。$filter は目的の条件でデータをクエリし、$orderby はデータを降順で並べ替えます
  • 最初に受信した値は、次回のジョブフィルターの参照として保持されます。次のジョブの $filter は前回のジョブデータを除外し、新しいデータのみを取得します
  • このプロセスは後続の実行で繰り返されます

  • 増分読み込みが有効な場合、終了時刻は空白のままにします(デフォルトでは現在時刻に設定されます)
  • フィルター列(デフォルトでは modifiedon)には、null または空の値を含めることはできません

以下は、増分読み込みが有効な場合の例です。

  • 前提条件/条件
    • 開始時刻 = 2021-01-01T00:03:01Z
    • ジョブは毎日実行するようにスケジュール
  • 1回目のジョブ現在時刻 = 2021-01-15T00:03:01Z: $filter=modifiedon > 2021-01-01T00:03:01Z and modifiedon<= 2021-01-15T00:03:01Z, $orderby = modifiedon desc. 最初のレコード結果は modifiedon = 2021-01-10T00:00:00Z
  • 2回目のジョブ現在時刻 = 2021-01-16T00:03:01Z: $filter=modifiedon > 2021-01-10T00:00:00Z and modifiedon<= 2021-01-16T00:03:01Z, $orderby = modifiedon desc. 最初のレコード結果は modifiedon = 2021-01-16T00:03:01Z
  • 3回目のジョブ現在時刻 = 2021-01-17T00:03:01Z:$filter=modifiedon > 2021-01-16T00:03:01Z and modifiedon<= 2021-01-17T00:03:01Z, $orderby = modifiedon desc. 最初のレコード結果は modifiedon = 2021-01-17T00:00:01Z
  • ...

Client ID と Client Secret の取得

これらの値は、Client Credentials 認証オプションを使用して接続するために必要です。OAuth オプションを使用して認証する場合は、これらはオプションです。

Microsoft のドキュメントに従って、クライアントアプリケーションを作成し、Client ID と Client Secret を取得してください。

https://docs.microsoft.com/en-us/powerapps/developer/data-platform/use-single-tenant-server-server-authentication#azure-application-registration

登録したアプリケーションに対して、最小限の権限を持つカスタムセキュリティロールを作成する必要があります。以下を参照してください。

エンティティタイプ

以下の設定でインポートすることで、利用可能なすべてのエンティティを取得できます。

  • Entity Type = entity
  • Filter Column = overwritetime
  • Start Time = 1800-06-21T00:00:00Z

この連携は、汎用的な設定でほぼすべてのエンティティをサポートしていますが、特定の設定が必要なエンティティに気づいた場合は、サポートにお問い合わせください。

TD Console を使用した接続の作成

新しい接続の作成

クエリを実行する前に、Treasure Data でデータ接続を作成して設定する必要があります。データ接続の一部として、連携にアクセスするための認証を提供します。

  1. TD Console を開きます。

  2. Integrations Hub > Catalog に移動します。

  3. Microsoft Dynamic 365 Sales を検索して選択します。

  1. Create Authentication を選択します。

  1. MS Dynamics のドメイン名を入力します。

  2. 以下のいずれかの認証方法を選択します。

  1. OAuth を選択します。

  2. 認証するための資格情報を入力します。

  3. オプションで、「Click here and log in to Microsoft Dynamics 365 to grant consent」を選択します。

  4. Integrations Hub > Catalog に戻ります。

  5. Microsoft Dynamics 365 Sales を検索して選択します。

  6. Domain の値を入力します。

  7. OAuth Authentication Method を選択します。

  8. 新しく作成した OAuth 接続を選択します。

  9. OAuth 接続フィールドの定義を確認します。

Treasure Data へのデータ転送

認証済み接続を作成すると、自動的に Authentications に移動します。

  1. 作成した接続を検索します。

  2. New Source を選択します。

  3. Data Transfer フィールドで Source の名前を入力します。

  1. Next を選択します。

Source Table ダイアログが開きます。

以下のパラメータを編集します。

パラメーター説明必須
Entity Typeエンティティの論理名。例: contact、sales_order、account...すべての利用可能なエンティティを取得するにはfetch Entity Typeを使用してくださいはい
Filter Columnデータをフィルタリングする列(日時列のみサポート)いいえ
Start TimeUTC形式 YYYY-MM-DDThh:mm:ssZ。このタイムスタンプから変更されたデータをインポートします。 - Start Timeフィールドは排他的です。つまり、この値と等しいデータはダウンロードされません。この値と等しいデータを含めたい場合は、時刻を1秒早く設定してください(End Timeは包含的です)いいえ
End Timeこのフィールドはオプションです。指定しない場合は現在時刻が使用されます。UTC形式 YYYY-MM-DDThh:mm:ssZ。このタイムスタンプから変更されたデータをインポートします。 Incremental loadingが有効な場合は、このフィールドを空白のままにすることを推奨します。いいえ
Custom Expression Filter- データインポートを絞り込むためのカスタムフィルター式を入力できるテキストエリア - このフィルターは、ANDオペレーターを使用して時間ベースのフィルターと組み合わされます - 時間ベースのフィルタリングのみが必要な場合は空のままにします - カスタムフィルター式の作成方法の詳細については、以下の「カスタムフィルター式の構築」セクションを参照してください
Incremental Loading?有効にすると、最後の取り込みから新しいデータのみをインポートします。いいえ
Skip Invalid Data?列のデータ型を既知の値に変換できない場合、その行はスキップされます。 処理された行の30%以上が無効な場合、ジョブは失敗ステータスで停止します。いいえ

カスタムフィルター式の構築

基本構文

カスタムフィルター式は以下で構成されます:

  • フィールド名(例: revenue、classification、status)
  • 演算子(例: eq、ne、gt)
  • 値(データ型に基づいて適切にフォーマットする必要があります)

演算子

  1. 比較演算子

    • eq - 等しい: status eq 'active'
    • ne - 等しくない: classification ne 'confidential'
    • gt - より大きい: revenue gt 1000000
    • ge - 以上: priority ge 2
    • lt - より小さい: completion lt 100
    • le - 以下: risk_level le 3
  2. 論理演算子

    • and - 両方の条件が真でなければならない: status eq 'active' and revenue gt 1000000
    • or - いずれかの条件が真であればよい: type eq 'commercial' or type eq 'residential'
    • not - 条件を否定する: not (classification eq 'confidential')

値のフォーマット

  • テキスト: シングルクォート - 'active''confidential'
  • 数値: クォートなし - 10000002.5
  • 日付: datetime'2024-01-08T00:00:00Z'
  • GUID: guid'12345678-1234-1234-1234-123456789012'

関数

  • startswith(fieldname, 'value') - フィールドが値で始まるかチェックします
  • endswith(fieldname, 'value') - フィールドが値で終わるかチェックします
  • substringof('value', fieldname) - フィールドに値が含まれているかチェックします

基本的なフィルター

revenue gt 1000000 and status eq 'active

複雑なフィルター

(classification ne 'confidential' and building_type ne 'government') or 'security_level eq 'public' and revenue gt 5000000)

関数の使用

not (startswith(customer_name, 'Gov')) and not (substringof('classified', description))

ベストプラクティス

インポートで使用する前に、Dynamics 365のAPIを使用してフィルターをテストしてください

シンプルな条件から始めて、徐々に複雑さを構築してください

条件を明確にグループ化するために括弧を使用してください

フィールド名がDynamics 365システムのフィールド名と正確に一致していることを確認してください

フィールド名は大文字と小文字を区別します

テキスト値はシングルクォートで囲む必要があります

日付値は正しいUTC形式である必要があります

Data Settings

Data Settingsページは必要に応じて変更できますが、ページをスキップすることもできます。

オプションで、以下のパラメーターを編集します:

パラメーター説明必須
Retry Limit各API呼び出しの最大再試行回数。いいえ
Initial retry time wait in millis最初の再試行の待機時間(ミリ秒単位)。いいえ
Max retry wait in millsAPI呼び出しを諦める前の最大待機時間。いいえ
HTTP Connect TimeoutAPI呼び出し時に接続がタイムアウトするまでの時間。いいえ
HTTP Read Timeoutリクエストにデータを書き込むのを待つ時間。いいえ
Column Settings結果から列を削除したり、そのデータ型を定義したりできます。 列名を更新しないでください。更新すると、その列の値がnullになります。いいえ
  1. Nextを選択します。

Data Preview

インポートを実行する前に、Generate Preview を選択してデータのプレビューを表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

  1. Next を選択します。Data Preview ページが開きます。
  2. データをプレビューする場合は、Generate Preview を選択します。
  3. データを確認します。

Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

  1. Next を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。

  2. Database を選択 > Select an existing または Create New Database を選択します。

  3. オプションで、database 名を入力します。

  4. Table を選択 > Select an existing または Create New Table を選択します。

  5. オプションで、table 名を入力します。

  6. データをインポートする方法を選択します。

    • Append (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。
    • Always Replace - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
    • Replace on New Data - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
  7. Timestamp-based Partition Key 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。

  8. データストレージの Timezone を選択します。

  9. Schedule の下で、このクエリを実行するタイミングと頻度を選択できます。

一度だけ実行

  1. Off を選択します。
  2. Scheduling Timezone を選択します。
  3. Create & Run Now を選択します。

定期的に繰り返す

  1. On を選択します。
  2. Schedule を選択します。UI では、@hourly@daily@monthly、またはカスタム cron の 4 つのオプションが提供されます。
  3. Delay Transfer を選択して、実行時間の遅延を追加することもできます。
  4. Scheduling Timezone を選択します。
  5. Create & Run Now を選択します。

転送が実行された後、Data Workbench > Databases で転送の結果を確認できます。

Workflowを使用したMS Dynamics 365 Salesからのインポート

ワークフローのtd_load>:オペレーターを使用して、MS Dynamics 365 Saleからデータをインポートできます。SOURCEを既に作成している場合は、それを実行できます

  1. ソースを特定します。

  2. 一意のIDを取得するには、Sourceリストを開き、MS Dynamics 365 Salesでフィルタリングします。

  3. メニューを開き、Copy Unique IDを選択します。

  1. td_load>オペレーターを使用してワークフロータスクを定義します。
+load:
  td_load>: unique_id_of_your_source
  database: ${td.dest_db}
  table: ${td.dest_table}
  1. ワークフローを実行します。