Salesforceコネクタ > マスキングタスクSalesforceでのマスキングタスク > リレーション調整ストラテジ
  

リレーション調整ストラテジ

Salesforceでは、レコードIDによってレコードを一意に識別し、レコードをその他のレコードと関連付けます。SalesforceではレコードIDを使用して、親子リレーションを調整します。
マスキングタスクを実行すると、外部ID、カスタムフィールド、一意のフィールドのいずれかでリレーションが調整され、データがターゲットに書き込まれます。Salesforceでは、ターゲットデータの挿入や更新/挿入に、カスタムフィールドルックアップではなく外部IDを作成して使用することを推奨しています。Salesforceで外部IDを作成できない場合、マスキングタスクによりSalesforceにカスタムフィールドが作成され、ターゲットでルックアップが実行されます。Salesforceで外部IDまたはカスタムフィールドを作成できない場合、マスキングタスクで一意のフィールドが作成され、ソースとターゲットでルックアップが実行されます。マスキングタスクでデータの挿入または更新/挿入を行うと、外部IDフィールドまたはカスタムフィールドルックアップによってレコードで親子リレーションが一意に識別されます。

外部IDフィールド

Salesforceの外部IDフィールドには、Salesforce以外のシステムの一意のレコード識別子が付いた外部ID属性が含まれます。
データマスキングタスクは、外部IDを使用してターゲットデータベース内の親子リレーションのオブジェクトを特定します。Salesforceでは、ターゲットデータの挿入や更新/挿入に、カスタムフィールドルックアップや一意のフィールドルックアップではなく、外部IDを作成して使用することを推奨しています。[ターゲット]タブから外部IDを作成すると、データマスキングタスクは外部IDの名前にDMASK_を追加します。データマスキングタスクで作成した外部IDは[ターゲット]タブに表示されます。
データマスキングタスクは、設計時にターゲット内に外部ID用の追加フィールドを作成します。オブジェクトに外部IDが存在する場合、データマスキングタスクは同じ外部IDを使用します。タスクの実行後に外部IDを保持または削除できます。更新/挿入処理を他にも実行する場合は、外部IDフィールドを保持できます。
オブジェクトの外部IDフィールドを作成できない場合、更新/挿入操作を実行すると、[ターゲット]タブからオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。例えば、RecordTypeオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。

カスタムフィールドルックアップ

マスキングタスクでは、ルックアップベースの調整が親ターゲットオブジェクトで実行され、親レコードIDが取得されます。
外部IDが存在しない場合、マスキングタスクにより、同じ名前のSalesforceターゲットでルックアップを実行するためのカスタムフィールドが作成されます。1回のカスタムフィールドルックアップにつき、ターゲットで1回のルックアップ操作が必要です。
マスキングタスクでは、次の場合にカスタムフィールドルックアップが実行されます。

一意のフィールドルックアップ

マスキングタスクは、外部IDまたはカスタムフィールドを作成できないオブジェクトに対して一意のフィールドを使用します。この調整ストラテジは、一意のフィールドを含む標準オブジェクトのためのものです。
オブジェクトに一意のフィールドが存在する場合、タスクは一意のフィールドに基づいてルックアップ操作を実行します。一意のフィールドルックアップでは、ソースとターゲットで1つのルックアップ操作が必要です。
オブジェクトの外部IDフィールドを作成できない場合、更新/挿入操作を実行すると、[ターゲット]タブからオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。例えば、RecordTypeオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。
オブジェクトの外部IDフィールドを作成できず、このオブジェクトに一意のフィールドが存在しない場合は、挿入操作を実行できません。例えば、OpportunityContactRoleオブジェクトで挿入操作を実行することはできません。
一意のフィールドルックアップストラテジは、次の標準オブジェクトに適用可能です。

連結オブジェクト

連結オブジェクトは、2つの関連オブジェクト間の多対多のリレーションを含んだSalesforceオブジェクトです。
連結オブジェクト内に保存されたリレーションの詳細は、連結リレーションを形成します。多対多のリレーションでは、オブジェクト内の各レコードが、もう1つのオブジェクト内の複数のレコードにリンクされます。連結オブジェクトには、2つのオブジェクト間のすべてのリレーションが保存されます。例えば、CaseSolutionは、CaseオブジェクトとSolutionオブジェクト間の多対多のリレーションを保存する連結オブジェクトです。CaseオブジェクトとSolutionオブジェクト間のリレーションは、連結リレーションです。
連結オブジェクトからデータサブセットを作成できます。連結オブジェクトにデータを挿入することができます。連結オブジェクトへのデータの更新/挿入はできません。

