首页 > 解决方案 > 从 Azure 数据工厂中的源结果设置变量

问题描述

我一直在努力做到这一点。从指向我的第一个数据库的数据源,我想要一个日期时间参考,然后我将其用于不同数据库上的另一个源作为参数来限制寄存器的数量。

我会是这样的:

Source_1:实现下一个代码并将结果保存在变量@dateRef 中。

SELECT IIF(UpdateDtm > CreatedDtm, UpdateDtm, COALESCE(CreatedDtm,UpdateDtm, cast('1900-01-01' as smalldatetime))) as dateRef
FROM 
(
    SELECT MAX(UpdatedDtm) as UpdateDtm, MAX(CreatedDtm) as  CreatedDtm
    FROM schema.table
) max_value

Source_2:在我的 select 语句中使用 @dateRef。

select  Client, location
from schema.table
where date >= @dateRef

我是数据工厂的新手,在过去的几年里,我一直在使用 Pentaho 进行此类操作,但这对我来说有点困惑。我找了一些例子。但是,似乎没有任何东西显示我想要实现的场景。

问候,

标签: variablessetazure-data-factory

解决方案


为了满足您的需求,我认为您可以考虑使用 Azure Function Activity 来执行上述 sql:

SELECT IIF(UpdateDtm > CreatedDtm, UpdateDtm, COALESCE(CreatedDtm,UpdateDtm, cast('1900-01-01' as smalldatetime))) as dateRef FROM  (
    SELECT MAX(UpdatedDtm) as UpdateDtm, MAX(CreatedDtm) as  CreatedDtm
    FROM schema.table ) max_value

然后从 Azure Function 中输出结果,以便在下一步中使用它。无需在变量中设置它。你可以参考价值@activity('Azure Function1').output

下一步是在sql中使用上面的输出,你不能只写入sql。你@activity('Azure Function1').output必须使用@concat()方法。例如:

@concat('select  Client, location
from schema.table
where date >=', activity('Azure Function1').output)

推荐阅读