使用Mule在Salesforce Analytics创建DataSet时遇字段错误求助
解决Mule创建Salesforce Analytics数据集时的"Mode"字段错误
错误原因
你在create-data-set连接器中使用了operation="UPSERT"参数,这是错误的。create-data-set操作仅用于定义数据集的结构,并不支持插入/更新数据记录。这个无效参数导致连接器向Salesforce发送了一个不存在的Mode字段,而Salesforce的InsightsExternalData对象不接受该字段,因此返回INVALID_FIELD_FOR_INSERT_UPDATE错误。
修复步骤
1. 移除create-data-set中的无效operation参数
修改Mule XML中的create-data-set元素,删除operation="UPSERT"属性,因为该操作不支持数据集创建的UPSERT模式:
<salesforce-analytics:create-data-set doc:name="Create data set" doc:id="8a148e00-fb8b-4bb1-b39c-609783d4c9d4" config-ref="Salesforce_Analytics_Config" type="C:\demo\datasetschema.json" description="This is a test dataset to store records coming from database for BR Account" label="datasetschema_csv" dataSetName="datasetschema_csv" target="datasetId"/>
2. 如需向数据集Upsert数据
如果你需要向已创建的数据集插入或更新数据,请使用upload-data连接器,并按以下步骤配置:
修改数据集Schema,标记外部ID字段
在你的JSON Schema中,将用作外部ID的字段(例如Account_ID)添加"isExternalId": true属性:
{ "fileFormat": { "charsetName": "UTF-8", "fieldsDelimitedBy": ",", "linesTerminatedBy": "\r\n" }, "objects": [ { "connector": "CSV", "fullyQualifiedName": "datasetschema_csv", "label": "datasetschema_csv", "name": "datasetschema_csv", "fields": [ { "fullyQualifiedName": "Account_Name", "name": "Account_Name", "type": "Text", "label": "Account_Name" }, { "fullyQualifiedName": "Account_ID", "name": "Account_ID", "type": "Numeric", "label": "Account_ID", "precision": 18, "defaultValue": "0", "scale": 0, "format": "0", "decimalSeparator": "", "groupsSeparator": "", "currencySymbol": "", "isExternalId": true } ] } ] }
添加upload-data连接器到流中
在create-data-set之后添加upload-data操作,配置operation="UPSERT"并指定外部ID字段:
<salesforce-analytics:upload-data doc:name="Upload data" doc:id="..." config-ref="Salesforce_Analytics_Config" dataSetId="#[vars.datasetId]" operation="UPSERT" externalIdFieldName="Account_ID"> <!-- 在这里配置要上传的数据 payload --> </salesforce-analytics:upload-data>
注意:你需要在流中添加步骤来准备或获取要上传的数据 payload,当前的流中缺少这部分逻辑。
内容的提问来源于stack exchange,提问作者Kunal Awasthi
相关产品推荐
相关产品推荐

