从 Azure 数据资源管理器(ADX)迁移到 Fabric Real-Time 智能(Eventhouse)

本文介绍如何在不停机的情况下逐步将分析工作负荷从 Azure 数据资源管理器过渡到 Fabric 中的 Eventhouse Real-Time 智能。 首先使用 Fabric 作为查询层, 而 ADX 继续引入数据以浏览 Fabric 的功能。 准备就绪后,请通过将架构和引入迁移到 Fabric 来完全迁移

注释

若要了解 Fabric Real-Time 智能与可比较的 Azure 解决方案之间的差异,请参阅 与 Azure 解决方案的比较

在 Fabric 中使用 ADX 数据

仅保留 ADX 进行引入,并使用这两种方法之一使用 Fabric 中的 ADX 数据而不复制数据,从而将查询移动到 Fabric。

  • Fabric 数据库快捷方式(后继者)

    创建 Azure 数据资源管理器 数据库的数据库快捷方式 ,并在不将数据迁移到 Fabric 的情况下进行查询。 Fabric Real-Time 智能工作负荷中的数据库快捷方式是 Kusto 查询语言 (KQL) 数据库中的嵌入引用,指向 Azure 数据资源管理器中的源数据库。 数据库快捷方式的行为类似于 关注者数据库。 它是只读的,同步新数据稍有延迟(秒到分钟),并允许所有 Fabric 项查看和查询 ADX 数据,而无需重新引入它。

  • 将 ADX 群集附加为可查询源

    在 Fabric 中,请确保已连接到 ADX 群集。 在 KQL 查询集中添加 Azure 数据资源管理器源,它允许某些 Fabric 项(如查询集和实时仪表板)查询 ADX 数据。 有关详细信息,请参阅 KQL 查询集中的查询数据 - Microsoft Fabric

    试用 Fabric 的功能,例如 Copilot 辅助查询生成、笔记本、激活器以及有关 ADX 数据的 Power BI 报表。 在 ADX 中继续执行引入时,在 Fabric 中运行所有仪表板和查询。 准备好完全迁移时,请执行后续步骤。

高级迁移步骤

按照以下步骤从 ADX 迁移到 Fabric:

  1. 在 Fabric 中使用 ADX 架构创建新的 KQL 数据库
  2. 使用联合运算符创建一个视图,该运算符访问 KQL 数据库中的表和 ADX 数据库中的表
  3. 将查询终结点重定向到 Fabric Eventhouse 中的 KQL 数据库
  4. 将数据引入切换到 Fabric
  5. 停用 ADX 群集

以下部分提供有关每个步骤的详细信息。

使用 ADX 架构在 Fabric 中创建 KQL 数据库

  1. 在 Fabric eventhouse 中创建一个空的 KQL 数据库,该事件库最终会替换 ADX 数据库。 它必须具有与 ADX 数据库相同的表和函数架构。 有关说明,请参阅 创建事件库和 KQL 数据库

  2. 复制架构

    使用 Sync Kusto 或从 ADX 数据库导出架构,在 Fabric KQL 数据库中重新创建架构。 SyncKusto 是一种专用工具,可在环境之间同步 Kusto 数据库架构(表、函数等)。

    或者,可以在 ADX 中运行 KQL 命令,该命令 .show database schema 生成所有表定义、函数和策略的脚本,然后在 Fabric 中的 KQL 数据库上运行生成的脚本。

  3. 验证架构

    确认 KQL 数据库中的所有表、列、数据类型和相关策略(保留、缓存等)与 ADX 数据库中的表、列、数据类型和相关策略匹配。 此时,Fabric KQL 数据库为空,但已准备好接收数据,你仍然可以使用 Fabric 部分中的“浏览 ADX 数据 ”中的方法查询 ADX。

创建用于无缝数据访问的联合视图

