📊aidp-salesforce
- ソース
- GitHub で見る ↗
説明
AIDPノートブック内で、AIDP の `aidataplatform` Spark フォーマットハンドラーを使用して、Salesforce のデータを Spark DataFrame に読み込みます。 次のような場合に使用: ユーザーが Salesforce、SFDC、Sales Cloud、Service Cloud、Account、Opportunity、Lead、sObject、SOQL について言及している場合。 認証はホスト/ポート + ユーザー名/パスワード方式です。 読み取り専用。
原文を表示
Read from Salesforce into a Spark DataFrame in an AIDP notebook via the AIDP `aidataplatform` Spark format handler. Use when the user mentions Salesforce, SFDC, Sales Cloud, Service Cloud, Account, Opportunity, Lead, sObject, SOQL. Auth is host/port + user/password. Read-only.
ユースケース
- ✓Salesforceのデータを読み込むとき
- ✓SFDC、Sales Cloud、Service Cloudを扱うとき
- ✓SOQLクエリの結果をDataFrameに変換するとき
本文(日本語訳)
aidp-salesforce — AIDP aidataplatform 経由の Salesforce 連携
次のような場合に使用
- ユーザーが AIDP ノートブックから Salesforce データ(Account、Opportunity、Lead、Contact、カスタム sObject)を Spark DataFrame に取り込みたい場合。
- ユーザーが「Salesforce」「SFDC」「Sales Cloud」「Service Cloud」「sObject」「SOQL」、または Salesforce オブジェクト名(Account、Opportunity など)に言及している場合。
次のような場合には使用しない
- カスタムマニフェストを持つ任意の REST API の場合 →
aidp-rest-generic - Oracle CX/CRM の場合 →
aidp-siebel(Siebel)、またはaidp-fusion-rest経由の Fusion CX
AIDP ノートブックの前提条件
sys.pathにヘルパーが追加されていること(先にaidp-connectors-bootstrapを実行する)。- 環境変数 / OCI Vault シークレット:
SFDC_HOST(Salesforce ログインホスト。例:login.salesforce.comまたは<my-domain>.my.salesforce.com)SFDC_PORT(通常は443)SFDC_DATABASE_NAME(組織名 / データベース識別子。ほとんどのテナントでは組織名のみ)SFDC_USER(Salesforce ユーザー名 — 通常は<email>形式)SFDC_PASSWORD(パスワードにセキュリティトークンを連結したもの:<password><security-token>)SFDC_SCHEMA(コネクタでは通常SFORCE)SFDC_TABLE(sObject の API 名。例:Account、Opportunity、Custom_Object__c)
読み取り
import os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type="SFORCE",
host=os.environ["SFDC_HOST"],
port=int(os.environ.get("SFDC_PORT", "443")),
database_name=os.environ["SFDC_DATABASE_NAME"],
user=os.environ["SFDC_USER"],
password=os.environ["SFDC_PASSWORD"],
schema=os.environ.get("SFDC_SCHEMA", "SFORCE"),
table=os.environ["SFDC_TABLE"], # 例: "Account"、"Opportunity"
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
プッシュダウン SQL
pushdown.sql を使用すると、SOQL 風のクエリをデータソース側にプッシュダウンできます。
インデックス付きフィールドでのフィルタリング、リレーションシップパスを経由した結合、LIMIT 指定などに有効です。
opts = aidataplatform_options(
type="SFORCE",
host=os.environ["SFDC_HOST"],
port=int(os.environ.get("SFDC_PORT", "443")),
database_name=os.environ["SFDC_DATABASE_NAME"],
user=os.environ["SFDC_USER"],
password=os.environ["SFDC_PASSWORD"],
extra={
"pushdown.sql": (
"SELECT Id, Name, AnnualRevenue, BillingCountry "
"FROM Account "
"WHERE AnnualRevenue > 1000000 AND BillingCountry = 'United States'"
),
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
注意事項
-
typeはSFORCEであり、SALESFORCEではない。 人間が読みやすい名称に引きずられると間違えやすい。コネクタの type は文字どおりSFORCEと指定する。 -
パスワードにはセキュリティトークンの連結が必要。 Salesforce のユーザー名/パスワード認証では、
<password><security-token>を1つの文字列として連結する必要がある。 セキュリティトークンはユーザーがパスワードを変更するたびにリセットされ、メールで通知される。 -
API 制限。 Salesforce は組織単位で1日あたりの API 呼び出しクォータを設けている。 バルク読み取りはこのクォータに計上される。
pushdown.sqlに絞り込みフィルタとフィールド射影を指定し、API 呼び出し回数を最小限に抑えること。 -
コネクタは読み取り専用。 Salesforce への書き込み(sObject の作成/更新)は、Salesforce REST/Bulk API または Composite API を直接利用する必要がある。
-
カスタムオブジェクトの名前は
__cで終わる(例:Project__c)。 カスタムフィールドも同様に__cで終わる —pushdown.sql内でも必ず末尾の__cを含めること。 -
フィールドレベルセキュリティ(FLS)。 コネクタが使用するユーザーは Salesforce のプロファイルおよびパーミッションセットを継承する。 FLS によって非表示に設定されたフィールドは結果に含まれない。
参考情報
原文(English)を表示
aidp-salesforce — Salesforce via AIDP aidataplatform
When to use
- User wants to ingest Salesforce data (Account, Opportunity, Lead, Contact, custom sObjects) into a Spark DataFrame from an AIDP notebook.
- User mentions: "Salesforce", "SFDC", "Sales Cloud", "Service Cloud", "sObject", "SOQL", a Salesforce object name (Account, Opportunity, etc.).
When NOT to use
- For arbitrary REST APIs with a custom manifest →
aidp-rest-generic. - For Oracle CX/CRM →
aidp-siebel(Siebel) or Fusion CX viaaidp-fusion-rest.
Prerequisites in the AIDP notebook
- Helpers on
sys.path(runaidp-connectors-bootstrapfirst). - Env vars / OCI Vault secrets:
SFDC_HOST(Salesforce login host, e.g.login.salesforce.comor<my-domain>.my.salesforce.com)SFDC_PORT(typically443)SFDC_DATABASE_NAME(org name / database identifier; for most tenants this is just the org name)SFDC_USER(Salesforce username — typically<email>)SFDC_PASSWORD(password concatenated with security token:<password><security-token>)SFDC_SCHEMA(typicallySFORCEfor the connector)SFDC_TABLE(sObject API name, e.g.Account,Opportunity,Custom_Object__c)
Read
import os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type="SFORCE",
host=os.environ["SFDC_HOST"],
port=int(os.environ.get("SFDC_PORT", "443")),
database_name=os.environ["SFDC_DATABASE_NAME"],
user=os.environ["SFDC_USER"],
password=os.environ["SFDC_PASSWORD"],
schema=os.environ.get("SFDC_SCHEMA", "SFORCE"),
table=os.environ["SFDC_TABLE"], # e.g. "Account", "Opportunity"
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
Pushdown SQL
Use pushdown.sql to push a SOQL-like query at the source — useful for filtering on indexed fields, joins via relationship paths, or LIMIT semantics.
opts = aidataplatform_options(
type="SFORCE",
host=os.environ["SFDC_HOST"],
port=int(os.environ.get("SFDC_PORT", "443")),
database_name=os.environ["SFDC_DATABASE_NAME"],
user=os.environ["SFDC_USER"],
password=os.environ["SFDC_PASSWORD"],
extra={
"pushdown.sql": (
"SELECT Id, Name, AnnualRevenue, BillingCountry "
"FROM Account "
"WHERE AnnualRevenue > 1000000 AND BillingCountry = 'United States'"
),
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
Gotchas
typeisSFORCE, notSALESFORCE. Easy to get wrong if you're following the human-readable name. The connector type literally saysSFORCE.- Password requires the security token appended. Salesforce username/password auth needs
<password><security-token>concatenated as a single string. The security token is reset each time the user changes their password — emailed to the user. - API limits. Salesforce enforces per-org daily API call quotas. Bulk reads count against the quota. Use
pushdown.sqlwith selective filters and field projection to minimize calls. - Connector is read-only. Salesforce writes (create/update sObjects) need to go through the Salesforce REST/Bulk API or the Composite API directly.
- Custom objects end in
__c(e.g.Project__c). Custom fields end in__ctoo — always include the trailing__cinpushdown.sql. - Field-level security. The connector user inherits Salesforce profile + permission sets. Fields hidden by FLS won't appear in the result.
References
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。