向数据工厂组件添加参数
参数化 Azure 数据工厂中的链接服务
在 Azure 数据工厂中,可以参数化链接服务,在运行时在其中传递动态值。 这种情况的一个用例是,连接到同一 SQL 服务器上的多个不同数据库,这时可能要考虑在链接服务定义中参数化数据库名称。 这样做的好处是,你不必为同一 SQL Server 上的每个数据库都创建一个链接服务。
还可以参数化链接服务的其他属性,例如用户名。
如果你决定在 Azure 数据工厂中参数化链接服务,可以通过 Azure 数据工厂用户界面、Azure 门户或你偏好的编程接口执行此操作。
如果选择通过用户界面创作链接服务,数据工厂可以为某些连接器提供内置参数化:
- Amazon Redshift
- Azure Cosmos DB (SQL API)
- Azure Database for MySQL
- Azure SQL 数据库
- Azure Synapse Analytics(以前称为 SQL DW)
- MySQL
- Oracle
- SQL Server
- 泛型 HTTP
- 泛型 REST
如果前往链接服务的“创建/编辑”边栏选项卡,你就会找到参数化的选项。
如果因使用其他类型的连接器而不能使用内置参数化,可以通过用户界面编辑 JSON。
在链接服务的“创建/编辑”窗格中,展开窗格底部的“高级”,选择“以 JSON 格式指定动态内容”复选框,并指定链接服务的 JSON 有效负载。
或者,在创建了一个没有参数化的链接服务后,在“管理”中心,选择“链接服务”,并找到特定的链接服务。 然后,选择 “代码”按钮)编辑 JSON{}。
Azure 数据工厂中的全局参数
在 Azure 数据工厂管道中设置全局参数后,便可以在管道表达式中使用这些常数。 设置全局参数的一个用例是,你有参数名称和值都相同的多个管道。
如果在 Azure 数据工厂中使用持续集成和持续交付 (CI/CD) 部署过程,则可以为你创建的每个环境替代全局参数(如果你想这么做)。
在 Azure 数据工厂中创建全局参数
若要创建全局参数,请转到“管理” 部分中的“全局参数”选项卡。 选择“新建”以打开创建侧菜单窗格。
在侧菜单窗格中,输入名称,选择数据类型,并指定参数的值。
创建全局参数后,可以通过选择该参数的名称进行编辑。 若要同时更改多个参数,请选择“全部编辑”。
在管道中使用全局参数
在 Azure 数据工厂中的管道中使用全局参数时,它主要在管道表达式中引用。 例如,如果管道引用某个资源(如数据集或数据流),则可以通过资源参数向下传递全局参数值。 Azure 数据工厂中全局参数的命令或引用流如下所示:pipeline().globalParameters.<parameterName>
。
CI/CD 中的全局参数
将 CI/CD 用于 Azure 数据工厂以在管道中集成全局参数时,有两种方法可实现此目的:
- 在 Azure 资源管理器模板中包含全局参数
- 通过 PowerShell 脚本部署全局参数
在大多数 CI/CD 实践中,在 Azure 资源管理器模板中包含全局参数都是有利的。 提出此建议是因为它们与 CI/CD 原生集成,全局参数被添加为 Azure 资源管理器模板参数。 这是由于数个工作环境的变化造成的。
若要在 Azure 资源管理器模板中启用全局参数,请前往管理中心。 请注意,将全局参数添加到 Azure 资源管理器模板后,它会添加 Azure 数据工厂级别设置,该设置可替代 git configs 等其他设置。
通过 PowerShell 脚本部署全局参数的用例,可能是因为你在 UAT 或 PROD 等提升的环境中启用了上述设置。
参数化映射数据流
在 Azure 数据工厂中,可以使用映射数据流,这使你能够使用参数。 如果在数据流定义内设置参数,可在表达式中使用参数。 调用管道将通过“执行数据流”活动设置参数值。
可以使用三个选项来设置数据流活动表达式中的值:
- 使用管道控制流表达式语言设置动态值。
- 使用数据流表达式语言设置动态值。
- 使用任意一种表达式语言设置静态文本值。
参数化映射数据流的原因是为了确保数据流通用、灵活且可重用。
在数据流中创建参数
若要向数据流添加参数,请选择数据流画布的空白部分以查看常规属性。
在“设置”窗格中,你将看到“参数”选项卡。
选择“新建”,生成新参数。 对于每个参数,必须分配名称,选择类型,然后根据需要设置默认值。
在映射数据流中从管道分配参数
如果你创建了一个数据流,并在其中设置了参数,则可以使用“执行数据流”活动从管道中执行它。
将活动添加到管道画布后,可在活动的“参数”选项卡中找到数据流参数。
分配参数值,确保你能够根据 spark 类型,以管道表达式语言或数据流表达式语言使用参数。 你还可以合并它们,即管道和数据流表达式参数。