OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  salesforce-dx:查询 Salesforce 数据并深度管理销售流水线

salesforce-dx:查询 Salesforce 数据并深度管理销售流水线

 
  workflow ·  2026-02-22 04:23:06 · 3 次点击  · 0 条评论  

名称: salesforce-dx
描述: 使用 sf CLI 查询 Salesforce 数据并管理销售管线。适用于 SOQL 查询(从简单到复杂)、商机管线分析、预测报告、数据导出、架构探索和 CRM 数据操作。也适用于高管工作流,例如按名称查找交易、查找联系人信息以邮件联系潜在客户、准备管线审查,以及将 CRM 数据与其他工具交叉引用。触发于 Salesforce、SOQL、管线、商机、预测、CRM 数据、交易查找、潜在客户邮件、客户信息或 sf CLI 问题。


Salesforce DX — 数据与管线

使用 sf CLI 查询数据并管理管线。

先决条件

# 验证 CLI 和认证
sf --version
sf org list

如果未列出任何组织,请进行身份验证:

sf org login web --alias my-org --set-default

架构探索

在查询之前,先探索可用的对象和字段:

# 列出所有对象
sf sobject list --target-org my-org

# 描述对象字段
sf sobject describe --sobject Opportunity --target-org my-org

# 快速字段列表(仅名称)
sf sobject describe --sobject Opportunity --target-org my-org | grep -E "^name:|^type:"

SOQL 查询

基础模式

# 简单查询
sf data query -q "SELECT Id, Name, Amount FROM Opportunity LIMIT 10"

# 使用 WHERE 子句
sf data query -q "SELECT Id, Name FROM Opportunity WHERE StageName = 'Closed Won'"

# 日期过滤
sf data query -q "SELECT Id, Name FROM Opportunity WHERE CloseDate = THIS_QUARTER"

# 导出到 CSV
sf data query -q "SELECT Id, Name, Amount FROM Opportunity" --result-format csv > opps.csv

关系查询

# 父对象查找(从商机查找客户)
sf data query -q "SELECT Id, Name, Account.Name, Account.Industry FROM Opportunity"

# 子查询(从客户查找商机)
sf data query -q "SELECT Id, Name, (SELECT Id, Name, Amount FROM Opportunities) FROM Account LIMIT 5"

聚合查询

# COUNT
sf data query -q "SELECT COUNT(Id) total FROM Opportunity WHERE IsClosed = false"

# SUM 和 GROUP BY
sf data query -q "SELECT StageName, SUM(Amount) total FROM Opportunity GROUP BY StageName"

# 多重聚合
sf data query -q "SELECT StageName, COUNT(Id) cnt, SUM(Amount) total, AVG(Amount) avg FROM Opportunity GROUP BY StageName"

批量查询(大型数据集)

# 对于 >2000 条记录,使用 --bulk
sf data query -q "SELECT Id, Name, Amount FROM Opportunity" --bulk --wait 10

管线管理

管线快照

# 按阶段查看管线
sf data query -q "SELECT StageName, COUNT(Id) cnt, SUM(Amount) total FROM Opportunity WHERE IsClosed = false GROUP BY StageName ORDER BY StageName"

# 按负责人查看管线
sf data query -q "SELECT Owner.Name, SUM(Amount) total FROM Opportunity WHERE IsClosed = false GROUP BY Owner.Name ORDER BY SUM(Amount) DESC"

# 按关闭月份查看管线
sf data query -q "SELECT CALENDAR_MONTH(CloseDate) month, SUM(Amount) total FROM Opportunity WHERE IsClosed = false AND CloseDate = THIS_YEAR GROUP BY CALENDAR_MONTH(CloseDate) ORDER BY CALENDAR_MONTH(CloseDate)"

赢单/输单分析

# 按阶段查看赢率
sf data query -q "SELECT StageName, COUNT(Id) FROM Opportunity WHERE IsClosed = true GROUP BY StageName"

# 本季度已关闭的赢单
sf data query -q "SELECT Id, Name, Amount, CloseDate FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_QUARTER ORDER BY Amount DESC"

# 包含原因的输单
sf data query -q "SELECT Id, Name, Amount, StageName, Loss_Reason__c FROM Opportunity WHERE StageName = 'Closed Lost' AND CloseDate = THIS_QUARTER"

预测查询

# 加权管线(假设有 Probability 字段)
sf data query -q "SELECT StageName, SUM(Amount) gross, SUM(ExpectedRevenue) weighted FROM Opportunity WHERE IsClosed = false GROUP BY StageName"

# 本月即将关闭的交易
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate FROM Opportunity WHERE CloseDate = THIS_MONTH AND IsClosed = false ORDER BY Amount DESC"

# 停滞交易(30 天内无活动)
sf data query -q "SELECT Id, Name, Amount, LastActivityDate FROM Opportunity WHERE IsClosed = false AND LastActivityDate < LAST_N_DAYS:30"

数据操作

创建记录

sf data create record -s Opportunity -v "Name='New Deal' StageName='Prospecting' CloseDate=2024-12-31 Amount=50000"

更新记录

# 按 ID 更新
sf data update record -s Opportunity -i 006xx000001234 -v "StageName='Negotiation'"

