Press "Enter" to skip to content

【Azure Data Platform】ETL工具(12)——ADF 参数

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本文属于【Azure Data Platform】系列。

 

接上文: 【【Azure Data Platform】ETL工具(11)——ADF 数据流

 

本文介绍ADF 的参数

 

前面例子中, 演示多数都为硬编码,这在实际项目中是不现实的。比如很常见的要把多个表,或者Blob上多个同源的数据文件一次性导入到表中时,不可能一个一个添加。哪怕你愿意,也要单独一一对应地创建数据集和管道。

 

这个时候就要一个动态的方案。这个动态方案是使用参数来实现的。

 

当管道,数据集,链接服务和数据流需要外部输入时,可以使用参数来传递。在参数化之后,通过传入不同的值,可以重用这些资源。

 

比如相比于每个数据集只针对一个文件名的情况,可以把文件名作为一个参数,然后使用一个数据集来接受并处理参数的不同值。不过不可能总能,全面地进行参数化,比如你必须同时处理某两个文件(以不同的逻辑),这个时候就不能简单地把文件名作为参数传进一个data flow中。

 

通常来说,通过参数化,可以大幅度减少很多dataset,链接服务等对象,而且通过参数化,还能更加容易地应对一些全局变更。比如有类似的项目,只要改一下项目名即可重用的情况下,就可以减少很多重新开发的工作量。

 

接下来演示一下数据集的参数化。

 

数据集参数化

 

首先创建两个数据集,因为这次不关注数据内容,所以什幺都不用填。分别命名为DemoFile1和DemoFile2。

 

接下来把它们进行参数化:

 

在【参数】属性中,点击【新建】,添加参数

 

配置参数,这里使用filename作为参数名,字符串作为类型, 默认值同样使用filename,注意使用英文,毕竟即使能识别中文,也太突兀了,何况有些地方填写中文后会报错:

 

 

回到【连接】属性, 找到“文件路径”最后一层(因为这里是要参数化文件名而不是路径),点击下面的“添加动态内容”,然后在弹出页的“参数”下,出现了FileName这个名字,这个就是参数值,点击它之后,上面的空白处就出现了“@dataset().FileName”,点击确定。完成动态路径的配置。

 

完成之后,可以看到下图所示,文件路径已经参数化。为了保证这个参数化后的数据集能够应对各种文件结构,我们要确保【架构】处不能有内容,否则不同的文件结构就不能识别,除非确定了完全一样:

 

注意上面红框部分,容器和目录,如果你并没有参数化它们,要明确指定:

 

检查架构,一般不需要有特殊指定

 

到此为止,参数化数据集已经完成,我们把数据集的名字改一下比如DemoFileN。接下来就把它用起来,要是它有用,需要一个管道。

 

管道参数

 

先创建一个管道, 把源设置为刚才的参数化数据集:

 

 

添加动态内容:

 

可以手动输入下面的值,意味着这个值来自于管道的参数值FileName:

 

 

开始配置接收器:这里的接收器使用了一个新的blob,用来证明可以通过是否复制成功而已,并没有强制要求。这个接收器的数据集的值,也使用上面的“@pipeline().parameters.FileName”:

 

在用户属性里面点自动生成,也可以看到参数值:

 

 

传递参数

 

在源blob上上传一个文件,这里不用关注它的内容:

 

 

在管道配置好之后,点击【调试】,并传递一个在源blob中的文件名作为输入值:

 

 

运行前后可以看到文件已经复制成功:

 

 

 

参数是以大概下图的方式传递和被使用的:参数可以通过用户输入,触发器传递和其他管道的输出,传输到一个管道中,被activity使用,然后在数据集和链接服务中使用这些参数。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。