使用 Microsoft Fabric 查询 Snowflake 管理的 Apache Iceberg™ 表¶
要在 Microsoft Fabric 中查看 Snowflake 管理的 Iceberg 表,您可以将标准 Snowflake 数据库连接到 Fabric。
本主题提供将标准 Snowflake 数据库连接到 Fabric 的步骤,从而将数据库与 Fabric 同步。连接数据库时,可以选择现有数据库或创建新数据库。然后,您可以在 Fabric 中查看数据库中任何由 Snowflake 管理的 Iceberg 表。
有关 Microsoft OneLake Fabric 的更多信息,请参阅 Microsoft Fabric 文档中 ` Microsoft Fabric 中的 OneLake <https://learn.microsoft.com/en-us/fabric/onelake/ (https://learn.microsoft.com/en-us/fabric/onelake/)>`_。
先决条件¶
在开始之前,请满足 Microsoft Fabric 和 Snowflake 的以下先决条件。
Microsoft Fabric
创建 Microsoft Fabric 账户。有关更多信息,请参阅 Microsoft Fabric 入门 (https://www.microsoft.com/microsoft-fabric/getting-started)。
在 Fabric 账户中创建工作区。有关说明,请参阅 Microsoft Fabric 文档中的 创建工作区 (https://learn.microsoft.com/en-us/fabric/fundamentals/create-workspaces)。您可以使用此工作区查询 Snowflake 管理的 Iceberg 表。
备注
我们建议您仅使用字母数字字符命名 Fabric 工作区。如果您的 Fabric 工作区名称包含特殊字符或非字母数字字符(如空格),则需要复制该工作区的 ID 以便后续指定此 ID。要查找工作区 ID,在 Fabric UI 中打开工作区,然后参考浏览器中的 URL。
您必须是 Fabric 工作区的管理员。
您的 Fabric 租户管理员必须启用 Enable Snowflake database item (Preview) 租户设置,或将此决定委托给 Fabric 容量管理员。您可以在 Fabric Web UI 的管理门户中启用此设置。要访问管理门户,请参阅 Microsoft Fabric 文档中的 如何访问管理门户 (https://learn.microsoft.com/en-us/fabric/admin/admin-center#how-to-get-to-the-admin-portal)。您可以在租户级别启用此设置,将其委派给 Fabric 容量管理员,或仅对某些安全组启用此设置。
Snowflake
您必须拥有 ACCOUNTADMIN 角色的访问权限,或 Snowflake 中具备账户级别 CREATE USER 权限的其他角色。
您必须有权访问 ACCOUNTADMIN 角色或 Snowflake 中具有创建外部卷权限的其他角色。
您必须在 Snowflake 中有一个标准数据库。有关说明,请参阅 CREATE DATABASE。本指南引用了一个名为
SnowflakeFabricIcebergDB的示例标准数据库。备注
要完成本主题中的步骤,您应该有一个现有的标准数据库。本主题包括向该数据库授予权限的步骤。不过,在 将 Snowflake 数据库连接到 Fabric 时,您可以选择创建数据库。若选择在连接数据库到 Fabric 时创建新数据库,则需在 Snowflake 中授予该数据库必要的权限。
第 1 步:查找您的 Microsoft Fabric 租户 ID、Snowflake 组织名称和 Snowflake 账户名称¶
要从 Snowflake 连接到 Microsoft Fabric,您需要 Microsoft Fabric 租户 ID。要从 Snowflake 连接至 Microsoft OneLake,您需要 Snowflake 组织名称和账户名称。
要查找 Microsoft Fabric 租户 ID,请按照以下步骤操作:
导航到 Microsoft Fabric (https://app.fabric.microsoft.com/) 并登录。
选择 ?。
在 Help 窗格中,选择 About Fabric。
从 Fabric 窗口查看 Tenant URL 的值,并将 URL 中位于
ctid之后的部分复制到文本编辑器中。例如:
a111a1a1-1111-111a-a11a-1a11a11111a1
要查找您的 Snowflake 组织名称 (
<orgname>), and Snowflake account name (<accountname>),请参阅 查找账户的组织和账户名称。
第 2 步:在 Snowflake 中创建角色¶
在此步骤中,您需在 Snowflake 中创建一个角色,并授予其使用标准数据库及在该数据库表上执行 SELECT 语句所需的权限。稍后,将此角色授予用户。
使用 ACCOUNTADMIN 角色完成以下步骤:
登录 Snowsight。
在 Snowsight 中创建工作表。有关更多信息,请参阅 在 Snowsight 中创建工作表。
使用 CREATE ROLE 命令创建角色。
USE ROLE ACCOUNTADMIN; CREATE ROLE IF NOT EXISTS R_ICEBERG_METADATA;
要向标准数据库授予 Iceberg 元数据角色权限,请参照此示例为
SnowflakeFabricIcebergDB数据库授予权限:BEGIN LET db STRING := 'SnowflakeFabricIcebergDB'; EXECUTE IMMEDIATE 'GRANT USAGE ON DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT USAGE ON ALL SCHEMAS IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT USAGE ON FUTURE SCHEMAS IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT SELECT ON ALL ICEBERG TABLES IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT SELECT ON FUTURE ICEBERG TABLES IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; END;
要授予角色在现有虚拟仓库上运行查询的权限,请参照此示例授予角色在
COMPUTE_WH虚拟仓库上运行查询的权限:GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE R_ICEBERG_METADATA;
第 3 步:在 Snowflake 中创建一个用户¶
在此步骤中,您将在 Snowflake 中创建一个用户,然后向该用户授予您之前创建的角色。此授权允许用户使用标准数据库。稍后,在 Microsoft Fabric 中创建 Snowflake 连接时指定此用户的凭据。
如果您之前在 Snowflake 中创建了用户,则可以跳过此步骤。
要创建具有您创建的默认角色的用户,请使用 CREATE USER 命令:
USE ROLE ACCOUNTADMIN; CREATE USER IF NOT EXISTS SVC_FABRIC_ICEBERG_METADATA TYPE = LEGACY_SERVICE LOGIN_NAME = 'SVC_FABRIC_ICEBERG_METADATA' DISPLAY_NAME = 'Service - Fabric Iceberg Metadata' PASSWORD = '<strong_password>' MUST_CHANGE_PASSWORD = FALSE DEFAULT_ROLE = R_ICEBERG_METADATA;
将您创建的角色授予用户:
GRANT ROLE R_ICEBERG_METADATA TO USER SVC_FABRIC_ICEBERG_METADATA;
第 4 步:在 Microsoft Fabric 中创建 Snowflake 连接¶
在此步骤中,您将在 Microsoft Fabric 中创建 Snowflake 连接,该连接允许您将 Snowflake 中的标准数据库连接到 Microsoft Fabric。
重要
如果您已在 Microsoft Fabric 中配置了满足以下条件的现有 Snowflake 连接,则可以跳过此步骤:
它使用正确的 Snowflake 用户名和密码凭据。
它可以访问 Snowflake 中所需的仓库。
导航到 Microsoft Fabric (https://app.fabric.microsoft.com/),然后登录。
选择 Settings 图标。
在 Settings 中,选择 Manage connections and gateways。
选择 + New。
在 New connection 对话框中,创建 Snowflake 连接:
选择 Cloud。
对于 Connection name,输入连接名称。
对于 Connection type,选择 Snowflake。
对于 Server,输入 Snowflake 账户的标识符:
https://<orgname>-<accountname>.snowflakecomputing.cn
其中:
<orgname>is the name of your Snowflake organization and<accountname>是 Snowflake 账户名称。要查找这些名称,请参阅 第 1 步:查找您的 Microsoft Fabric 租户 ID、Snowflake 组织名称和 Snowflake 账户名称。
对于 Warehouse,请输入您在 创建角色 时授予 R_ICEBERG_METADATA 角色使用权限的 Snowflake 虚拟仓库名称,例如
COMPUTE_WH。对于 Authentication method,选择 Snowflake。
对于 Username,输入您 在 Snowflake 中创建 的用户名。
对于 Password,输入您 在 Snowflake 中创建 的用户的密码。
选择 Create。
备注
有关在 Microsoft Fabric 中创建 Snowflake 连接的更多信息,请参阅 Microsoft Fabric 文档中的 设置 Snowflake 数据库连接 (https://learn.microsoft.com/fabric/data-factory/connector-snowflake)。
创建连接后,将连接的 Connection ID 复制到文本编辑器。
例如:
1111a111-11a1-1111-11a1-11aa1111aaa1。稍后在将 Snowflake 标准数据库连接到 Microsoft Fabric 时,您必须在 Snowflake 中指定此连接 ID。
第 5 步:检索 Azure 多租户应用程序名称¶
在此步骤中,您将使用 Snowflake 检索 Azure 多租户应用程序名称。稍后在 为 Azure 多租户应用程序授予 Fabric 工作区访问权限 时,您需指定此应用程序名称。
登录 Snowsight。
在导航菜单中,选择 Ingestion » Add Data。
在 Add Data 页面上,选择 Microsoft OneLake。
输入 Fabric 租户 ID,然后选择 Continue。
在靠近顶部的 Create an item in Microsoft Fabric 对话框中,将 Multi-tenant app name 复制到文本编辑器。
第 6 步:授予 Azure 多租户应用程序对工作区的访问权限¶
在此步骤中,您将授予 Azure 多租户应用程序对 Fabric 中工作区的访问权限。
导航到 Microsoft Fabric (https://app.fabric.microsoft.com/),然后登录。
打开 Microsoft Fabric 工作区。
要创建工作区,请参阅 先决条件。
选择 Manage access。
选择 + Add people or groups。
在 Enter name or email 字段中,粘贴来自 Snowflake 的 Azure 多租户应用程序名称。
要检索 Azure 多租户应用程序名称,请参阅 第 5 步:检索 Azure 多租户应用程序名称。
从下拉菜单中,选择 Contributor 访问权限或更高级别,以允许应用程序创建必要的 Fabric 项目。
选择 Add。
在右上角区域中,选择 Settings,然后选择 Manage connections and gateways。
在右上角区域中,搜索您的连接 ID。
您 在 Microsoft Fabric 中创建 Snowflake 连接 时已复制此连接 ID。
在 Connections 选项卡上,将鼠标悬停在您的连接上,选择连接的 ... 图标,然后选择 Manage users。
在 Search by name or email 字段中,搜索并选择您的多租户应用程序名称。
为用户选择适当的权限级别。
要允许多租户应用程序使用 Snowflake 连接,请选择 Share。
第 7 步:将 Snowflake 标准数据库连接到 Microsoft Fabric¶
在此步骤中,您将标准 Snowflake 数据库连接到 Microsoft Fabric。
登录 Snowsight。
在导航菜单中,选择 Ingestion » Add Data。
在 Add Data 页面上,选择 Microsoft OneLake。
输入 Fabric 租户 ID 并选择 Continue。
要查找 Fabric 租户 ID,请参阅 第 1 步:查找您的 Microsoft Fabric 租户 ID、Snowflake 组织名称和 Snowflake 账户名称。
要同意在 Entra 租户中使用 Snowflake 账户的多租户应用程序,请选择 Provide consent。
如果您以前没有执行过此步骤,您应该会看到同意的提示。查看权限并同意,然后继续下一步。
您的 Snowflake 账户可能已完成此步骤。如果是这样,请关闭显示的弹出窗口,然后继续下一步。
如果您无法完成同意流程,请让您的 Entra 租户管理员为您完成此步骤。
选择 Continue。
在 Create an item in Microsoft Fabric 对话框中,填写以下字段:
对于 Fabric workspace name,输入要在其中查看 Iceberg 表的 Fabric 工作区的名称。
要验证您的连接 ID 格式是否正确,对于 Snowflake connection ID in Fabric,请输入您 在 Microsoft Fabric 中创建 Snowflake 连接 时复制的连接 ID。
备注
您必须先在 Fabric 中创建 Snowflake 连接对象,然后才能读取 Snowflake 管理的表。
对于 Snowflake database,请选择包含您希望在 Fabric 中查看的 Snowflake 托管 Iceberg 表的数据库。
备注
如果要创建新的 Snowflake 数据库并将其连接到 Fabric,请选择 + Create a new database。
要创建 Fabric 项目和数据库,请选择 Continue。
在 Create External Volume 对话框中,要创建外部卷,请查看卷详细信息,然后选择 Create Volume。
在 Microsoft Fabric 中创建 Fabric 项目,并在 Microsoft Fabric OneLake 中创建外部卷。
第 8 步:创建 Iceberg 表¶
在此步骤中,您将在 Snowflake 的标准数据库中创建一个 Snowflake 管理的 Iceberg 表。
登录 Snowsight。
在 Snowsight 中打开工作表。
有关更多信息,请参阅 在选项卡中打开工作表。
在标准数据库中,创建一个示例 Iceberg 表:
CREATE ICEBERG TABLE SnowflakeFabricIcebergDB.PUBLIC.SampleIcebergTable ( id INT, name STRING ) CATALOG = 'SNOWFLAKE';
在示例 Iceberg 表中,插入两行:
INSERT INTO SnowflakeFabricIcebergDB.PUBLIC.SampleIcebergTable VALUES (1, 'Alice'), (2, 'Bob');
第 9 步:在 Fabric 中查看 Iceberg 表¶
导航到 Microsoft Fabric (https://app.fabric.microsoft.com/),然后登录。
打开工作区。
您应会看到一个以您数据库命名的新 Snowflake 数据库项目。如果需要,请刷新页面。
在 Snowflake 中创建表的对应位置,打开数据库项目与架构。
您应该会看到在 Snowflake 中创建的 Iceberg 表。在 Snowflake 中更新表时,可以在 Microsoft Fabric 中刷新表更新。
选择右上角的 SQL analytics endpoint。
您可以使用 SQL 与表进行交互,或尝试使用其他 Fabric 工作负载来查询此表以及其他 Fabric 数据。