Azure 数据工厂常见问题解答

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文提供有关 Azure 数据工厂的常见问题解答。

什么是 Azure 数据工厂?

数据工厂是一项完全托管的、基于云的数据集成 ETL 服务,可以自动移动和转换数据。 如同工厂运转设备将原材料转换为成品一样,Azure 数据工厂可协调现有的服务,收集原始数据并将其转换为随时可用的信息。

使用 Azure 数据工厂可以创建数据驱动的工作流,用于在本地与云数据存储之间移动数据。 你可以使用数据流处理和转换数据。 ADF 还通过计算服务(例如 Azure HDInsight、Azure Databricks 和 SQL Server Integration Services (SSIS) 集成运行时)支持用于手动编码转换的外部计算引擎。

使用数据工厂,可在基于 Azure 的云服务或自己的自承载计算环境(例如 SSIS、SQL Server 或 Oracle)中执行数据处理。 创建用于执行所需操作的管道后,可将它计划为定期运行(例如每小时、每天或每周)、按时间范围运行或者在发生某个事件时触发。 有关详细信息,请参阅 Azure 数据工厂简介

合规性和安全性注意事项

Azure 数据工厂通过了一系列合规性认证,包括 SOC 1 、SOC 2、SOC 3、HIPAA BAA 以及 HITRUST 。 可在此处查看完整且不断增长的认证列表。 审核报告和合规性认证的数字副本可在服务信任中心查看

控制流和缩放

为了支持现代数据仓库中的各种集成流和模式,数据工厂启用了新的灵活的数据管道模型。 这样,就可以在数据管道的控制流中对条件语句进行建模,设置分支,以及在这些流中或跨这些流显式传递参数。 控制流还包含通过活动调度将数据转换到外部执行引擎以及数据流功能,包括通过复制活动大规模移动数据。

使用数据工厂可自由地对数据集成所需的任何流样式进行建模,可按需调度或按计划重复调度这些样式。 此模型支持的几个常见流有:

  • 控制流:
    • 可在管道中将活动按顺序链接起来。
    • 可在管道中创建活动的分支。
    • 参数:
      • 可在管道级别定义参数,并可在按需或从触发器调用管道时传递参数。
      • 活动可以使用传递给管道的自变量。
    • 自定义状态传递:
      • 包含状态的活动输出可供管道中的后续活动使用。
    • 循环容器:
      • foreach 活动将在循环中迭代指定的活动集合。
  • 基于触发器的流:
    • 触发管道可以根据时钟时间按需进行,或者可以作为对事件网格主题的响应
  • 增量流:
    • 可以使用参数并定义用于增量复制的高水位标记,同时移动本地或云中的关系存储中的维度或引用表,以将数据载入 Lake。

有关详细信息,请参阅教程:控制流

为高级用户提供丰富的跨平台 SDK

数据工厂 V2 提供了更为丰富的一组 SDK,你可以在偏好的 IDE 中使用这些 SDK 来创作、管理和监视管道。这些 IDE 包括:

  • Python SDK
  • PowerShell CLI
  • C# SDK

用户还能利用已记录的 REST API 来与数据工厂 V2 交互。

使用可视化工具进行迭代开发和调试

使用 Azure 数据工厂可视化工具可进行迭代开发和调试。 可使用管道画布中的“调试”功能创建管道并测试运行情况,无需编写任何代码。 可在管道画布的“输出”窗口中查看测试运行的结果。 在测试运行成功后,可向管道中添加更多活动并继续以迭代方式进行调试。 还可以“取消”正在进行的测试运行。

在选择“调试”之前,不需要将所做的更改发布至数据工厂服务。 在开发、测试或生产环境中更新数据工厂工作流之前,如果想确保新添加的内容或更改能按预期工作,这一点就很有帮助。

将 SSIS 包部署到 Azure 的功能

如果想要移动 SSIS 工作负荷,可以创建一个数据工厂,并预配 Azure-SSIS 集成运行时。 Azure-SSIS Integration Runtime 是由 Azure VM(节点)构成的完全托管群集,专用于在云中运行 SSIS 包。 有关分步说明,请参阅将 SSIS 包部署到 Azure 教程。

SDK

对于正在寻求编程接口的高级用户,数据工厂提供了一组丰富的 SDK,让用户在偏好的 IDE 中创作、管理和监视管道。 语言支持包括 .NET、PowerShell、Python 以及 REST。

监视

