连接到 Azure Data Lake Storage 中的 Common Data Model 表

备注

Azure Active Directory 现已更名为 Microsoft Entra ID。 了解更多

使用 Azure Data Lake Storage 帐户通过 Common Data Model 表将数据引入 Dynamics 365 Customer Insights - Data。 数据引入可以是完整的或增量的。

先决条件

  • 必须为 Azure Data Lake Storage 帐户启用了分层命名空间。 数据必须以分层文件夹格式存储,该格式定义根文件夹,每个表都有子文件夹。 子文件夹可以有完整数据或增量数据文件夹。

  • 若要使用 Microsoft Entra 服务主体进行身份验证,必须在租户中配置它。 有关详细信息,请参阅使用 Microsoft Entra 服务主体连接到 Azure Data Lake Storage 帐户

  • 要连接到受防火墙保护的存储,请设置 Azure 专用链接

  • 如果您的数据湖当前有任何专用链接与其连接,Customer Insights - Data 也必须使用专用链接进行连接,无论网络访问设置如何。

  • 您要从其连接和引入数据的 Azure Data Lake Storage 必须与 Dynamics 365 Customer Insights 环境位于同一 Azure 区域,并且订阅必须在同一租户中。 不支持从不同的 Azure 区域中的 Data Lake 连接到 Common Data Model 文件夹。 若要了解该环境的 Azure 区域,请在 Customer Insights - Data 中转到设置>系统>关于

  • 联机服务中存储的数据可以存储在与处理或存储数据不同的位置。 导入或连接到联机服务中存储的数据即表示您同意传输数据。 在 Microsoft 信任中心了解更多信息

  • Customer Insights - Data 服务主体必须具有以下角色之一才能访问存储帐户。 有关详细信息,请参阅向服务主体授予访问存储帐户的权限

    • 存储 Blob 数据读取器
    • 存储 Blob 数据负责人
    • 存储 Blob 数据参与者
  • 使用 Azure 订阅选项连接到 Azure 存储时,设置数据源连接的用户至少需要存储帐户的存储 Blob 数据参与者权限。

  • 使用 Azure 资源选项连接到 Azure 存储时,设置数据源连接的用户至少需要存储帐户的 Microsoft.Storage/storageAccounts/read 操作权限。 包含此操作的 Azure 内置角色读者角色。 要限制仅访问必要的操作,创建仅包含此操作的 Azure 自定义角色

  • 为了获得最佳性能,分区的大小应小于或等于 1 GB,并且文件夹中的分区文件数不能超过 1000。

  • Data Lake Storage 中的数据应遵循 Common Data Model 标准来存储数据,并应具有 Common Data Model 清单来表示数据文件的架构(*.csv 或 *.parquet)。 清单必须提供表的详细信息,如表列和数据类型,以及数据文件位置和文件类型。 有关详细信息,请参阅 Common Data Model 清单。 如果清单不存在,具有存储 Blob 数据负责人或存储 Blob 数据参与者访问权限的管理员用户可以在引入数据时定义架构。

    备注

    如果 .parquet 文件中的任何字段具有数据类型 Int96,则数据可能不会显示在页上。 我们建议使用标准数据类型,如 Unix 时间戳格式(它将时间表示为自 1970 年 1 月 1 日午夜 (UTC) 以来的秒数)。

限制

  • Customer Insights - Data 不支持精度大于 16 的小数类型列。

连接到 Azure Data Lake Storage

