Salesforce
2026-04-01
新闻来源:网淘吧
围观:68
电脑广告
手机广告
Salesforce DX — 数据与管线
使用sfCLI 查询数据和管理管线。
先决条件
# Verify CLI and auth
sf --version
sf org list
如果未列出任何组织,请进行身份验证:

sf org login web --alias my-org --set-default
架构发现
查询前,先探索可用对象和字段:
# List all objects
sf sobject list --target-org my-org
# Describe object fields
sf sobject describe --sobject Opportunity --target-org my-org
# Quick field list (names only)
sf sobject describe --sobject Opportunity --target-org my-org | grep -E "^name:|^type:"
SOQL 查询
基本模式
# Simple query
sf data query -q "SELECT Id, Name, Amount FROM Opportunity LIMIT 10"
# With WHERE clause
sf data query -q "SELECT Id, Name FROM Opportunity WHERE StageName = 'Closed Won'"
# Date filtering
sf data query -q "SELECT Id, Name FROM Opportunity WHERE CloseDate = THIS_QUARTER"
# Export to CSV
sf data query -q "SELECT Id, Name, Amount FROM Opportunity" --result-format csv > opps.csv
关联关系
# Parent lookup (Account from Opportunity)
sf data query -q "SELECT Id, Name, Account.Name, Account.Industry FROM Opportunity"
# Child subquery (Opportunities from Account)
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 and GROUP BY
sf data query -q "SELECT StageName, SUM(Amount) total FROM Opportunity GROUP BY StageName"
# Multiple aggregates
sf data query -q "SELECT StageName, COUNT(Id) cnt, SUM(Amount) total, AVG(Amount) avg FROM Opportunity GROUP BY StageName"
批量查询(大型数据集)
# Use --bulk for >2000 records
sf data query -q "SELECT Id, Name, Amount FROM Opportunity" --bulk --wait 10
管线管理
管线快照
# Open pipeline by stage
sf data query -q "SELECT StageName, COUNT(Id) cnt, SUM(Amount) total FROM Opportunity WHERE IsClosed = false GROUP BY StageName ORDER BY StageName"
# Pipeline by owner
sf data query -q "SELECT Owner.Name, SUM(Amount) total FROM Opportunity WHERE IsClosed = false GROUP BY Owner.Name ORDER BY SUM(Amount) DESC"
# Pipeline by close month
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)"
赢/亏分析
# Win rate by stage
sf data query -q "SELECT StageName, COUNT(Id) FROM Opportunity WHERE IsClosed = true GROUP BY StageName"
# Closed won this quarter
sf data query -q "SELECT Id, Name, Amount, CloseDate FROM Opportunity WHERE StageName = 'Closed Won' AND CloseDate = THIS_QUARTER ORDER BY Amount DESC"
# Lost deals with reasons
sf data query -q "SELECT Id, Name, Amount, StageName, Loss_Reason__c FROM Opportunity WHERE StageName = 'Closed Lost' AND CloseDate = THIS_QUARTER"
预测查询
# Weighted pipeline (assumes Probability field)
sf data query -q "SELECT StageName, SUM(Amount) gross, SUM(ExpectedRevenue) weighted FROM Opportunity WHERE IsClosed = false GROUP BY StageName"
# Deals closing this month
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate FROM Opportunity WHERE CloseDate = THIS_MONTH AND IsClosed = false ORDER BY Amount DESC"
# Stale deals (no activity in 30 days)
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"
更新记录
# By ID
sf data update record -s Opportunity -i 006xx000001234 -v "StageName='Negotiation'"
# Bulk update via CSV
sf data upsert bulk -s Opportunity -f updates.csv -i Id --wait 10
导出/导入
# Export with relationships
sf data export tree -q "SELECT Id, Name, (SELECT Id, Subject FROM Tasks) FROM Account WHERE Industry = 'Technology'" -d ./export
# Import
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 | 上一季度 |
故障排除
“查询格式错误”— 检查字段API名称(而非标签)。请使用sf sobject describe以进行验证。
"查询超时"— 添加筛选条件、使用--bulk批量操作,或添加LIMIT限制。
"无效字段"— 该字段可能在该对象上不存在,或者您的配置文件缺少访问权限。
大型结果集— 对于返回超过2000条记录的查询,请使用--bulk标志。
高管工作流
快速交易查询
按名称或账户查找交易:
# By opportunity name (fuzzy)
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate, Owner.Name, Account.Name FROM Opportunity WHERE Name LIKE '%Acme%' ORDER BY Amount DESC"
# By account name
sf data query -q "SELECT Id, Name, Amount, StageName, CloseDate FROM Opportunity WHERE Account.Name LIKE '%Microsoft%' AND IsClosed = false"
# Recent deals I own
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"
获取联系人信息以进行外联
查找公司中可发送邮件的联系人:
# Contacts at an account
sf data query -q "SELECT Id, Name, Email, Phone, Title FROM Contact WHERE Account.Name LIKE '%Acme%'"
# Decision makers (by title)
sf data query -q "SELECT Name, Email, Title, Account.Name FROM Contact WHERE Title LIKE '%CEO%' OR Title LIKE '%VP%' OR Title LIKE '%Director%'"
# Contacts on a specific deal
sf data query -q "SELECT Contact.Name, Contact.Email, Contact.Title, Role FROM OpportunityContactRole WHERE Opportunity.Name LIKE '%Acme%'"
为管道评审做准备
获取快速高管摘要:
# Top 10 deals closing this quarter
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"
# Deals by rep (for 1:1s)
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"
# Deals needing attention (stale)
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"
账户情报
在通话或会议之前:
# Account overview
sf data query -q "SELECT Id, Name, Industry, BillingCity, Website, OwnerId FROM Account WHERE Name LIKE '%Acme%'"
# All open deals with account
sf data query -q "SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE Account.Name LIKE '%Acme%' AND IsClosed = false"
# Recent activities
sf data query -q "SELECT Subject, Status, ActivityDate FROM Task WHERE Account.Name LIKE '%Acme%' ORDER BY ActivityDate DESC LIMIT 5"
跨工具工作流
Salesforce + 电子邮件 (通过 gog/gmail):
- 查找联系人邮箱:
sf data query -q "SELECT Email FROM Contact WHERE Account.Name LIKE '%Acme%'" - 使用该地址,通过您的邮件工具起草邮件
Salesforce + 日历:
- 查找即将结束的交易:
sf data query -q "SELECT Name, Account.Name, CloseDate FROM Opportunity WHERE CloseDate = THIS_WEEK" - 与日历交叉核对,确保已安排跟进事项
通话后快速更新CRM:
# Log a task
sf data create record -s Task -v "Subject='Call with John' WhatId='<opportunity-id>' Status='Completed' ActivityDate=$(date +%Y-%m-%d)"
# Update opportunity stage
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'"
将此存储在您的本地配置中以便快速查阅。
参考资料
- soql-patterns.md— 高级SOQL模式 (多态、半连接、公式字段)
- pipeline-queries.md— 即用型销售管道和预测查询
文章底部电脑广告
手机广告位-内容正文底部
上一篇:NewsAPI Search
下一篇:Printer skill


微信扫一扫,打赏作者吧~