可以通过 PowerShell、SDK 或浏览器用户界面中的可视化监视工具监视数据工厂。 可高效监视并管理基于需求、基于触发器的或由时钟驱动的自定义流。 在一个面板取消现有任务、速览故障信息、向下钻取以获取详细的错误消息并调试问题,无需进行上下文切换或来回转换界面。

数据工厂中的 SSIS 新功能

从 2017 年首次发布公共预览版以来,数据工厂添加了以下 SSIS 功能:

  • 增加了对三种 Azure SQL 数据库配置/变体的支持,可托管项目/包的 SSIS 数据库 (SSISDB):
  • 包含虚拟网络服务终结点的 SQL 数据库
  • SQL 托管实例
  • 弹性池
  • 支持构建在经典虚拟网络(将来会弃用)基础之上的 Azure 资源管理器虚拟网络,可让你将 Azure-SSIS Integration Runtime 注入/联接到可以访问虚拟网络服务终结点/MI/本地数据的 Azure SQL 数据库。 有关详细信息,另请参阅将 Azure-SSIS Integration Runtime 加入虚拟网络
  • 支持 Microsoft Entra 身份验证和 SQL 身份验证以连接到 SSISDB,允许使用 Azure 资源的数据工厂托管标识进行 Microsoft Entra 身份验证
  • 支持引入现有 SQL Server 许可证,大量节约 Azure 混合权益选项的成本
  • 支持 Azure-SSIS Integration Runtime 企业版,可让你使用高级功能、用于安装附加组件/扩展的自定义安装界面,以及合作伙伴生态系统。 有关详细信息,另请参阅 ADF 中的 SSIS 企业版、自定义安装和第三方可扩展性
  • 在数据工厂中更深入地与 SSIS 进行了集成,可让你在数据工厂管道中调用/触发一流的执行 SSIS 包活动并通过 SSMS 对它们进行计划。 有关详细信息,另请参阅使用 ADF 管道中的 SSIS 活动来实现 ETL/ELT 工作流的现代化并对其进行扩展

什么是 Integration Runtime?

集成运行时是 Azure 数据工厂用于在各种网络环境之间提供以下数据集成功能的计算基础结构:

  • 数据移动:就数据移动而言,集成运行时在源和目标数据存储之间移动数据,同时为内置连接器、格式转换、列映射和高性能可缩放数据传输提供支持。
  • 数据流:对于数据流,请在托管的 Azure 计算环境中执行数据流
  • 调动活动:就转换而言,集成运行时提供本机执行 SSIS 包的能力。
  • 执行 SSIS 包:Integration Runtime 在托管的 Azure 计算环境中本机执行 SSIS 包。 Integration Runtime 还支持调度和监视各种计算服务(如 Azure HDInsight、Azure 机器学习、SQL 数据库和 SQL Server)上运行的转换活动。

可以按需部署一个或多个集成运行时实例来移动和转换数据。 集成运行时可以在 Azure 公用网络或专用网络(本地、Azure 虚拟网络或 Amazon Web Services 虚拟私有云 [VPC])中运行。 在数据工厂中,活动定义要执行的操作。 链接服务定义目标数据存储或计算服务。 集成运行时提供活动和链接服务之间的桥梁。 它被链接服务或活动引用,提供运行或分派活动的计算环境。 这样一来,可以在最接近目标数据存储的区域中执行活动,或者,以最优性能计算服务的同时满足安全和合规性需求。

可在 Azure 数据工厂 UX 中通过管理中心创建集成运行时,以及可引用它们的任何活动、数据集或数据流。 有关详细信息,请参阅 Azure 数据工厂中的集成运行时

对集成运行时的数目有何限制?

对于可在数据工厂中使用多少个集成运行时实例,没有硬性限制。 不过,对于集成运行时在每个订阅中可用于执行 SSIS 包的 VM 核心数有限制。 有关详细信息,请参阅数据工厂限制

Azure 数据工厂的顶层概念有哪些?

一个 Azure 订阅可以包含一个或多个 Azure 数据工厂实例(或数据工厂)。 Azure 数据工厂包含四个关键组件,这些组件组合成为一个平台,可在其中编写数据驱动型工作流,以及用来移动和转换数据的步骤。

管道

数据工厂可以包含一个或多个数据管道。 管道是执行任务单元的活动的逻辑分组。 管道中的活动可以共同执行一项任务。 例如,一个管道可以包含一组活动,这些活动从 Azure Blob 引入数据,并在 HDInsight 群集上运行 Hive 查询,以便对数据分区。 优点在于,可以使用管道以集的形式管理活动,而无需单独管理每个活动。 管道中的活动可以链接在一起来按顺序运行,也可以独立并行运行。