数据连接名称、数据路径(如容器中的文件夹)和表名称必须使用以字母开头的名称。 名称只能包含字母、数字和下划线 (_)。 不支持使用特殊字符。

  1. 转到数据>数据源

  2. 选择添加数据源

  3. 选择 Azure Data Common Data Model 表 用于使用 Common Data Model 表输入现有的 Azure Data Lake 连接详细信息的对话框。

  4. 输入数据源名称说明(可选)。 此名称将在下游流程中引用,在创建数据源后无法更改。

  5. 连接存储使用的是选择以下选项之一。 有关详细信息,请参阅使用 Microsoft Entra 服务主体连接到 Azure Data Lake Storage 帐户

    • Azure 资源:输入资源 ID
    • Azure 订阅:选择订阅,然后选择资源组存储帐户

    备注

    您需要容器的以下角色之一来创建数据源:

    • 存储 Blob 数据读取器足以从存储帐户读取数据并将数据引入 Customer Insights - Data。
    • 如果您要直接在 Customer Insights - Data 中编辑清单文件,则必须是存储 Blob 数据参与者或负责人。

    在存储帐户上具有角色可在其所有容器上提供相同角色。

  6. 选择包含要从中导入数据的数据和架构(model.json 或 manifest.json 文件)的容器的名称。

    备注

    与环境中其他数据源相关联的任何 model.json 或 manifest.json 文件都不显示在列表中。 但是,相同的 model.json 或 manifest.json 文件可用于多个环境中的数据源。

  7. 或者,如果要通过 Azure 专用链接从存储帐户引入数据,选择启用专用链接。 有关详细信息,请转到专用链接

  8. 要创建新架构,请转到创建新架构文件

  9. 要使用现有架构,请导航到包含 model.json 或 manifest.cdm.json 文件的文件夹。 您可以在目录中搜索来查找该文件。

  10. 选择 json 文件,然后选择下一步。 可用表列表将显示。 要选择的表列表的对话框

  11. 选择要包括的表。 主键显示“必需”的对话框

    小费

    要在 JSON 编辑界面中编辑表,选择表,然后选择编辑架构文件。 进行更改,然后选择保存

  12. 对于需要增量引入的选定表,增量刷新下会显示必需。 对于每个表,请参阅为 Azure Data Lake 数据源配置增量刷新

  13. 对于未定义主键的选定表,主键下将显示必需。 对于每个表:

    1. 选择必需编辑表面板将显示。
    2. 选择主键。 主键是表所特有的属性。 若要使属性成为有效主键,它不应包括重复值、缺少值或 null 值。 支持将字符串、整数和 GUID 数据类型属性作为主键。
    3. 或者,更改分区模式。
    4. 选择关闭保存并关闭面板。
  14. 为每个包含的表选择数量。 管理属性页面将显示。 用于选择数据分析的对话框。

    1. 创建新列,编辑或删除现有列。 您可以更改名称、数据格式或添加语义类型。
    2. 要启用分析和其他功能,为整个表或特定列选择数据分析。 默认情况下,不会为数据分析启用任何表。
    3. 选择完成
  15. 选择保存数据源页面将打开,显示处于正在刷新状态的新数据源。

    小费

    任务和流程有状态。 大多数流程依赖于其他上游流程,例如数据源和数据分析刷新

    选择状态以打开进度详细信息窗格,并查看任务的进度。 要取消作业,选择窗格底部的取消作业

    在每个任务下,您可以选择查看详细信息来获取更多进度信息,例如处理时间、上次处理日期以及与任务或流程相关的任何适用的错误和警告。 选择面板底部的查看系统状态可以查看系统中的其他流程。

加载数据可能需要一些时间。 成功刷新后,可以从页查看引入的数据。

创建新架构文件

  1. 选择创建架构文件

  2. 为文件输入名称,然后选择保存

  3. 选择新建表新建表面板将显示。

  4. 输入表名称并选择数据文件位置

    • 多个 .csv 或 .parquet 文件:浏览到根文件夹,选择模式类型,然后输入表达式。
    • 单个 .csv 或 .parquet 文件:浏览到 .csv 或 .parquet 文件,选择该文件。

    用于创建新表的对话框,突出显示数据文件位置。

  5. 选择保存

    用于定义或自动生成属性的对话框。

  6. 选择定义属性手动添加属性,或选择自动生成属性。 要定义属性,输入名称,然后选择数据格式和可选语义类型。 对于自动生成的属性:

    1. 属性自动生成后,选择查看属性管理属性页面将显示。

    2. 确保每个属性的数据格式都是正确的。

    3. 要启用分析和其他功能,为整个表或特定列选择数据分析。 默认情况下,不会为数据分析启用任何表。

      用于选择数据分析的对话框。

    4. 选择完成选择表页面将显示。

  7. 继续添加表和列(如果适用)。

  8. 添加所有表后,选择包括在数据源引入中包括表。

    主键显示“必需”的对话框

  9. 对于需要增量引入的选定表,增量刷新下会显示必需。 对于每个表,请参阅为 Azure Data Lake 数据源配置增量刷新

  10. 对于未定义主键的选定表,主键下将显示必需。 对于每个表:

    1. 选择必需编辑表面板将显示。
    2. 选择主键。 主键是表所特有的属性。 若要使属性成为有效主键,它不应包括重复值、缺少值或 null 值。 支持将字符串、整数和 GUID 数据类型属性作为主键。
    3. 或者,更改分区模式。
    4. 选择关闭保存并关闭面板。
  11. 选择保存数据源页面将打开,显示处于正在刷新状态的新数据源。

    小费

    任务和流程有状态。 大多数流程依赖于其他上游流程,例如数据源和数据分析刷新

    选择状态以打开进度详细信息窗格,并查看任务的进度。 要取消作业,选择窗格底部的取消作业

    在每个任务下,您可以选择查看详细信息来获取更多进度信息,例如处理时间、上次处理日期以及与任务或流程相关的任何适用的错误和警告。 选择面板底部的查看系统状态可以查看系统中的其他流程。

