Azure Data PlatformETL工具(12)——ADF 参数

Posted 發糞塗牆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Data PlatformETL工具(12)——ADF 参数相关的知识,希望对你有一定的参考价值。

本文属于【Azure Data Platform】系列。
接上文:【Azure Data Platform】ETL工具(11)——ADF 数据流
本文介绍ADF 的参数

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

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

参数

当管道,数据集,链接服务和数据流需要外部输入时,可以使用参数来传递。在参数化之后,通过传入不同的值,可以重用这些资源。
比如相比于每个数据集只针对一个文件名的情况,可以把文件名作为一个参数,然后使用一个数据集来接受并处理参数的不同值。不过不可能总能,全面地进行参数化,比如你必须同时处理某两个文件(以不同的逻辑),这个时候就不能简单地把文件名作为参数传进一个data flow中。
通常来说,通过参数化,可以大幅度减少很多dataset,链接服务等对象,而且通过参数化,还能更加容易地应对一些全局变更。比如有类似的项目,只要改一下项目名即可重用的情况下,就可以减少很多重新开发的工作量。

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

数据集参数化

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


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

step 1

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

step 2

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

Step 3

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

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


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

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

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

管道参数

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

添加动态内容:

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


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


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

传递参数

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

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

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

总结

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

以上是关于Azure Data PlatformETL工具(12)——ADF 参数的主要内容,如果未能解决你的问题,请参考以下文章

Azure Data PlatformETL工具(19)——Azure Databricks

Azure Data PlatformETL工具(20)——创建Azure Databricks

Azure Data PlatformETL工具(20)——创建Azure Databricks

Azure Data PlatformETL工具——重新认识Azure Data Factory

Azure Data PlatformETL工具(11)——ADF 数据流

Azure Data PlatformETL工具——使用Azure Data Factory数据流传输数据