カスタマーデータプラットフォーム Python コネクタ
CDP Python コネクタにより、カスタマーデータプラットフォームデータの価値を引き出し、拡張することができます。このコネクタは Query API を使用し、カスタマーデータプラットフォームのデータを Python に抽出します。また、このコネクタにより Pandas DataFrame にあるデータを取得できます。環境内のデータを使用して、ビジュアルデータモデルを作成したり、強力な分析操作を行ったり、強力な機械学習や AI モデルを構築することが可能です。
前提条件
CDP Python コネクタを設定するには、次の前提条件を完了します。
- PyPI (Python Package Index) リポジトリから CDP Python コネクタをインストールします。
1pip install salesforce-cdp-connector - CDP Python コネクタを認証します。コネクタは次の 2 つの方法で認証できます。
-
ユーザ名とパスワードで認証する
- 接続アプリケーションを作成し、その基本情報を完了します。
- [OAuth 設定の有効化] を選択します。
- Salesforce が OAuth 時にアプリケーションにコールバックするコールバック URL (エンドポイント) を入力します。
- 接続アプリケーションに適用する OAuth 範囲を選択します。OAuth 範囲では接続アプリケーションの権限が定義されます。これは、アプリケーションの認証後にトークンとして付与されます。OAuth トークン名は括弧で囲みます。
- Salesforce CDP データに対する ANSI SQL クエリを実行 (cdp_query_api): cdp_query_api の範囲では、ユーザの代わりに CDP データの ANSI SQL クエリを実行できます。
- Salesforce CDP のプロファイルデータを管理 (cdp_profile_api): cdp_profile_api の範囲では、CDP REST API データにアクセスできます。この範囲を使用して、プロファイルレコードを管理します。
- いつでも要求を実行 (refresh_token): この範囲では、更新トークンを受け取る資格が要求元クライアントにある場合に、更新トークンを返すことが許可されます。更新トークンにより、ユーザがオフラインのときにアプリケーションはユーザのデータを操作できます。
- API を使用してユーザデータを管理 (api): この範囲では、REST API や Bulk API 2.0 などの API を使用して、現在のログインユーザのアカウントへのアクセスが許可されます。
- [保存] をクリックして、変更を有効にします。
- [次へ] をクリックして、[接続アプリケーションを管理する] に移動します。
- コンシューマ鍵とコンシューマの秘密をコピーします。これらは、Connection オブジェクトの作成時に使用します。
-
OAuth エンドポイントを使用して認証する
- 接続アプリケーションを作成し、その基本情報を完了します。
- [OAuth 設定の有効化] を選択します。
- Salesforce が OAuth 時にアプリケーションにコールバックするコールバック URL (エンドポイント) を入力します。
- 接続アプリケーションに適用する OAuth 範囲を選択します。OAuth 範囲では接続アプリケーションの権限が定義されます。これは、アプリケーションの認証後にトークンとして付与されます。OAuth トークン名は括弧で囲みます。
- Salesforce CDP データに対する ANSI SQL クエリを実行 (cdp_query_api): cdp_query_api の範囲では、ユーザの代わりに CDP データの ANSI SQL クエリを実行できます。
- Salesforce CDP のプロファイルデータを管理 (cdp_profile_api): cdp_profile_api の範囲では、CDP REST API データにアクセスできます。この範囲を使用して、プロファイルレコードを管理します。
- いつでも要求を実行 (refresh_token): この範囲では、更新トークンを受け取る資格が要求元クライアントにある場合に、更新トークンを返すことが許可されます。更新トークンにより、ユーザがオフラインのときにアプリケーションはユーザのデータを操作できます。
- API を使用してユーザデータを管理 (api): この範囲では、REST API や Bulk API 2.0 などの API を使用して、現在のログインユーザのアカウントへのアクセスが許可されます。
- [保存] をクリックして、変更を有効にします。
- [次へ] をクリックして、[接続アプリケーションを管理する] に移動します。
- コンシューマ鍵とコンシューマの秘密をコピーします。これらは、Connection オブジェクトの作成時に使用します。
- この URL をブラウザに貼り付けると、コールバック URL にリダイレクトされます。リダイレクトされた URL の形式は、<callback url>?code=<CODE> となります。アドレスバーから CODE を抽出します。
- POST コールを <YOUR_ORG_URL>/services/oauth2/token?code=<CODE>&grant_type=authorization_code&client_id=<clientId>&client_secret=<clientSecret>&redirect_uri=<callback_uri> に対して実行します。POST コールの応答は、access_token と refresh_token を含む JSON になります。
-
ユーザ名とパスワードで認証する
Salesforce CDP Python コネクタの使用
CDP Python コネクタの設定では次の操作を行う必要があります。
- 接続オブジェクトを作成する
- カーソルオブジェクトを作成し、カスタマーデータプラットフォームを照会する
- カスタマーデータプラットフォームデータを取得する
接続オブジェクトを作成する
接続オブジェクトは 2 つの方法で作成できます。
-
ユーザ名とパスワードを使用 ここで説明したパラメータを使用し、ユーザ名とパスワードを指定して接続オブジェクトをインスタンス化します。
パラメータ 説明 login_url Salesforce 組織の URL user_name Salesforce 組織のユーザ名 password Salesforce 組織のパスワード client_id 接続アプリケーションによって生成されたコンシューマキー client_secret 接続アプリケーションによって生成されたコンシューマの秘密 1from salesforcecdpconnector.connection import SalesforceCDPConnection 2conn = SalesforceCDPConnection( 3 'login_url', 4 'user_name', 5 'password', 6 'client_id', 7 'client_secret' 8 ) -
OAuth エンドポイントを使用 ここで説明したパラメータを使用して、OAuth エンドポイントによって接続オブジェクトをインスタンス化します。
パラメータ 説明 login_url Salesforce 組織の URL client_id Salesforce 組織のユーザ名 client_secret Salesforce 組織のパスワード core_token 「OAuth エンドポイントを使用して認証する」セクションの手順 9 で取得した access_token。 refresh_token 「OAuth エンドポイントを使用して認証する」セクションの手順 9 で取得した refresh_token。 1from salesforcecdpconnector.connection import SalesforceCDPConnection 2conn = SalesforceCDPConnection(login_url, 3 client_id='<client_id>', 4 client_secret='<client_secret>', 5 core_token='<core token>' 6 refresh_token='<refresh_token>' 7 )
カーソルオブジェクトを作成し、カスタマーデータプラットフォームを照会する
クエリを実行するためのカーソルオブジェクトを作成します。クエリを実行すると、カーソルがそのクエリをカスタマーデータプラットフォームに渡し、結果を取得します。
1cur = conn.cursor()
2cur.execute('<query>')カスタマーデータプラットフォームデータを取得する
データは次の 3 つの方法で取得できます。
-
1 回に 1 行取得: fetchone() メソッドを使用して、結果を 1 回に 1 行取得します。
1results = cur.fetchone() -
すべての行を取得: fetchall() メソッドを使用して、1 回のコールですべてのクエリの結果を取得します。
1results = cur.fetchall() -
Dataframe で結果を取得: get_pandas_dataframe() メソッドを使用することで、結果を Pandas DataFrame で取得できます。
1dataframe = conn.get_pandas_dataframe('<query>')