加载数据可能需要一些时间。 成功刷新后,可以从数据>页查看引入的数据。

编辑 Azure Data Lake Storage 数据源

您可以更新连接存储帐户使用的是选项。 有关详细信息,请参阅使用 Microsoft Entra 服务主体连接到 Azure Data Lake Storage 帐户。 若要连接到除存储帐户之外的容器,或更改帐户名称,应创建新的数据源连接

  1. 转到数据>数据源。 在要更新的数据源旁边,选择编辑

  2. 更改以下任一信息:

    • 说明

    • 连接存储使用的是和连接信息。 在更新连接时,无法更改容器信息。

      备注

      必须将以下角色之一分配给存储帐户或容器:

      • 存储 Blob 数据读取器
      • 存储 Blob 数据负责人
      • 存储 Blob 数据参与者
    • 如果要通过 Azure 专用链接从存储帐户引入数据,启用专用链接。 有关详细信息,请转到专用链接

  3. 选择下一步

  4. 更改以下任一信息:

    • 导航到具有来自容器的不同表集的不同 model.json 或 manifest.json 文件。

    • 若要添加更多表来引入,选择新增表

    • 如果没有依赖关系,要删除任何已选择的表,选择该表,然后选择删除

      重要提示

      如果现有 model.json 或 manifest.json 文件以及表集上存在依赖项,则会看到错误消息,并且无法选择其他 model.json 或 manifest.json 文件。 在更改 model.json 或 manifest.json 文件或使用想要避免删除依赖项的 model.json 或 manifest.json 文件创建新数据源之前,请删除这些依赖项。

    • 要更改数据文件位置或主键,选择编辑

    • 要更改增量引入数据,请参阅为 Azure Data Lake 数据源配置增量刷新

    • 仅更改表名称以匹配 .json 文件中的表名称。

      备注

      引入后,始终将表名称与 model.json 或 manifest.json 文件中的表名称保持相同。 Customer Insights - Data 会在每次系统刷新期间使用 model.json 或 manifest.json 验证所有表名称。 如果表名称发生更改,则会发生错误,因为 Customer Insights - Data 在 .json 文件中找不到新表名。 如果引入的表名称被意外更改,应编辑表名称以与 .json 文件中的名称保持一致。

  5. 选择添加或更改列,或启用数据分析。 然后选择完成

  6. 选择保存应用您的更改并返回到数据源页面。

    小费

    任务和流程有状态。 大多数流程依赖于其他上游流程,例如数据源和数据分析刷新

    选择状态以打开进度详细信息窗格,并查看任务的进度。 要取消作业,选择窗格底部的取消作业

    在每个任务下,您可以选择查看详细信息来获取更多进度信息,例如处理时间、上次处理日期以及与任务或流程相关的任何适用的错误和警告。 选择面板底部的查看系统状态可以查看系统中的其他流程。

架构更改时更新数据源

如果在创建数据源连接后更改了源数据的架构,则会出现架构不匹配或数据不匹配错误,要求更新数据源连接。 任务详细信息中将显示错误“源数据中的列已更改”。 架构更改包括对列、列名称和列数据类型的更新。

  1. 转到数据>数据源。 选择包含错误的数据源旁边的编辑。 然后选择下一步

  2. 选择有错误的表。

    显示自动生成属性消息的“管理属性”页的屏幕截图。

  3. 选择自动生成属性并确认。

  4. 属性生成完成后,选择完成

  5. 选择表上的包含,然后选择保存应用更改并返回到数据源页。

防止 Data Lake 引入中出现分区碎片

数据湖分区策略有可能会创建数十万个小分区,如每小时每个实体的新分区。 若要避免分区碎片,请采用以下最佳做法:

  • 避免过度分区:分区应基于低基数列(如日期或区域),而不是实体 ID 或小时等高基数字段。
  • 以最佳文件大小为目标:若要减少打开和关闭很多小文件的开销,提高读取性能,分区文件最好为 16 MB 到 1 GB。
  • 使用提供自动优化功能的 Delta Lake:Delta Lake 支持自动编译,可优化自动管理文件大小和分区布局的写入功能。 在 Databricks Runtime 11.3 及更高版本上,Delta Lake 可以在后台自动调整文件大小和分区。
  • 定期重新评估分区策略:随着数据量和访问模式的演变,分区策略也应该相应变化。 使用数据跳过统计信息和查询分析等工具来指导调整。

成百上千的小分区可能会导致以下症状:

  • 数据引入和查询执行期间的性能下降。
  • 元数据开销和延迟增加。
  • 由于存储和计算使用率低下,运营成本更高。
  • 当分区数超过服务限制时出错。
  • 当系统尝试为每个分区创建图形时出现内存不足错误。