# 通过 CSV 批量更新
sf data upsert bulk -s Opportunity -f updates.csv -i Id --wait 10

导出/导入

# 导出包含关系的数据
sf data export tree -q "SELECT Id, Name, (SELECT Id, Subject FROM Tasks) FROM Account WHERE Industry = 'Technology'" -d ./export

# 导入
sf data import tree -f ./export/Account.json

用于脚本的 JSON 输出

添加 --json 以获取结构化输出:

sf data query -q "SELECT Id, Name, Amount FROM Opportunity WHERE IsClosed = false" --json

使用 jq 解析:

sf data query -q "SELECT Id, Name FROM Opportunity LIMIT 5" --json | jq '.result.records[].Name'

常用日期字面量

字面量 含义
TODAY 当天
THIS_WEEK 本周
THIS_MONTH 本月
THIS_QUARTER 本季度
THIS_YEAR 本年
LAST_N_DAYS:n 过去 n 天
NEXT_N_DAYS:n 未来 n 天
LAST_QUARTER 上一季度

故障排除

"Malformed query" — 检查字段 API 名称(而非标签)。使用 sf sobject describe 进行验证。

"QUERY_TIMEOUT" — 添加过滤器、使用 --bulk 或添加 LIMIT

"INVALID_FIELD" — 该字段可能不存在于该对象上,或者您的配置文件缺少访问权限。

大型结果集 — 对于返回 >2000 条记录的查询,请使用 --bulk 标志。

高管工作流

快速交易查找

按名称或客户查找交易:

# 按商机名称(模糊匹配)
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate, Owner.Name, Account.Name FROM Opportunity WHERE Name LIKE '%Acme%' ORDER BY Amount DESC"

# 按客户名称
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate FROM Opportunity WHERE Account.Name LIKE '%Microsoft%' AND IsClosed = false"

# 我负责的近期交易
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate, Account.Name FROM Opportunity WHERE OwnerId = '<my-user-id>' AND IsClosed = false ORDER BY CloseDate"

获取联系人信息用于外联

查找公司内可邮件联系的人员:

# 某客户的联系人
sf data query -q "SELECT Id, Name, Email, Phone, Title FROM Contact WHERE Account.Name LIKE '%Acme%'"

# 决策者(按职位)
sf data query -q "SELECT Name, Email, Title, Account.Name FROM Contact WHERE Title LIKE '%CEO%' OR Title LIKE '%VP%' OR Title LIKE '%Director%'"

# 特定交易上的联系人
sf data query -q "SELECT Contact.Name, Contact.Email, Contact.Title, Role FROM OpportunityContactRole WHERE Opportunity.Name LIKE '%Acme%'"

为管线审查做准备

获取快速高管摘要:

# 本季度即将关闭的前 10 笔交易
sf data query -q "SELECT Name, Account.Name, Amount, StageName, CloseDate, Owner.Name FROM Opportunity WHERE CloseDate = THIS_QUARTER AND IsClosed = false ORDER BY Amount DESC LIMIT 10"

# 按销售代表查看交易(用于 1:1 会议)
sf data query -q "SELECT Owner.Name, COUNT(Id) deals, SUM(Amount) total FROM Opportunity WHERE IsClosed = false GROUP BY Owner.Name ORDER BY SUM(Amount) DESC"

# 需要关注的交易(停滞)
sf data query -q "SELECT Name, Amount, StageName, LastActivityDate, Owner.Name FROM Opportunity WHERE IsClosed = false AND LastActivityDate < LAST_N_DAYS:14 ORDER BY Amount DESC LIMIT 10"

客户情报

在通话或会议之前:

# 客户概览
sf data query -q "SELECT Id, Name, Industry, BillingCity, Website, OwnerId FROM Account WHERE Name LIKE '%Acme%'"

# 与该客户相关的所有开放交易
sf data query -q "SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE Account.Name LIKE '%Acme%' AND IsClosed = false"

# 近期活动
sf data query -q "SELECT Subject, Status, ActivityDate FROM Task WHERE Account.Name LIKE '%Acme%' ORDER BY ActivityDate DESC LIMIT 5"

跨工具工作流

Salesforce + 邮件(通过 gog/gmail):
1. 查找联系人邮箱:sf data query -q "SELECT Email FROM Contact WHERE Account.Name LIKE '%Acme%'"
2. 使用该地址通过您的邮件工具起草邮件

Salesforce + 日历:
1. 查找即将关闭的交易:sf data query -q "SELECT Name, Account.Name, CloseDate FROM Opportunity WHERE CloseDate = THIS_WEEK"
2. 与日历交叉引用以确保安排了后续跟进

通话后快速更新 CRM:

# 记录一项任务
sf data create record -s Task -v "Subject='Call with John' WhatId='<opportunity-id>' Status='Completed' ActivityDate=$(date +%Y-%m-%d)"

# 更新商机阶段
sf data update record -s Opportunity -i <opp-id> -v "StageName='Negotiation' NextStep='Send proposal'"

查找您的用户 ID

用于“我负责的交易”查询:

sf data query -q "SELECT Id, Name FROM User WHERE Email = 'your.email@company.com'"

将此存储在本地配置中以供快速参考。

参考

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor