如何用SuccessFactors Compound Employee API获取快照数据?Azure Synapse测试失败求助
解决Azure Synapse中调用SFSF Compound Employee API获取员工历史数据的问题
一、修正后的SOAP请求代码
原示例存在两个关键语法错误:SQL中的中文逗号(、)和缺失完整的SOAP命名空间声明,以下是可直接使用的修正版本:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sfobject.sfapi.successfactors.com"> <soapenv:Header> <!-- 若使用Basic认证,需添加Authorization头,格式为Basic base64(用户名:密码) --> <!-- <Authorization>Basic dXNlcjpwYXNzd29yZA==</Authorization> --> </soapenv:Header> <soapenv:Body> <urn:query> <urn:queryString>SELECT person, employment_information, job_information FROM CompoundEmployee WHERE person_id_external = 'admin' and snapshot_date = to_DateTime('2015-03-10T08:00:00Z')</urn:queryString> <urn:param> <urn:name>query mode</urn:name> <urn:value>snapshot</urn:value> </urn:param> </urn:query> </soapenv:Body> </soapenv:Envelope>
说明:
- 替换
person_id_external为实际的员工外部ID,snapshot_date为需要查询的快照时间 - 若启用Basic认证,需在Header中添加Authorization字段,将用户名密码用Base64编码后填入
二、Azure Synapse中调用的关键配置
使用Web Activity调用
- 在Synapse Pipeline中添加Web Activity,设置:
- 方法:
POST - URL:你的SuccessFactors API端点(格式为
https://<你的SF域名>/sfapi/v1/soap) - 请求头:添加
Content-Type: text/xml; charset=utf-8,以及Authorization头(若用Basic认证) - 请求体:填入上述修正后的XML代码
- 方法:
- 在Synapse Pipeline中添加Web Activity,设置:
使用Linked Service连接(推荐)
- 创建SuccessFactors Linked Service,配置认证方式(Basic或OAuth)、SF域名、API版本等
- 后续可通过Copy Data Activity或Lookup Activity直接调用Compound Employee API,无需手动编写SOAP请求
三、核心技术建议
- 先在Postman验证API可用性:Synapse调用前,先用Postman测试修正后的请求,确认能返回正常数据,排除API本身或权限问题
- 确认API权限:确保你的SF API用户拥有
Compound Employee API的访问权限,以及person、employment_information、job_information实体的读取权限 - 理解Query Mode:
snapshot:返回指定时间点的员工数据快照,适合获取历史静态数据delta:返回指定时间范围内的增量数据,适合同步更新
- 字段名校验:确保SELECT中的字段名与SF系统元数据完全一致(区分大小写),避免拼写错误
- 日期格式规范:
to_DateTime的参数必须符合ISO 8601格式(YYYY-MM-DDTHH:MM:SSZ)
内容的提问来源于stack exchange,提问作者user19504539
相关产品推荐
相关产品推荐

