以 Delta Lake 格式导出 Dataverse 数据

使用 Azure Synapse Link for Dataverse 以 Delta Lake 格式将您的 Microsoft Dataverse 数据导出到 Azure Synapse Analytics。 然后探索您的数据,加快获得见解的时间。 本文提供以下信息,并向您展示如何执行以下任务:

  • 说明 Delta Lake 和 Parquet 以及为什么应该以此格式导出数据。
  • 使用 Azure Synapse Link 以 Delta Lake 格式将您的 Dataverse 数据导出到 Azure Synapse Analytics 工作区。
  • 监视您的 Azure Synapse Link 和数据转换。
  • 在 Azure Data Lake Storage Gen2 中查看您的数据。
  • 从 Synapse 工作区查看您的数据。

重要

  • 如果您要使用现有自定义视图从 CSV 升级到 Delta Lake,我们建议更新脚本以将所有 partitioned 表替换为 non_partitioned。 为此,查找 _partitioned 的实例,并将其替换为空字符串。
  • 对于 Dataverse 配置,默认启用仅追加,以在 appendonly 模式下导出 CSV 数据。 但 Delta Lake 表将有一个就地更新结构,因为 Delta Lake 转换随附定期的合并流程。
  • 创建 Spark 池不会产生任何成本。 只有在目标 Spark 池上执行 Spark 作业以及根据需要实例化 Spark 实例后,才会产生费用。 这些成本与 Azure Synapse workspace Spark 的使用有关,按月计费。 执行 Spark 计算的成本主要取决于增量更新的时间间隔和数据量。 更多信息:Azure Synapse Analytics 定价
  • 在决定使用此功能时,请务必考虑这些额外成本,因为它们不是可选成本,必须支付才能继续使用此功能。
  • 适用于 Apache Spark 3.1 的 Azure Synapse 运行时的宣布生命周期结束 (EOLA) 已于 2023 年 1 月 26 日宣布。 根据适用于 Apache Spark 的 Synapse 运行时生命周期政策,适用于 Apache Spark 3.1 的 Azure Synapse 运行时将于 2024 年 1 月 26 日停用并禁用。 在 EOL 日期之后,已停用的运行时不可用于新的 Spark 池,并且无法执行现有工作流。 元数据将暂时保留在 Synapse 工作区中。 详细信息:适用于 Apache Spark 3.1 的 Azure Synapse 运行时 (EOLA)。 若要通过导出到 Delta Lake 格式将 Synapse Link for Dataverse 升级到 Spark 3.3,请对现有配置文件进行就地升级。 详细信息:使用 Delta Lake 2.2 就地升级到 Apache Spark 3.3
  • 从 2024 年 1 月 4 日开始,在初始创建链接时仅支持 Spark 池版本 3.3。

备注

Power Apps (make.powerapps.com) 中的 Azure Synapse Link 状态反映 Delta Lake 转换状态:

  • Count 显示 Delta Lake 表中的记录数。
  • Last synchronized on 日期/时间表示最后一次成功转换的时间戳。
  • 在数据同步和 Delta Lake 转换完成后,Sync status 显示为活动,指示数据已可供使用。

什么是 Delta Lake?

Delta Lake 是一个开源项目,能够基于数据湖构建 Lakehouse 体系结构。 Delta Lake 提供 ACID(原子性、一致性、隔离和持久性)事务、可扩展的元数据处理,并在现有数据湖的基础上统一流式处理和批量数据处理。 Azure Synapse Analytics 与 Linux Foundation Delta Lake 兼容。 Azure Synapse 中包含的 Delta Lake 的当前版本支持 Scala、PySpark 和 .NET 语言。 详细信息:什么是 Delta Lake?。 您还可以从 Delta 表简介视频中了解更多信息。

Apache Parquet 是 Delta Lake 的基准格式,让您能够利用该格式固有的高效压缩和编码方案。 Parquet 文件格式使用逐列压缩。 它既高效又节省存储空间。 提取特定列值的查询不需要读取整行数据,从而提高了性能。 因此,无服务器 SQL 池需要更少的时间和更少的存储请求来读取数据。

为何使用 Delta Lake?

  • 可扩展性:Delta Lake 是在开源 Apache 许可证的基础上构建的,该许可证用于满足处理大规模数据处理工作负荷的行业标准。
  • 可靠性:Delta Lake 提供 ACID 事务,即使在出现故障或并发访问时也能确保数据的一致性和可靠性。
  • 性能:Delta Lake 利用 Parquet 的列式存储格式,提供更好的压缩和编码技术,相比查询 CSV 文件,这可以提高查询性能。
  • 成本效益:Delta Lake 文件格式是一种高度压缩的数据存储技术,让企业有可能节省大量的存储。 此格式专门设计用于优化数据处理,有可能减少按需计算所需的处理数据总量或运行时间。
  • 数据保护合规:带有 Azure Synapse Link 的 Delta Lake 提供了包括软删除和硬删除在内的工具和功能,以帮助遵守各项数据隐私法规,包括“一般数据保护条例 (GDPR)”。

设置 Azure Synapse Link for Dataverse 时,您可以启用导出到 Delta Lake 功能,并连接 Synapse 工作区和 Spark 池。 Azure Synapse Link 会在指定的时间间隔以 CSV 格式导出选定的 Dataverse 表,并通过 Delta Lake 转换 Spark 作业进行处理。 完成此转换过程后,将对 CSV 数据进行清理以节省存储。 此外,还将计划每天运行一系列维护作业,自动执行压缩和清除过程,以合并和清理数据文件,从而进一步优化存储,提高查询性能。

