如何处理 Dataflow Gen2 中的架构偏差

架构偏差被定义为数据结构发生的任何变化,例如在添加某个新列或移除某个列时数据结构发生的任何变化。 可以使用数据流以多种方式进行架构偏差管理。 可以使用类型检测根据源架构更改目标。 还可以在发布时进行目标架构管理。 这些方法中的每一种都特定于数据流。

让我们探索一下如何实现它。

全局选项方法

Dataflow Gen2 提供了类型检测机制。 可以在 Power Query 的“选项”菜单中对其进行设置。

Power Query 的“选项”对话框的屏幕截图,其中选择了“检测列类型和列标题”类型检测选项。

自动更新表

将数据加载到新表中时,自动设置默认处于启用状态。 如果使用自动设置,Dataflow Gen2 会为你管理映射。 自动设置提供以下行为:

“选择目的地设置”窗口的屏幕截图,其中已选定“使用自动设置”选项。

  • 替换:每次进行数据流刷新时都会替换数据。 目标中的任何数据都将被删除。 目标中的数据将替换为数据流的输出数据。

  • 托管映射:系统会为你管理映射。 如果需要更改数据/查询以添加另一列或更改数据类型,则重新发布数据流时,映射会自动针对此更改进行调整。 不必每次更改数据流时都进入数据目标体验,这样就可以在重新发布数据流时轻松更改架构。

  • 删除并重新创建表:若要允许这些架构更改,请在每次数据流刷新时删除并重新创建表。 数据流刷新可能会导致删除以前添加到表的关系或度量值。 目前,仅支持为作为数据目标的 Lakehouse 和 Azure SQL 数据库启用自动设置。

手动更新表

通过取消切换“使用自动设置”,可以完全控制如何将数据加载到数据目标中。 可以通过更改源类型或排除数据目标中不需要的任何列来对列映射进行任何更改。

“选择目标设置”窗口的屏幕截图,其中未选择“使用自动设置”选项。

大多数目标都支持将追加和替换作为更新方法。 但是,Fabric KQL 数据库和 Azure 数据资源管理器不支持将替换作为更新方法。

  • 替换:每次刷新数据流时,都会从目标中删除数据并将其替换为数据流的输出数据。

  • 追加:每次刷新数据流时,都会将数据流的输出数据追加到数据目标表中的现有数据。

如何使用发布时的架构选项

仅当更新方法为“替换”时,发布上的架构选项才适用。 追加数据时,无法更改架构。

  • 动态架构:选择动态架构时,允许在重新发布数据流时在数据目标中进行架构更改。 由于你没有使用托管映射,因此在对查询进行任何更改时,仍然需要更新数据流目标流中的列映射。 刷新数据流后,将删除并重新创建表。 数据流刷新可能会导致删除以前添加到表的关系或度量值。

  • 固定架构:选择固定架构时,将无法更改架构。 刷新数据流时,只会删除表中的行,并将其替换为数据流中的输出数据。 表上的任何关系或度量值将保持不变。 如果对数据流中的查询进行了任何更改,并且检测到查询架构与数据目标架构不匹配,则数据流发布将会失败。 如果不打算更改架构,并且不打算将关系或度量值添加到目标表,请使用此设置。

你会看到复选框或下拉列表,具体取决于架构更新类型(例如“固定”)以及表是否已创建。 如果表已经创建,则会看到下拉列表。 如果创建新表,则会显示复选框,因为目标表不存在。 因此,可以使用 Dataflow Gen2 在创建表之前更新架构。

注意

将数据加载到仓库时,仅支持固定架构。 如果初始设置中没有某个列,而你手动进行添加,则会显示“(无)”。

“发布时的架构选项”对话框的屏幕截图,选中了“固定架构”。