为了避免数据迁移过程中出现任何中断,请在 Fabric 中创建 KQL 视图,以合并旧 ADX 数据库和新的 Fabric KQL 数据库中的数据。 此方法允许查询在转换过程中返回完整的数据集:

  1. 定义联合视图

    对于每个表,请在 Fabric 中创建一个存储的函数, .create function with (view=true)该函数将 Fabric 表与相应的 ADX 表联合在一起。 将该函数命名为与表完全相同,以便以透明方式替代它。 例如,对于表 MyTable,请使用以下命令创建函数:

    .create function with (view=true) MyTable() {
        MyTable 
        | union cluster("YourADXCluster").database("YourDatabase").MyTable
    }
    

    此视图返回 Fabric KQL 数据库中本地 MyTable 的联合,该数据库当前为空或接收新数据,以及 ADX 数据库中的远程表 MyTable

    由于视图的名称为 MyTable,因此使用该表名称的任何查询或报表都会自动查询这两个源。

    Fabric 和 ADX 可能位于不同的群集或租户中。 如果创建命令抱怨外部引用,请使用 skipvalidation=true 函数创建中的选项,这有时需要跨群集函数。

  2. 测试视图

    对视图运行计数或示例查询(例如), MyTable | count以确保它从 ADX 返回数据。 Fabric KQL 数据库现在仍为空,但在下一步迁移引入时,视图将开始返回旧记录和新记录。

将查询终结点重定向到 Fabric Eventhouse 中的 KQL 数据库

现在,更新工具和应用程序以查询新的 Fabric KQL 数据库,而不是 ADX 数据库:

  1. 更新连接字符串

    将分析应用程序、KQL 查询或 Power BI 报表更改为使用 KQL 数据库的终结点(查询 URI),而不是 ADX 群集。 查询保持不变,因为表名和 KQL 没有更改,但它们现在在 Fabric 中运行。 由于在上一步中创建的联合视图,查询 Fabric KQL 数据库的用户仍会通过视图以及引入 Fabric 中的任何新数据从 ADX 获取所有历史数据。

  2. 测试报告和应用

    确保仪表板和脚本从 Fabric KQL 数据库按预期获得结果。 性能可能会略有不同。 如果使用快捷方式,Fabric 可能会缓存某些 ADX 数据。 此步骤有效地将查询终结点移动到 Fabric。 从此处起,所有读取/查询作都发生在 Fabric 上。

将数据引入切换到 Fabric

现在,使用 Fabric 提供的查询,将传入数据流定向到 Fabric:

  1. 重新点引入管道

    更改所有数据生成者(如 IoT 设备、提取-转换加载(ETL)作业、事件中心连接以及以前引入 ADX 数据库的其他数据生成者,以便它们引入 Fabric KQL 数据库。 此步骤可能包括更改 Azure 数据工厂、流分析或自定义应用中的群集 URL、身份验证或更新连接字符串,以使用 KQL 数据库 引入终结点或 URI

  2. 验证新的数据流

    检查新记录是否位于 KQL 数据库中的表中。 Fabric 中的 KQL 数据库开始累积数据。 由于使用的是联合视图,Fabric 中的查询仍显示统一数据集。 随着时间的推移,ADX 中的数据会过时,因为此开关后不会引入 ADX 中的新数据。

停用 ADX 群集

如果确信 Fabric 中提供了所有必需的数据,请停用旧的 ADX 资源:

  1. 删除联合引用

    更改或删除联合视图,以便查询不会从 ADX 群集拉取。 例如,将函数定义更新为 MyTable { MyTable } 仅使用本地数据,或者如果 Fabric 中的物理表具有所有数据,则删除该函数。 检查查询和仪表板是否按预期方式使用仅限 Fabric 的数据。

  2. 存档或传输历史数据(如果需要)

    如果 ADX 中仍有未移动的历史数据(例如,如果未等待数据过期),请考虑在关闭之前将这些数据导出到 Fabric。 否则,如果 ADX 中的数据超出保留要求,请继续。

  3. 解除 ADX 授权

    当 Fabric 同时提供查询和引入时,请关闭或删除 ADX 群集以节省成本。 所有用户现在都应连接到 Fabric。

概要

按照本文中的步骤作,从 ADX 迁移到 Fabric,但中断最少。 首先将消耗层移动到 Fabric,该层可解锁 Copilot、Power BI、Notebook 和激活器等功能,然后逐渐将后端转移到 Fabric。 现在,Fabric 的实时智能(Eventhouse)处理数据的引入和查询,ADX 未使用。