ターゲットの所有者名

Salesforceでは、マスキングタスクは、ターゲット接続のユーザー名ではなく、ターゲット内のオブジェクトのソース所有者名を追加します。ターゲットには、同じエイリアスのユーザーが含まれる必要があります。
複数のソースを選択した場合、ユーザーオブジェクトとその他の関連オブジェクトがソースのリストに追加されます。ユーザーオブジェクトは、Salesforceのエイリアスフィールドに基づいてソース所有者名を調整します。ターゲットにソースと同じ所有者名が含まれている場合、マスキングタスクはターゲットのソース所有者名を追加します。ターゲットにソースと同じ所有名が含まれていない場合、マスキングタスクはデフォルトのターゲット接続名を取り込みます。
複数のユーザーでエイリアス名が同じ場合、マスキングタスクは任意のユーザーを選択して他のオブジェクトとのリレーションを調整します。

Salesforce Bulk APIの制限事項

Salesforceは、Salesforce Bulk APIを介して送信または受信できるデータ量を制限しています。
パフォーマンスを向上し、大規模なデータセットのAPI要求回数を減らすには、Salesforce Bulk APIを使用します。

バッチ制限

24時間で最大5,000バッチを送信できます。クエリ、書き込み、および削除操作を実行できます。

Bulk API Writer

Bulk API Writerのデフォルトサイズは、1つのバッチにつき10,000行です。タスクは1日に最大で5000*10000(5000万レコード)を処理できます。Bulk API Writerのバッチサイズを構成するには、Secure Agentのプロパティを編集します。

Bulk API Reader

Salesforce Bulk API Readerを使用すると、クエリから最大15GBのデータを受信できます。クエリが15GBを超える場合、マスキングタスクは失敗します。処理するデータ量がSalesforceの制限を超えていないかどうかは、手動で計算することができます。
Salesforce Bulk API Readerを介してクエリできるデータ量は、次の式で算出できます。
Sum (the number of bytes in the fields that you want to mask) * (the number of rows in the query results) < 15 GB
Salesforceアプリケーションでオブジェクトのフィールドのサイズを確認し、マスクするフィールドのバイト数を合計します。Salesforceオブジェクトのクエリ結果から、行の合計数を確認し、式を適用します。結果が15GBの制限以内の場合、タスクは成功します。結果が15GBの制限を超える場合、タスクは失敗します。

Salesforce Bulk APIの制限事項の例

アカウントオブジェクトに100フィールドが含まれており、機密データの10フィールドをマスクするとします。マスクする10フィールドすべてのサイズの合計は100バイトです。アカウントオブジェクトの行の合計は、500,000です。
次の式を使用します。
合計クエリサイズ = 100 * 500,000 = 0.05GB
0.05GBは15GBのデータ制限範囲内であるため、アプリケーションはこのタスクを正常に処理できます。
以下の表に、Salesforceオブジェクトの合計クエリサイズの計算例をいくつか示します。
オブジェクト
クエリ結果内の行数
マスクされるフィールドの合計サイズ
合計クエリサイズ
アカウント
500,000
1,000
0.5GB
担当者
6,000,000
2,000
12GB
リード
8,500,000
2,000
15.8GB
アカウントおよび連絡先オブジェクトの合計クエリサイズは15GBのデータ制限範囲内であるため、アプリケーションはタスクを正常に処理できます。リードオブジェクトの合計クエリサイズは15GBのデータ制限範囲を超えるため、アプリケーションはデータを処理できません。リードオブジェクトのクエリを減らすには、水平および垂直のパーティショニングを使用して、複数のマスキングタスクを作成します。
水平パーティショニングでは、Salesforceオブジェクト内の行数を分割できます。データフィルタ条件で条件を指定し、クエリ結果の合計行数を減らします。クローズリードを使用するデータマスキングと、オープンリードを使用するデータマスキングという2つのマスキングタスクを実行できます。
垂直パーティショニングでは、Salesforceオブジェクト内のフィールド数を分割できます。リードオブジェクトに対し、1300バイトのデータを含む10個のフィールドをマスクするタスクと、700バイトのデータを含む3個のフィールドをマスクするタスクという2つのマスキングタスクを作成できます。