数据流

数据流是你在数据工厂中直观生成的对象,可在后端 Spark 服务中大规模转换数据。 你不需要了解编程或 Spark 内部机制。 只需使用图(映射)或电子表格(Power Query 活动)设计你的数据转换意向。

活动

活动表示管道中的处理步骤。 例如,可以使用复制活动将数据从一个数据存储复制到另一个数据存储。 同样,可以使用在 Azure HDInsight 群集上运行 Hive 查询的 Hive 活动来转换或分析数据。 数据工厂支持三种类型的活动:数据移动活动、数据转换活动和控制活动。

数据集

数据集代表数据存储中的数据结构,这些结构直接指向需要在活动中使用的数据,或者将其作为输入或输出引用。

链接服务

链接的服务类似于连接字符串,它定义数据工厂连接到外部资源时所需的连接信息。 不妨这样考虑:链接服务定义到数据源的连接,而数据集则代表数据的结构。 例如,Azure 存储链接服务指定连接到 Azure 存储帐户所需的连接字符串。 Azure Blob 数据集指定 Blob 容器以及包含数据的文件夹。

数据工厂中的链接服务有两个用途:

  • 代表数据存储,包括但不限于 SQL Server 实例、Oracle 数据库实例、文件共享或 Azure Blob 存储帐户。 有关支持的数据存储列表,请参阅 Azure 数据工厂中的复制活动
  • 代表可托管活动执行的计算资源。 例如,HDInsight Hive 活动在 HDInsight Hadoop 群集上运行。 有关转换活动列表和支持的计算环境,请参阅在 Azure 数据工厂中转换数据

触发器

触发器表示处理单元,确定何时启动管道执行。 不同类型的事件有不同类型的触发器类型。

管道运行

管道运行是管道执行实例。 我们通常通过将自变量传递给管道中定义的参数来实例化管道运行。 可以手动传递自变量,也可以在触发器定义中传递。

parameters

参数是只读配置中的键值对。 在管道中定义参数,并在执行期间通过运行上下文传递所定义参数的自变量。 运行上下文由触发器创建,或通过手动执行的管道创建。 管道中的活动使用参数值。

数据集是可以重用或引用的强类型参数和实体。 活动可以引用数据集并且可以使用数据集定义中所定义的属性。

链接服务也是强类型参数,其中包含数据存储或计算环境的连接信息。 它也是可重用或引用的实体。

控制流

控制流协调管道活动。管道活动包含序列中的链接活动、分支、在管道级别定义的参数,以及按需或通过触发器调用管道时传递的自变量。 控制流还包含自定义状态传递和循环容器(即 for-each 迭代器)。

有关数据工厂概念的详细信息,请参阅以下文章:

数据工厂的定价模型是怎样的?

有关 Azure 数据工厂的定价详细信息,请参阅数据工厂定价详细信息

如何及时了解有关数据工厂的最新信息?

有关 Azure 数据工厂的最新信息,请访问以下站点:

技术深入了解

如何计划管道?

可以采用计划程序触发器或时间范围触发器来计划管道。 该触发器使用时钟日历计划,你可以使用该计划定期或通过基于日历的重复模式(例如,在每周的周一下午 6 点和周四晚上 9 点)来安排管道。 有关详细信息,请参阅管道执行和触发器

是否可以向管道传递参数?

可以,在数据工厂中,参数是最重要的顶层概念。 可以在管道级别定义参数,并在按需或使用触发器执行管道运行时传递自变量。

是否可以为管道参数定义默认值?

是的。 可以为管道中的参数定义默认值。

管道中的活动是否可以使用传递给管道运行的自变量?

是的。 管道中的每个活动都可以使用通过 @parameter 构造传递给管道运行的参数值。

活动输出属性是否可以在其他活动中使用?

是的。 在后续活动中可以通过 @activity 构造来使用活动输出。

如何得体地处理活动输出中的 NULL 值?

可以在表达式中使用 @coalesce 构造来得体地处理 NULL 值。

可以同时执行多少个管道活动?

最多允许 50 个并发管道活动。 第 51 个管道活动将被排入队列,直到有空位开放。 最多允许 800 个并发外部活动,超过 800 个的活动将以相同方式排入队列。

映射数据流

我在排查数据流逻辑问题时需要帮助。 若要获取帮助,需要提供哪些信息?

