Salesforce バッチソース

このページでは、Cloud Data Fusion を使用して Salesforce sObject から Google Cloud にデータを読み込む方法について説明します。Salesforce バッチソース プラグインは Salesforce から sObject を読み取ります。sObject は、pull 元の Salesforce テーブルです。sObject の例には、商談、連絡先、アカウント、見込み顧客、カスタム オブジェクトなどがあります。

Salesforce バッチソース プラグインでは、Salesforce Object Query Language(SOQL)クエリと、増分日付フィルタまたは範囲日付フィルタを使用したデータの読み取りがサポートされます。

準備

  • Cloud Data Fusion Salesforce バッチソースでは、Salesforce Bulk API V1 を使用します。
  • Cloud Data Fusion Salesforce プラグインをデプロイして使用する前に Salesforce を設定します。詳細については、Cloud Data Fusion 用の Salesforce 接続アプリを作成するをご覧ください。

プラグインを構成する

  1. Cloud Data Fusion ウェブ インターフェースに移動し、[Studio] をクリックします。
  2. [リアルタイム] ではなく、[データ パイプライン - バッチ] が選択されていることを確認します。
  3. [Source] メニューで、[Salesforce] をクリックします。Salesforce ノードがパイプラインに表示されます。[Studio] ページに Salesforce ソースが表示されない場合は、Cloud Data Fusion Hub から Salesforce プラグインをデプロイします。
  4. ソースを構成するには、Salesforce ノードに移動して [プロパティ] をクリックします。
  5. 次のプロパティを入力します。完全なリストについては、プロパティをご覧ください。

    1. Salesforce ノードのラベルを入力します(例: Salesforce tables)。
    2. リネージの Salesforce ソースの参照名を入力します(例: Salesforce tables)。
    3. 接続の詳細を入力します。新しい 1 回限りの接続または既存の再利用可能な接続を設定できます。

      新しい接続

      Salesforce に 1 回限りの接続を追加する手順は次のとおりです。

      1. [接続を使用] をオフのままにします。
      2. [接続] セクションで、これらのフィールドに Salesforce アカウントの次の情報を入力します。

        • ユーザー名
        • パスワード
        • セキュリティ トークン
        • コンシューマ キー
        • コンシューマ シークレット

        Salesforce から認証情報を取得するには、Salesforce からプロパティを取得するをご覧ください。

      再利用可能な接続

      既存の接続を再利用する手順は次のとおりです。

      1. [接続を使用] をオンにします。
      2. [接続を参照] をクリックします。
      3. 接続名をクリックします。

      4. 省略可: 接続が存在せず、再利用可能な新しい接続を作成する場合は [接続を追加] をクリックし、新しい接続タブの手順をご参照ください。

    4. [SObject 名] を入力して、オブジェクトからすべての列を読み込みます。

    5. 省略可: sObject 名を選択した場合は、次のフィールドでデータをフィルタできます。

      • 最終更新が指定日より後: 特定の時間よりも後で最後に変更されたレコードのみを含めます。
      • 最終更新日が指定日の前: 指定された時刻よりも前で最後に変更されたレコードのみを含めます。
      • 期間: 指定したサイズの時間枠内に最後に変更されたレコードのみを含めます。
      • オフセット: 最終更新日が、指定されたオフセットをマイナスした、パイプラインの論理開始時間より小さいレコードのみを含めます。
    6. 省略可: サポートされている sObject の場合、パイプラインのパフォーマンスを向上させるには、[PK チャンクを有効にする] をオンにします。詳細については、PK チャンクによるパフォーマンスの向上をご覧ください。

    7. 省略可: sObject 名を指定する代わりに、SELECT LastName from Contact などの SOQL クエリを入力できます。詳細については、Salesforce ソースの SOQL クエリをご覧ください。

    8. 接続をテストするには、[スキーマを取得] をクリックします。Cloud Data Fusion は、Salesforce に接続し、リストされたテーブルのスキーマ(技術的には sObject)を pull します。

プロパティ

プロパティ マクロ対応 必須プロパティ 説明
参照名 × リネージ、メタデータのアノテーションなど、タスクのためにこのソースを一意に識別するために使用されます。
接続を使用 × × 既存の接続を使用します。接続を使用する場合は、認証情報を提供する必要はありません。
接続を参照する × 使用する接続の名前。
ユーザー名 Salesforce ユーザー名。
パスワード Salesforce のパスワード。
セキュリティ トークン × Salesforce セキュリティ トークン。パスワードにセキュリティ トークンが含まれていない場合、Cloud Data Fusion は Salesforce で認証する前にトークンを追加します。
コンシューマ キー アプリケーション コンシューマ キー。OAuth クライアント ID とも呼ばれます。コンシューマ キーを取得するには、Salesforce 接続アプリケーションを作成します。
コンシューマ シークレット アプリケーション コンシューマ シークレット。OAuth クライアント シークレットとも呼ばれます。クライアント シークレットを取得するには、Salesforce 接続アプリケーションを作成します。
ログイン URL Salesforce OAuth2 ログイン URL。
デフォルトは https://login.salesforce.com/services/oauth2/token です。
接続タイムアウト × 接続の初期化がタイムアウトするまで待機する最大時間(ミリ秒)。
デフォルトは 30,000 ミリ秒です。
プロキシの URL × プロキシの URL。プロトコル、アドレス、ポートが含まれます。
SOQL × データをソースにフェッチするための SOQL クエリ。
例:
  • SELECT Id, Name, BillingCity FROM Account
  • SELECT Id FROM Contact WHERE Name LIKE 'A%' AND MailingCity = 'California'
