将日期时间参数从管道传递到数据流源存储过程天蓝色数据工厂
Pass datetime parameter from pipeline to dataflow source stored procedure azure data factory
我在尝试将日期时间参数从管道传递到数据流存储过程时遇到了问题。
我使用存储过程来获取完整或增量数据集。
管道看起来像这样
pipeline
在查找中,我得到 'n/a' 或上次加载日期。确定我需要完全加载还是增量加载。
之后我用表达式将它传递给数据流:
加载开始日期activity('GetLastLoadData').output.value[0].LastLoadedDate
加载结束日期 if(equals(activity('GetLastLoadData').output.value[0].LastLoadedDate, 'n/a'), '' ,pipeline().TriggerTime)
parameters
输出看起来不错,据我所知,数据流的参数是用日期时间字符串设置的:
Input
{
"dataflow": {
"referenceName": "dataflow1",
"type": "DataFlowReference",
"parameters": {
"LoadStartDate": "'2021-01-16 14:15:36.697'",
"LoadEndDate": "'2021-03-25T18:08:48.7558444Z'"
},
存储过程有两个定义为字符串的参数。我正在进行验证
CREATE PROCEDURE [dbo].[Export]
@LoadStartDate VARCHAR(30) = NULL,
@LoadEndDate VARCHAR(30) = NULL
AS
DECLARE @error VARCHAR(200) = NULL
IF (@LoadStartDate IS NULL AND @LoadEndDate IS NOT NULL) OR
(@LoadStartDate IS NOT NULL AND @LoadEndDate IS NULL)
SELECT @error = 'Parameters @LoadStartDate and @LoadEndDate should be specified.'
IF @LoadStartDate IS NOT NULL AND TRY_CAST(@LoadStartDate AS DATETIME2(3)) IS NULL
SELECT @error = 'Parameter @LoadStartDate is not a date.'
IF @LoadEndDate IS NOT NULL AND TRY_CAST(@LoadEndDate AS DATETIME2(3)) IS NULL
SELECT @error = ' Parameter @LoadEndDate is not a date.'
在 management studio 程序中运行良好但在 adf...
ADF 数据流有两个定义为字符串的参数
ADF parameters
源的设置如下所示:
source settings
当我删除输入参数时一切正常(满载),但是当我尝试指定参数时它失败了。
Error details
Error code
DFExecutorUserError
Troubleshooting guide
Failure type
User configuration issue
Details
{"StatusCode":"DFExecutorUserError","Message":"Job failed due to reason: Incorrect syntax near '-'.","Details":"Incorrect syntax near '-'."}
Source
Pipeline
LoadDataSetCompany_copy1
Data flow
dataflow1
Monitor
Data flow activity
LoadDataSet
我也尝试过 select 表达式复选框,在将参数传递给数据流期间,但它没有帮助。
有人知道哪里出了问题吗?
感谢您的回答。
根据我的经验,您可能不需要使用数据流来构建管道。存储过程是数据流的新功能,可能仍有一些问题。
请尝试 Lookup active + Copy active 来构建管道,它应该运行良好。
HTH.
我与微软支持进行了讨论,在他们的帮助下我终于解决了这个问题。
在数据流中传递参数的表达式应该类似于“'{$LoadStartDate}'”。这样传递参数后解析错误就消失了
此外,在我的存储过程中,如果参数包含不合适的值,我会在验证参数后使用 t-sql 抛出。应该避免抛出,当我删除它时,数据流开始按预期工作。
希望此信息能为某人节省时间。
我在尝试将日期时间参数从管道传递到数据流存储过程时遇到了问题。 我使用存储过程来获取完整或增量数据集。 管道看起来像这样 pipeline 在查找中,我得到 'n/a' 或上次加载日期。确定我需要完全加载还是增量加载。 之后我用表达式将它传递给数据流:
加载开始日期activity('GetLastLoadData').output.value[0].LastLoadedDate
加载结束日期 if(equals(activity('GetLastLoadData').output.value[0].LastLoadedDate, 'n/a'), '' ,pipeline().TriggerTime)
parameters
输出看起来不错,据我所知,数据流的参数是用日期时间字符串设置的:
Input
{
"dataflow": {
"referenceName": "dataflow1",
"type": "DataFlowReference",
"parameters": {
"LoadStartDate": "'2021-01-16 14:15:36.697'",
"LoadEndDate": "'2021-03-25T18:08:48.7558444Z'"
},
存储过程有两个定义为字符串的参数。我正在进行验证
CREATE PROCEDURE [dbo].[Export]
@LoadStartDate VARCHAR(30) = NULL,
@LoadEndDate VARCHAR(30) = NULL
AS
DECLARE @error VARCHAR(200) = NULL
IF (@LoadStartDate IS NULL AND @LoadEndDate IS NOT NULL) OR
(@LoadStartDate IS NOT NULL AND @LoadEndDate IS NULL)
SELECT @error = 'Parameters @LoadStartDate and @LoadEndDate should be specified.'
IF @LoadStartDate IS NOT NULL AND TRY_CAST(@LoadStartDate AS DATETIME2(3)) IS NULL
SELECT @error = 'Parameter @LoadStartDate is not a date.'
IF @LoadEndDate IS NOT NULL AND TRY_CAST(@LoadEndDate AS DATETIME2(3)) IS NULL
SELECT @error = ' Parameter @LoadEndDate is not a date.'
在 management studio 程序中运行良好但在 adf...
ADF 数据流有两个定义为字符串的参数 ADF parameters
源的设置如下所示: source settings
当我删除输入参数时一切正常(满载),但是当我尝试指定参数时它失败了。
Error details
Error code
DFExecutorUserError
Troubleshooting guide
Failure type
User configuration issue
Details
{"StatusCode":"DFExecutorUserError","Message":"Job failed due to reason: Incorrect syntax near '-'.","Details":"Incorrect syntax near '-'."}
Source
Pipeline
LoadDataSetCompany_copy1
Data flow
dataflow1
Monitor
Data flow activity
LoadDataSet
我也尝试过 select 表达式复选框,在将参数传递给数据流期间,但它没有帮助。
有人知道哪里出了问题吗?
感谢您的回答。
根据我的经验,您可能不需要使用数据流来构建管道。存储过程是数据流的新功能,可能仍有一些问题。
请尝试 Lookup active + Copy active 来构建管道,它应该运行良好。
HTH.
我与微软支持进行了讨论,在他们的帮助下我终于解决了这个问题。
在数据流中传递参数的表达式应该类似于“'{$LoadStartDate}'”。这样传递参数后解析错误就消失了
此外,在我的存储过程中,如果参数包含不合适的值,我会在验证参数后使用 t-sql 抛出。应该避免抛出,当我删除它时,数据流开始按预期工作。
希望此信息能为某人节省时间。