带有日期变量的 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')
关联;并且表达式是单引号
我正在构建一个逻辑数据仓库。源是 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')
关联;并且表达式是单引号