带有日期变量的 Azure 数据工厂 Oracle 源

Azure Data Factory Oracle Source with date variable

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

1- 我在开始时添加了一个查找,其中查询 LDW 以获取最后日期。

2- 使用设置变量 activity 设置日期为

的变量

3- 复制 Activity 以读取从日期 + 1 开始到 SYSDATE -1 的数据。此任务失败,因为我无法正确构建 where 子句(我是 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": []
}

我们将不胜感激任何帮助。我坚持了很长时间,并试图摆脱困惑。 谢谢

好像少了一个括号。确保正确关闭括号。

而且,我假设计划日期是一个日期列。试试这个?

@Concat('select part of query ', 'WHERE si.schedule_date BETWEEN ' , formatDateTime({变量('LastDate')}, 'yyyyMMdd') , '和 SYSDATE-1')

该错误表示在 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') 关联;并且表达式是单引号