当 Azure 提供有关数据流的帮助或故障排除方法时,请提供 ADF 管道支持文件。 此 Zip 文件包含来自数据流图的代码隐藏脚本。 在 ADF UI 中,选择管道旁边的“...”,然后选择“下载支持文件”。

如何使用数据工厂中的其他 90 个数据集类型来访问数据?

映射数据流功能目前以原生方式允许使用 Azure SQL 数据库、Azure Synapse Analytics、来自 Azure Blob 存储或 Azure Data Lake Storage Gen2 的带分隔符的文本文件,以及来自 Blob 存储或 Data Lake Storage Gen2 的 Parquet 文件作为源和接收器。

可以使用复制活动从任何其他连接器暂存数据,然后执行数据流活动在暂存数据后对其进行转换。 例如,你的管道会首先将数据复制到 Blob 存储,然后数据流活动会使用源中的数据集来转换该数据。

自承载集成运行时是否可用于数据流?

自承载 IR 是一种 ADF 管道构造,可与复制活动一起使用,以便在本地或基于 VM 的数据源和接收器中获取或移动数据。 用于自承载 IR 的虚拟机也可以放在与受保护的数据存储相同的 VNET 中,以便从 ADF 访问这些数据存储。 对于数据流,你将改为使用具有托管 VNET 的 Azure IR 来实现相同的最终结果。

数据流计算引擎是否为多个租户提供服务?

群集从不会共享。 我们保证在生产运行中为每个作业运行提供隔离。 在调试场景中,一个人获取一个群集,所有调试都会转到该用户启动的该群集。

是否有一种方法可以按 ADF 数据流中接收器所指定的顺序在 Cosmos DB 中写入属性?

对于 Cosmos DB,每个文档的基础格式都是 JSON 对象;该对象是一组无序的名称/值对,因此无法保留顺序。

为什么用户无法在数据流中使用数据预览?

你应检查自定义角色的权限。 数据流数据预览涉及多项操作。 首先,你要在浏览器中调试时检查网络流量。 请执行所有操作,有关详细信息,请参阅资源提供程序

在 ADF 中,能否根据映射的现有列计算新列的值?

可以在映射数据流中使用派生转换,以便在所需逻辑中创建新列。 创建派生列时,可以生成新列或更新现有列。 在“列”文本框中,输入要创建的列。 若要替代架构中的现有列,可以使用“列”下拉列表。 若要生成派生列的表达式,请选择“输入表达式”文本框。 你可以开始键入表达式或打开表达式生成器来构造逻辑。

映射数据流预览为何会因网关超时而失败?

请尝试使用较大的群集,并将调试设置中的行限制调整为较小的值,以减小调试输出大小。

如何将数据流中的列名参数化?

类似于其他属性,列名可以参数化。 就像在派生列中一样,客户可以使用 $ColumnNameParam = toString(byName($myColumnNameParamInData))。这些参数可以从管道执行传递到数据流。

关于 TTL 和成本的数据流公告

此故障排除文档可能有助于解决问题:映射数据流性能和优化指南-生存时间

Power Query 数据整理

支持数据整理的区域有哪些?

数据工厂可在下列区域使用。Power Query 功能在所有数据流区域均可用。 如果该功能在你的区域不可用,请咨询支持人员。

映射数据流和 Power Query 活动(数据整理)有什么区别?

映射数据流提供了一种无需进行任何编码即可大规模转换数据的方法。 可以通过构造一系列转换在数据流画布中设计数据转换作业。 从任意数量的源转换开始,然后是数据转换步骤。 使用接收器来完成数据流,以将结果放在目标中。 映射数据流非常适合于在接收器和源中与已知和未知的架构映射和转换数据。

利用 Power Query 数据整理,可以大规模使用 Power Query Online 糅合编辑器通过 spark 执行来完成敏捷数据准备和研究。 随着数据湖的增长,有时你只是需要浏览数据集或在湖中创建数据集。 你并不会映射到某个已知的目标。

支持的 SQL 类型

Power Query 数据整理支持 SQL 中的以下数据类型。 在使用不受支持的数据类型时,将会出现验证错误。

  • short
  • Double
  • real
  • FLOAT
  • char
  • nchar
  • varchar
  • nvarchar
  • integer
  • int
  • bit
  • boolean
  • smallint
  • tinyint
  • bigint
  • long
  • text
  • date
  • datetime
  • datetime2
  • smalldatetime
  • timestamp
  • uniqueidentifier
  • xml

有关创建数据工厂的分步说明,请参阅以下教程: