将数据加载到 Dataverse 表中时,需要在数据流的编辑体验中将源查询的列映射到目标 Dataverse 表列。 除了数据映射之外,还有其他需要考虑的注意事项和最佳做法。 本文介绍控制数据流刷新行为的不同数据流设置,以及目标表中的数据。

控制数据流是创建还是更新插入记录每次刷新

每次刷新数据流时,都会从源中提取记录并将其加载到 Dataverse 中。 如果多次运行数据流(具体取决于数据流的配置方式),可以:

  • 每次刷新数据流时创建新记录,即使此类记录已存在于目标表中也是如此。
  • 如果表中尚不存在新记录,请创建新记录;如果表中已存在现有记录,请更新这些记录。 此行为称为 upsert
  • 使用键列将指示数据流将记录更新插入目标表,而不选择键将始终在目标表中创建新记录。

    键列是表中数据行的唯一且确定性的列。 例如,在 Orders 表中,如果 Order ID 是键列,则不应有两行具有相同 Order ID。 此外,一个订单 ID(假设 ID 为 345 的订单)应仅代表表中的一行。 若要从数据流中选择 Dataverse 中表的键列,需要在“映射表”体验中设置键字段。

    创建新表时选择主名称和键字段

    下图显示了在数据流中创建新表时,如何选择要从源填充的键列。

    在字段映射中看到的主要名称字段是标签字段;此字段不需要是唯一的。 表中用于检查重复的字段将是你在 “备用键” 字段中设置的字段。

    在表中具有主键可确保即使在映射到主键的字段中具有具有相同值的重复数据行,重复项也不会加载到表中,并且该表将始终具有高质量的数据。 在生成基于表的报告解决方案时,拥有具有高质量数据的表至关重要。

    主要名称字段

    主名称字段是 Dataverse 中使用的显示字段。 此字段在默认视图中用于显示其他应用程序中表的内容。 此字段不是主键字段,不应视为该字段。 此字段可以有重复项,因为它是一个显示字段。 但是,最佳做法是使用串联字段映射到主名称字段,因此该名称是完全解释性的。

    备用键字段是用作主键的内容。

    加载到现有表时选择键字段

    将数据流查询映射到现有 Dataverse 表时,可以选择在将数据加载到目标表时应使用哪种键。

    下图显示了如何将记录向上插入现有 Dataverse 表时选择要使用的键列:

    设置表的唯一 ID 列并将其用作将记录重新插入现有 Dataverse 表的关键字段

    所有 Microsoft Dataverse 表行都具有定义为 GUID 的唯一标识符。 这些 GUID 是每个表的主键。 默认情况下,表主键不能由数据流设置,并且会在创建记录时由 Dataverse 自动生成。 在一些高级用例中,需要利用表的主键,例如,将数据与外部源集成,同时在外部表和 Dataverse 表中保留相同的主键值。

  • 仅当将数据加载到现有表时,此功能才可用。
  • 唯一标识符字段仅接受包含 GUID 值的字符串,任何其他数据类型或值都将导致记录创建失败。
  • 若要利用表的唯一标识符字段,请在创作数据流时选择“ 映射表” 页中的“ 加载到现有表 ”。 在下图所示的示例中,我们希望将数据加载到 CustomerTransactions 表,并使用数据源中的 TransactionID 列作为表的唯一标识符。

    你会注意到,在 “选择键” 下拉列表中,可以选择表的唯一标识符(始终名为“tablename + id”)。 由于表名称为“CustomerTransactions”,因此唯一标识符字段将命名为“CustomerTransactionId”。

    选择后,列映射部分将更新为包含唯一标识符作为目标列。 然后,可以映射表示每条记录的唯一标识符的源列。

    关键字段的候选项有哪些

    键字段是表示表中唯一行的唯一值。 具有此字段非常重要,因为它有助于避免表中有重复的记录。 此字段可以来自三个源:

  • 源系统中的主键 (如上述示例中的 OrderID) 。

  • 通过数据流中的Power Query转换创建的串联字段。

    删除不再存在的行

    如果希望表中的数据始终与源系统中的数据同步,请选择 “删除查询输出中不再存在的行” 选项。 但是,请注意,此选项会降低数据流速度,因为需要基于数据流) 字段映射中的主键 (备用键进行行比较,才能执行此操作。

    选中此选项意味着,如果表中存在下一个数据流刷新的查询输出中不存在的数据行,则会从表中删除该行。

    已知的限制

  • 目前不支持映射到 多态查找 字段。
  • 目前不支持映射到多级查找字段(指向另一个表的查阅字段的查找)。
  • 目前不支持映射到 “状态” “状态原因 ”字段
  • 不支持将数据映射到包含换行符的多行文本,并且将删除换行符。 相反,可以使用换行符标记 <br> 来加载和保留多行文本。
  • 不支持使用标签) 列映射到选项 (选项集。 请改用逗号分隔的值列表, (整数) 包含标签的值。 例如,如果标签“Choice1,Choice2,Choice3”的对应值为“1,2,3”,则应使用“1,3”来选择第一个和最后一个选项。
  •