在 Fabric 中使用客户数据(预览版)

Microsoft Fabric OneLake 是整个组织的统一逻辑数据湖,旨在作为所有分析数据的单个位置。 它自动附带每个 Microsoft Fabric 租户,且构建在 Azure Data Lake Storage (ADLS) Gen2 的基础之上。 OneLake 支持任何类型的结构化或非结构化文件,并采用 Delta Parquet 格式存储所有表格数据。 它通过提供单个数据湖来实现跨不同业务组的协作,该数据湖在默认情况下由分布式所有权管理,以便在租户边界内进行协作。 租户中的工作区使组织的不同部分都能分配所有权和访问策略,并且 OneLake 中的所有数据都通过 Lakehouse 和 Warehouse 等数据项进行访问。

就数据存储而言,OneLake 充当引入、转换、实时见解和商业智能可视化的常见存储位置。 它集中了不同的 Fabric 服务,是 Fabric 中所有工作负载使用的数据项的存储。

如何在 Microsoft Fabric 中读取和写入数据

Microsoft Fabric 是一个可用于存储和管理客户数据的平台。 要在 Fabric 中读取和写入数据,需要使用 Fabric REST API 和适当的身份验证方法。

API 权限

某些访问客户数据的方法需要使用 Fabric 之外的其他服务,例如 Azure 存储或 Azure SQL 数据库。 例如,在 Microsoft Fabric 开发人员工具包示例中,API 权限 Azure 存储 user_impersonation 与 Power BI 服务 Lakehouse.Read.All 权限结合使用,以访问 Lakehouse 中的数据。

可以使用 Azure SQL 数据库访问 Warehouse 项的表数据。 在这种情况下,使用 Azure SQL 数据库 user_impersonation 配置应用以代表用户查询数据库,并使用 Power BI 服务 Warehouse.Read.All 查询 Fabric REST API Get Warehouse 终结点。

确保根据开发需求配置 Microsoft Entra ID 应用。

身份验证

在代表用户开始使用 Fabric REST API 或其他服务(例如 Azure 存储和 Azure SQL 数据库)之前,需要使用令牌进行身份验证。 可以通过令牌交换流程来获取此令牌。

Fabric 工作负载开发工具包 SDK 提供了在工作负载前端中获取访问令牌的方法。 有关示例,请参阅示例工作负载控制器

必须将此客户端令牌传递给工作负载后端,并使用代理流交换具有必要作用域的令牌,以访问所需的资源,例如 OneLake。 例如,为了访问和读取 Lakehouse,用户必须授权应用程序使用 Azure 存储 user_impersonation 权限代表他们进行 API 调用。 此外,在后端,必须使用委派作用域 https://storage.azure.com/user_impersonation 获取访问令牌才能使用 Azure 存储。

如果决定使用 SQL 访问客户数据,则必须获取具有作用域 https://database.windows.net//user_impersonation 的访问令牌,才能使用 Azure SQL 数据库和 Microsoft.Data.SqlClient 命名空间。 访问令牌必须按编写方式使用,user_impersonation 前面必须包含两个正斜杠,以便 SQLConnection 类进行验证。 有关令牌身份验证的更多示例,请参阅 Microsoft Fabric 开发工具包示例。

有关如何获取令牌的更多详细信息,请参阅 Microsoft Fabric 工作负载开发 REST API 文档

读取元数据

Fabric REST API 提供了访问项属性的方法。 例如,查询 Get Lakehouse API 可提供特定 Lakehouse 的元数据,包括 OneLake 路径和 SQL 连接字符串等有用属性。 另一个有用的终结点是 Get Warehouse API,它会返回以下信息:

    {
        Id: Guid
        Type: string
        DisplayName: string
        Description: string
        WorkspaceId: Guid
        Properties {
            ConnectionInfo: string
            CreatedDate: DateTime
            LastUpdatedTime: DateTime
        }
    }

此处,“ConnectionInfo”属性是 Warehouse SQL Server 的完全限定域名 (FQDN)。 可以使用此 FQDN 建立 SQL 连接。 有关详细信息,请参阅连接到 Microsoft Fabric 中的数据仓库。 有关实现示例,请参阅 Microsoft Fabric 工作负载开发工具包

读取数据

进行身份验证后,你可以使用 Azure Data Lake Storage REST API 连接到 OneLake,以读取不同类型的数据。 我们建议使用 Delta Lake 协议来读取表。

或者,如果选择使用 Azure SQL 数据库,可实施以下过程,以读取 Warehouse 中的数据。

  1. 创建授权上下文。 有关创建授权上下文的示例,请参阅 AuthenticateDataPlaneCall 方法

  2. 使用从前端传递的持有者令牌,代表用户获取具有 Warehouse.Read.All 作用域的令牌。

  3. 使用 Fabric 令牌调用 Get Warehouse API。 需要访问连接信息和 Warehouse 的显示名称,后者是服务器的初始目录。

  4. 代表用户获取具有 SQL 作用域的令牌。 若要成功建立 SQL 连接,请使用作用域 https://database.windows.net//user_impersonation

  5. 使用 SQL 令牌和连接信息打开 SQL 连接:

    private SqlConnection GetSqlConnection(string token, string databaseFqdn, string initialCatalog)
            {
                var builder = new SqlConnectionStringBuilder();
                builder.DataSource = databaseFqdn; // ConnectionInfo from Get Warehouse API
                builder.InitialCatalog = initialCatalog; //display name of the Warehouse
                builder.ConnectTimeout = 120;
    
                var connection = new SqlConnection();
                connection.AccessToken = token; // SQL token acquired with the Azure SQL Database user_impersonation scope
                connection.ConnectionString = builder.ConnectionString;
                connection.Open();
                return connection;
            }
    
  6. 现在,可以查询此连接以访问 Warehouse 中的数据。 有关使用 Microsoft.Data.SqlClient 命名空间的详细信息,请参阅 Microsoft.Data.SqlClient 命名空间文档

写入数据

除了使用令牌读取数据之外,还可以使用 ADLS API 将数据写入表中,如 Delta Lake 协议所述。

还可以使用 API 创建文件和目录。

或者,可以使用其他 Fabric 工作负载将数据写入平台中。 例如,可以使用 Fabric 的 Lakehouse 工作负载 API 有效地将常见文件类型加载到优化的 Delta 表。 为此,请将 POST 请求发送到表 – 加载表 API 终结点

SQL 连接还可用于执行将数据插入表中的命令。