Azure 数据工厂 SOQL 查询中的语法错误 WHERE LastModifiedDate >= datetime

Syntax Error in Azure Data Factory SOQL Query WHERE LastModifiedDate >= datetime

我在 Azure Data Factory V2 中工作,尝试从 Salesforce 对象查询,其中对象中的 LastModifiedDate 大于或等于最近的日期。我一直在收到关于极其简单的 SOQL 查询的语法错误,这些查询在 Salesforce Workbench 中工作得很好。下面,我列出了我在 ADF 复制数据 activity 中 运行 的查询示例,以及我在调试管道时收到的错误。

查询 1

 Select Id from "Object" WHERE LastModifiedDate >=
 @{formatDateTime(activity('Yesterday').output.firstRow.Yesterday,'yyyy-MM-ddTHH:mm:ssZ')}

结果 1

{
    "errorCode": "2200",
    "message": "Failure happened on 'Source' side. ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [HY000] [Microsoft][Salesforce] (120) SOQL_FIRST mode prepare failure:\nSOQL error: [Microsoft][Salesforce] (30) Syntax error or access violation when parsing SOQL.\nSQL error: [Microsoft][SQLEngine] (31480) syntax error near 'Select Id from \"Object\" WHERE LastModifiedDate >= 2018-08-13T16<<< ??? >>>:05:06Z'.,Source=Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector,''Type=System.Data.Odbc.OdbcException,Message=ERROR [HY000] [Microsoft][Salesforce] (120) SOQL_FIRST mode prepare failure:\nSOQL error: [Microsoft][Salesforce] (30) Syntax error or access violation when parsing SOQL.\nSQL error: [Microsoft][SQLEngine] (31480) syntax error near 'Select Id from \"Object\" WHERE LastModifiedDate >= 2018-08-13T16<<< ??? >>>:05:06Z'.,Source=Microsoft Salesforce ODBC Driver,'",
    "failureType": "UserError",
    "target": "Event Fix Pipeline"
}

查询 2

SELECT Id FROM "Object" WHERE LastModifiedDate >= 2018-08-14T00:00:00Z

结果 2

{
    "errorCode": "2200",
    "message": "Failure happened on 'Source' side. ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [HY000] [Microsoft][Salesforce] (120) SOQL_FIRST mode prepare failure:\nSOQL error: [Microsoft][Salesforce] (30) Syntax error or access violation when parsing SOQL.\nSQL error: [Microsoft][SQLEngine] (31480) syntax error near 'SELECT Id FROM \"Object\" WHERE LastModifiedDate >= 2018-08-14T00<<< ??? >>>:00:00Z'.,Source=Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector,''Type=System.Data.Odbc.OdbcException,Message=ERROR [HY000] [Microsoft][Salesforce] (120) SOQL_FIRST mode prepare failure:\nSOQL error: [Microsoft][Salesforce] (30) Syntax error or access violation when parsing SOQL.\nSQL error: [Microsoft][SQLEngine] (31480) syntax error near 'SELECT Id FROM \"Object\" WHERE LastModifiedDate >= 2018-08-14T00<<< ??? >>>:00:00Z'.,Source=Microsoft Salesforce ODBC Driver,'",
    "failureType": "UserError",
    "target": "Event Fix Pipeline"
}

什么可能导致此语法错误?

删除 Object 周围的引号似乎可以解决您的问题。

SELECT ID FROM Object WHERE LastModifiedDate >= 2018-08-14T00:00:00Z.

我在 Salesforce Developer Console 中测试了带引号的查询并得到了 "Unknown error parsing query",所以我认为它是带引号的无效 SOQL 查询。

大声笑,在我的例子中,它是 SOQL 语句末尾的分号。