SObject 名 × 読み込む Salesforce オブジェクト名。値を指定すると、コネクタは Salesforce からこのオブジェクトのすべてのフィールドを取得し、select FIELD_1, FIELD_2 from ${sObjectName} などの SOQL クエリを生成します。SOQL クエリが指定されている場合は無視されます。
また、Salesforce Bulk API でサポートされていない sObject もあります。サポートされていないオブジェクトを含むジョブを作成すると、次のエラーが発生します: Entity is not supported by the Bulk API。これらのオブジェクトは、データのクエリに Bulk API を使用する Einstein Analytics でもサポートされていません。
BULK API が使用されていない場合: クエリ長によって Salesforce にクエリが送信されてバッチ情報の配列を受信すると、Bulk API が使用されない場合があります。クエリが制限内の場合は、元のクエリが実行されます。それ以外の場合は、ワイド オブジェクト ロジックに切り替わります。たとえば、SOAP API を介してデータを取得するために後で使用される ID のバッチ情報のみを取得する ID クエリを生成します。
最終更新が指定日より後 × システム フィールド LastModifiedDate が指定した日付以降のレコードのみが含まれるようにデータをフィルタリングします。Salesforce の日付形式を使用します(をご覧ください)。値が指定されていない場合、下限の日付は適用されません。
最終更新日が指定日の前 × システム フィールド LastModifiedDate が指定した日付より小さいレコードのみが含まれるようにデータをフィルタリングします。Salesforce の日付形式を使用します(をご覧ください)。[最終更新が指定日より後] プロパティと一緒にこの値を指定すると、時間枠内で変更されたデータを読み取ることができます。値が指定されていない場合、上限の日付は適用されません。
期間 × データをフィルタリングして、指定されたサイズの時間枠内で最後に変更されたレコードのみを読み取るようにします。たとえば、期間が 6 hours でパイプラインが午前 9 時に実行される場合、最後に更新された午前 3 時(含む)から午前 9 時(含まない)までのデータを読み取ります。数字と次の時間単位を使用して期間を指定します。
  • seconds
  • minutes
  • hours
  • days
  • months
  • years
複数の単位を指定できますが、各単位が使用できるのは 1 回のみです。例: 2 days, 1 hours, 30 minutes[最終更新が指定日より後] または [最終更新日が指定日の前] に値がすでに指定されている場合、期間は無視されます。
オフセット × システム フィールド LastModifiedDate が指定されたオフセットをマイナスした、パイプラインの論理開始時間より小さいレコードのみを読み取るようにデータをフィルタリングします。たとえば、期間が 6 hours、オフセットが 1 hours で、パイプラインが午前 9 時に実行される場合、午前 2 時(含む)から午前 8 時(含まない)の間に最終更新されたデータが読み取られます。
数字と次の時間単位を使用して期間を指定します。
  • seconds
  • minutes
  • hours
  • days
  • months
  • years
複数の単位を指定できますが、各単位が使用できるのは 1 回のみです。例: 2 days, 1 hours, 30 minutes[最終更新が指定日より後] または [最終更新日が指定日の前] に値がすでに指定されている場合、オフセットは無視されます。
SOQL オペレーション タイプ × × テーブルで実行するクエリ オペレーションを指定します。クエリが選択された場合は、現在のレコードのみが返されます。queryAll を選択すると、現在のレコードと削除されたすべてのレコードが返されます。
デフォルトのオペレーションは query です。
PK チャンクを有効にする × 主キー(PK)チャンクは、大規模なテーブルに対するクエリを、クエリされたレコードのレコード ID または主キーに基づいて、細かくまたはチャンクに分割します。
Salesforce では、1,000 万を超えるレコードを持つテーブルをクエリする場合、または一括クエリが常にタイムアウトする場合に、PK チャンクを有効にすることをおすすめします。詳細については、PK チャンクをご覧ください。PK チャンクは、SELECT 句を含まないクエリと、WHERE 以外の条件を含まないクエリでのみ機能します。チャンクは、カスタム オブジェクトと、標準オブジェクトをサポートする共有テーブルと履歴テーブルでサポートされています。
チャンクサイズ × チャンクのサイズを指定します。最大サイズは 250,000 です。デフォルト サイズは 100,000 です。
SObject の親名 × Salesforce Object の親。履歴テーブルまたは共有オブジェクトのチャンクを有効にするために使用されます。

Salesforce の日付形式の例

形式構文
YYYY-MM-DDThh:mm:ss+hh:mm 1999-01-01T23:01:01+01:00
YYYY-MM-DDThh:mm:ss-hh:mm 1999-01-01T23:01:01-08:00
YYYY-MM-DDThh:mm:ssZ 1999-01-01T23:01:01Z

データ型マッピング

次の表は、Salesforce のデータ型と対応する CDAP の型を示しています。

Salesforce のデータ型 CDAP スキーマのデータ型
_bool boolean
_int int
_long long
_doublecurrencypercentgeolocation(緯度)、geolocation(経度) double
date date
datetime timestamp(マイクロ秒)
time time(マイクロ秒)
picklist string
multipicklist string
combobox string
reference string
base64 string
textarea string
phone string
id string
url string
email string
encryptedstring string
datacategorygroupreference string
location string
address string
anyType string
json string
complexvalue string

ユースケース

Salesforce バッチソースの次のユースケースをご覧ください。

おすすめの方法

Salesforce バッチソースのパフォーマンスを向上させる方法について詳しくは、ベスト プラクティスをご覧ください。

次のステップ