SQLAlchemy ORM を使って、Python でSalesforce Data Cloud のデータに連携する方法

CData Python Connector を使って、Python アプリケーションおよびスクリプトからSQLAlchemy 経由でSalesforce Data Cloud にOR マッピング可能に。

加藤龍彦
デジタルマーケティング

最終更新日:2023-09-23

この記事で実現できるSalesforce Data Cloud 連携のシナリオ

こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。

Pythonエコシステムには、多くのモジュールがあり、システム構築を素早く効率的に行うことができます。CData Python Connector for SalesforceDataCloud は、pandas、Matplotlib モジュール、SQLAlchemy ツールキットから使用することで Salesforce Data Cloud にデータ連携するPython アプリケーションを構築し、Salesforce Data Cloud のデータを可視化できます。 本記事では、SQLAlchemy でSalesforce Data Cloud に連携して、データを取得、 する方法を説明します。

CData Python Connectors の特徴

CData Python Connectors は、以下のような特徴を持った製品です。

  1. Salesforce Data Cloud をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレデータソースに対応
  2. Python をはじめとする多様なデータ分析・BI ツールにSalesforce Data Cloud のデータを連携
  3. ノーコードでの手軽な接続設定

CData Python Connectors では、1.データソースとしてSalesforce Data Cloud の接続を設定、2.Python からPython Connectors との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。

必要なモジュールのインストール

pip でSQLAlchemy ツールキットをインストールします:

pip install sqlalchemy

モジュールのインポートを忘れずに行います:

import sqlalchemy

Python でSalesforce Data Cloud のデータをモデル化

次は、接続文字列で接続を確立します。create_engine 関数を使って、Salesforce Data Cloud のデータに連携するEngne を作成します。

engine = create_engine("salesforcedatacloud///?InitiateOAuth=GETANDREFRESH&OAuthSettingsLocation=/PATH/TO/OAuthSettings.txt")

Salesforce Data Cloud は、OAuth 標準による認証をサポートしています。

OAuth

AuthSchemeOAuth に設定します。

デスクトップアプリケーション

CData は、デスクトップでの認証を簡略化する埋め込みOAuth アプリケーションを提供します。

また、Salesforce Data Cloud コンソールで設定および登録するカスタムOAuth アプリケーションを介してデスクトップから認証することもできます。詳しくは、ヘルプドキュメントカスタムOAuth アプリの作成を参照してください。

接続する前に、次のプロパティを設定します。

  • InitiateOAuthGETANDREFRESHInitiateOAuth を使えば、繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要はなくなります。
  • OAuthClientId (カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントID。
  • OAuthClientSecret (カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。

接続すると、本製品 はデフォルトブラウザでSalesforce Data Cloud のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。

以下のようにドライバーがOAuth プロセスを完了します。

  • コールバックURL からアクセストークンを取得します。
  • 古いトークンの期限が切れたときは、新しいアクセストークンを取得します。
  • OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化します。
  • Web アプリケーションやヘッドレスマシンを含むその他のOAuth メソッドについては、ヘルプドキュメントを参照してください。

    Salesforce Data Cloud のデータのマッピングクラスの宣言

    接続を確立したら、OR マッパーでモデル化するテーブルのマッピングクラスを宣言します。本記事では、Account テーブルを使います。sqlalchemy.ext.declarative.declarative_base 関数を使って、新しいクラスにフィールド(カラム)を定義します。

    base = declarative_base()
    class Account(base):
    	__tablename__ = "Account"
    	[Account ID] = Column(String,primary_key=True)
    	[Account Name] = Column(String)
    	...
    

    Salesforce Data Cloud のデータをクエリ

    マッピングクラスができたので、セッションオブジェクトを使ってデータソースをクエリすることができます。セッションにEngine をバインドして、セッションのquery メソッドにマッピングクラスを提供します。

    query メソッドを使う

    engine = create_engine("salesforcedatacloud///?InitiateOAuth=GETANDREFRESH&OAuthSettingsLocation=/PATH/TO/OAuthSettings.txt")
    factory = sessionmaker(bind=engine)
    session = factory()
    for instance in session.query(Account).filter_by(EmployeeCount="250"):
    	print("[Account ID]: ", instance.[Account ID])
    	print("[Account Name]: ", instance.[Account Name])
    	print("---------")
    

    ほかの方法としては、execute メソッドを適切なテーブルオブジェクトに使うことが可能です。以下のコードはアクティブなsession に対して有効です。

    execute メソッドを使う

    Account_table = Account.metadata.tables["Account"]
    for instance in session.execute(Account_table.select().where(Account_table.c.EmployeeCount == "250")):
    	print("[Account ID]: ", instance.[Account ID])
    	print("[Account Name]: ", instance.[Account Name])
    	print("---------")
    

    より複雑なクエリとして、JOIN、集計、Limit などが利用可能です。詳細はヘルプドキュメントをご覧ください。

    Salesforce Data Cloud からPython へのデータ連携には、ぜひCData Python Connector をご利用ください

    このようにCData Python Connector と併用することで、270を超えるSaaS、NoSQL データをPython からコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。

    日本のユーザー向けにCData Python Connector は、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。