Azure Data Factory Oracle Source with date variable



我正在构建一个逻辑数据仓库。源是Oracle,目的是Data Lake。初始加载是通过ADF从On Prem Oracle服务器和创建作为数据库的Parquet文件读取数据完成的。现在我需要添加增量数据加载功能。

1-我已经添加了一个查找开始,其中LDW被查询以获得最后日期。

2-使用一个设置变量的活动来设置变量的日期

3-复制活动读取数据从日期+ 1开始,直到SYSDATE -1。这个任务失败了,因为我无法正确地构建子句(我是ADF的新手)。我当前的Where子句是这个

WHERE  TO_DATE(si.schedule_date, 'YYYYMMDD') 
BETWEEN to_date('formatDateTime('@{variables('LastDate')}', 'yyyyMMdd')','YYYYMMDD') 
AND  SYSDATE-1 

我得到的错误是:

{
"errorCode": "2200",
"message": "Failure happened on 'Source' side. ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [HY000] [Microsoft][ODBC Oracle Wire Protocol driver][Oracle]ORA-00907: missing right parenthesis,Source=Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector,''Type=System.Data.Odbc.OdbcException,Message=ERROR [HY000] [Microsoft][ODBC Oracle Wire Protocol driver][Oracle]ORA-00907: missing right parenthesis,Source=msora28.dll,'",
"failureType": "UserError",
"target": "Copy data1",
"details": []
}

任何帮助都将非常感激。我被困在这个相当长的时间,并试图摆脱困惑。由于

这个错误表明在ADF解析你的oracle查询之后有一些语法错误。

你可能想尝试这样做:

SELECT * FROM schedule_item si
WHERE TO_DATE(si.schedule_date, 'yyyymmdd') BETWEEN 
TO_DATE('@{variables('LastDate')}', 'yyyymmdd') AND SYSDATE-1 

确保@{}variables('LastDate')相关联;表达式是单引号

好像少了一个括号。请务必正确关闭括号。

并且,我假设日程表日期是一个日期列。试试这个?

@Concat('select part of query ',"如果。schedule_date BETWEEN ', formatDateTime({variables('LastDate')}, 'yyyyMMdd'),' AND SYSDATE-1')

最新更新