先决条件

  • Dataverse:您必须具有 Dataverse 系统管理员安全角色。 此外,要通过 Azure Synapse Link 导出的表必须启用跟踪更改属性。 详细信息:高级选项
  • Azure Data Lake Storage Gen2:您必须有 Azure Data Lake Storage Gen2 帐户以及所有者存储 Blob 数据参与者角色访问权限。 您的存储帐户必须为初始设置和增量同步启用分层命名空间公用网络访问。仅初始设置需要允许存储帐户密钥访问
  • Synapse 工作区:您必须在 Synapse Studio 中有 Synapse 工作区和访问控制 (IAM) 中的负责人角色和 Synapse 管理员角色访问权限。 Synapse 工作区必须与 Azure Data Lake Storage Gen2 帐户位于同一区域。 存储帐户必须添加为 Synapse Studio 中的链接服务。 要创建 Synapse 工作区,请转到创建 Synapse 工作区
  • Apache Spark 使用此建议的 Spark 池配置的 Azure Synapse 版本 3.3 Apache Spark 的已连接 工作区中的池。 有关如何创建 Spark 池的信息,请转到创建新的 Apache Spark 池
  • 使用此功能的 Microsoft Dynamics 365 最低版本要求为 9.2.22082。 详细信息:选择提前访问更新

此配置可以被认为是平均用例的引导步骤。

  • 节点大小:小 (4 vCores/32 GB)
  • 自动缩放:启用
  • 节点数量:5 到 10
  • 自动暂停:启用
  • 空闲分钟数:5
  • Apache Spark:3.3
  • 动态分配执行程序:已启用
  • 默认执行程序数:1 到 9

重要

将 Spark 池专门用于具有 Synapse 链接的 Delta Lake 对话操作 Dataverse。 为了获得最佳可靠性和性能,请避免使用同一 Spark 池运行其他 Spark 作业。

将 Dataverse 连接到 Synapse 工作区,并以 Delta Lake 格式导出数据

  1. 登录到 Power Apps,选择所需的环境。

  2. 在左侧导航窗格中,选择 Azure Synapse Link。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。

  3. 在命令栏上选择 + 新建链接

  4. 选择连接到 Azure Synapse Analytics 工作区,然后选择订阅资源组工作区名称

  5. 选择使用 Spark 池进行处理,然后选择预创建的 Spark 池存储帐户 包括 Spark 池的 Azure Synapse Link for Dataverse 配置。

  6. 选择下一步

  7. 添加要导出的表,然后选择高级

  8. (可选)选择显示高级配置设置,输入捕获增量更新的频率间隔(以分钟为单位)。

  9. 选择保存

  1. 选择所需的 Azure Synapse Link,然后在命令栏上选择转到 Azure Synapse Analytics 工作区
  2. 选择监视 > Apache Spark 应用程序。 详细信息:使用 Synapse Studio 监视您的 Apache Spark 应用程序

从 Synapse 工作区查看您的数据

  1. 选择所需的 Azure Synapse Link,然后在命令栏上选择转到 Azure Synapse Analytics 工作区
  2. 在左侧窗格中展开湖数据库,请选择 dataverse-environmentNameorganizationUniqueName,然后展开。 所有 Parquet 表都将列出,可用于使用命名约定 DataverseTableName 的分析。 (Non_partitioned 表)

备注

不要使用命名约定为 _partitioned 的表。 当您选择 Delta parquet 作为格式时,具有 _partition 命名约定的表用作暂存表,并在系统使用后被删除。

在 Azure Data Lake Storage Gen2 中查看您的数据

  1. 选择所需的 Azure Synapse Link,然后在命令栏上选择转到 Azure Data Lake
  2. 选择数据存储下的容器
  3. 选择 *dataverse- *environmentName-organizationUniqueName。 所有 Parquet 文件都存储在 deltalake 文件夹中。

使用 Delta Lake 2.2 就地升级到 Apache Spark 3.3

先决条件

  1. 您必须有一个使用 Synapse Spark 版本 3.1 运行的现有 Azure Synapse Link for Dataverse Delta Lake 配置文件。
  2. 您必须使用 Spark 版本 3.3 创建新的 Synapse Spark 池,在同一 Synapse 工作区中使用相同或更高的节点硬件配置。 有关如何创建 Spark 池的信息,请转到创建新的 Apache Spark 池。 此 Spark 池应独立于当前 3.1 池创建。

就地升级到 Spark 3.3:

  1. 登录到 Power Apps,选择您的首选环境。
  2. 在左侧导航窗格中,选择 Azure Synapse Link。 如果项目不在左侧导航窗格中,请选择 …更多,然后选择所需项目。
  3. 打开 Azure Synapse Link 配置文件,然后选择使用 Delta Lake 2.2 升级到 Apache Spark 3.3
  4. 从列表中选择可用的 Spark 池,然后选择更新

备注

仅在触发新的 Delta Lake 转换 Spark 作业时,才会进行 Spark 池升级。 确保在选择更新后至少有一个数据更改。

另请参见

什么是 Azure Synapse Link for Dataverse?