OneLake 快捷方式

通过 Microsoft OneLake 中的快捷方式,你可通过为整个企业创建单个虚拟数据湖来跨域、云和帐户统一数据。 所有 Fabric 体验和分析引擎都可以通过统一的命名空间直接连接到现有的数据源,例如 Azure、Amazon Web Services (AWS) 和 OneLake。 OneLake 可管理所有权限和凭据,因此你无需单独配置每个 Fabric 体验即可连接到每个数据源。 此外,还可使用快捷方式来消除数据的边缘副本,并减少与数据复制和暂存相关的进程延迟。

什么是快捷方式?

快捷方式是 OneLake 中指向其他存储位置的对象。 位置可以在 OneLake,也可在外部。 快捷方式指向的位置称为快捷方式的目标路径。 快捷方式出现的位置称为快捷方式路径。 快捷方式在 OneLake 中显示为文件夹,任何有权访问 OneLake 的体验或服务都可使用它们。 快捷方式的行为类似于符号链接。 它们是与目标无关的对象。 如果删除快捷方式,目标将不受影响。 如果移动、重命名或删除目标路径,快捷方式可能会遭到破坏。

该示意图显示快捷方式如何创建存储在其他位置的文件和文件夹。

在哪里可以创建快捷方式?

你可以在湖屋和 Kusto 查询语言 (KQL) 数据库中创建快捷方式。 此外,在这些项中创建的快捷方式可以指向其他 OneLake 位置、Azure Data Lake Storage (ADLS) Gen2、Amazon S3 存储帐户或 Dataverse。

可以使用 Fabric UI 以交互方式创建快捷方式,也可以使用 REST API 以编程方式创建快捷方式。

Lakehouse

在湖屋中创建快捷方式时,请务必了解项的文件夹结构。 湖屋由两个顶级文件夹组成:“表”文件夹和“文件”文件夹。 “表”文件夹表示湖屋的托管部分,而“文件”文件夹表示湖屋的非托管部分。 在“表”文件夹中,只能在顶层创建快捷方式。 “表”文件夹的其他子目录中不支持快捷方式。 如果快捷方式的目标包含增量\Parquet 格式的数据,湖屋将自动同步元数据并将文件夹识别为表。 在“文件”文件夹中,创建快捷方式的位置没有限制。 你可以在文件夹层次结构的任何级别创建它们。 表发现不会在“文件”文件夹中发生。

并排显示湖视图和表视图的示意图。

KQL 数据库

在 KQL 数据库中创建快捷方式时,该快捷方式会显示在该数据库的“快捷方式”文件夹中。 KQL 数据库将快捷方式视为外部表。 若要查询该快捷方式,请使用 Kusto 查询语言的 external_table 函数。

KQL 数据库中的快捷方式的屏幕截图。

我可以在哪里访问我的数据?

可以访问 OneLake 中的数据的任何 Fabric 或非 Fabric 服务都可以使用快捷方式。 快捷方式对于通过 OneLake API 访问数据的任何服务都是透明的。 快捷方式只是显示为湖中的另一个文件夹。 Spark、SQL、实时分析和 Analysis Services 都可以在查询数据时都使用快捷方式。

Spark

Spark 笔记本和 Spark 作业可以利用在 OneLake 中创建的快捷方式。 相对文件路径可用于直接从快捷方式读取数据。 此外,如果在湖屋的“表”部分创建了快捷方式,并且该快捷方式采用了增量格式,则可以使用 Spark SQL 语法将其作为托管表来进行读取。

df = spark.read.format("delta").load("Tables/MyShortcut")
display(df)
df = spark.sql("SELECT * FROM MyLakehouse.MyShortcut LIMIT 1000")
display(df)

注意

增量格式不支持名称中含有空格字符的表。 名称中包含空格的任何快捷方式都不会被发现为湖屋中的增量表。

SQL

也可以通过湖屋的 SQL 分析终结点在湖屋的“表”部分中读取快捷方式。 可以通过湖屋的模式选择器或通过 SQL Server Management Studio (SSMS) 访问 SQL 分析终结点。

SELECT TOP (100) *
FROM [MyLakehouse].[dbo].[MyShortcut]

实时分析

KQL 数据库中的快捷方式会被识别为外部表。 若要查询该快捷方式,请使用 Kusto 查询语言的 external_table 函数。

external_table('MyShortcut')
| take 100

Analysis Services

可以为湖屋创建语义模型,其中包含湖屋的“表”部分中的快捷方式。 当语义模型在 Direct Lake 模式下运行时,Analysis Services 可以直接从快捷方式读取数据。

非 Fabric

Fabric 外部的应用程序和服务还可以通过 OneLake API 访问快捷方式。 OneLake 支持 ADLS Gen2 和 Blob 存储 API 的子集。 若要详细了解 OneLake API,请参阅使用 API 进行 OneLake 访问

https://onelake.dfs.fabric.microsoft.com/MyWorkspace/MyLakhouse/Tables/MyShortcut/MyFile.csv

快捷方式类型

OneLake 快捷方式支持多个文件系统数据源。 其中包括内部 OneLake 位置、Azure Data Lake Storage (ADLS) Gen2、Amazon S3 和 Dataverse。

内部 OneLake 快捷方式

通过内部 OneLake 快捷方式,可以引用现有 Fabric 项中的数据。 这些项包括湖屋、KQL 数据库和数据仓库。 快捷方式可指向同一个项中、跨同一工作区中的不同项中,甚至跨不同工作区的不同项中的文件夹位置。 创建跨项的快捷方式时,不需要匹配项类型。 例如,可以在湖屋中创建指向数据仓库中的数据的快捷方式。

当用户通过指向另一个 OneLake 位置的快捷方式访问数据时,将使用调用用户的标识来授权访问快捷方式的目标路径中的数据*。 此用户必须在目标位置具有读取数据的权限。

重要

在通过 Power BI 语义模型或 T-SQL 访问快捷方式时,调用用户的标识不会传递到快捷方式目标。相反,将会传递调用项所有者的标识,从而将访问权限委托给调用用户。

ADLS 快捷方式

还可以为 ADLS Gen2 存储帐户创建快捷方式。 创建 ADLS 的快捷方式时,目标路径可以指向分层命名空间中的任何文件夹。 目标路径至少必须包含容器名称。

Access

ADLS 快捷方式必须指向存储帐户的 DFS 终结点。 示例: https://accountname.dfs.core.windows.net/

如果存储帐户受存储防火墙保护,则可以配置受信任的服务访问权限。 参阅受信任的工作区访问权限

授权

ADLS 快捷方式采用了委托的授权模型。 在此模型中,快捷方式创建者为 ADLS 快捷方式指定凭据,对该快捷方式的所有访问都将使用该凭据获得授权。 支持的委托类型包括组织帐户、帐户密钥、共享访问签名 (SAS) 和服务主体。

  • 组织帐户 - 必须具有存储帐户上的存储 Blob 数据读取者、存储 Blob 数据参与者或存储 Blob 数据所有者角色
  • 共享访问签名 (SAS) - 必须至少包含以下权限:读取、列出和执行
  • 服务主体 - 必须具有存储帐户上的存储 Blob 数据读取者、存储 Blob 数据参与者或存储 Blob 数据所有者角色

注意

必须在 ADLS Gen 2 存储帐户上启用分层命名空间。

S3 快捷方式

你还可以创建指向 Amazon S3 帐户的快捷方式。 创建 Amazon S3 的快捷方式时,目标路径必须至少包含存储桶名称。 S3 本机不支持分层命名空间,但你可以使用前缀来模拟目录结构。 可在快捷方式路径中包含前缀,以进一步缩小可通过快捷方式访问的数据范围。 通过 S3 快捷方式访问数据时,前缀将表示为文件夹。

Access

S3 快捷方式必须指向 S3 存储桶的 https 终结点。

示例: https://bucketname.s3.region.amazonaws.com/

注意

无需为 S3 帐户禁用 S3 阻止公共访问设置,S3 快捷方式即可正常运行。

存储防火墙或虚拟私有云不得阻止对 S3 终结点的访问。

授权

S3 快捷方式采用了委托的授权模型。 在此模型中,快捷方式创建者为 S3 快捷方式指定凭据,对该快捷方式的所有访问都将使用该凭据获得授权。 支持的委派凭据是 IAM 用户的密钥和机密。

IAM 用户必须对快捷方式指向的存储桶具有以下权限。

  • S3:GetObject
  • S3:GetBucketLocation
  • S3:ListBucket

注意

S3 快捷方式是只读的。 无论 IAM 用户的权限如何,它们都不支持写入操作。

Google Cloud Storage 快捷方式(预览)

可以使用适用于 GCS 的 XML API 创建 Google Cloud Storage (GCS) 的快捷方式。 创建 Google Cloud Storage 的快捷方式时,目标路径必须至少包含存储桶名称。 还可以通过进一步指定要指向存储层次结构中的前缀/文件夹来限制快捷方式的范围。

Access

为 GCS 快捷方式配置连接时,可以指定存储服务的全局终结点,也可以使用特定于存储桶的终结点。

  • 全局终结点示例:https://storage.googleapis.com
  • 存储桶特定终结点示例: https://<BucketName>.storage.googleapis.com

授权

GCS 快捷方式使用委派授权模型。 在此模型中,快捷方式创建者为 GCS 快捷方式指定凭据,对该快捷方式的所有访问都将使用该凭据获得授权。 支持的委派凭据是服务帐户或用户帐户的 HMAC 密钥和机密。

该帐户必须有权访问 GCS 存储桶中的数据。 如果在快捷方式的连接中使用了存储桶特定终结点,该帐户必须具有以下权限:

  • storage.objects.get
  • stoage.objects.list

如果在快捷方式的连接中使用了全局终结点,该帐户必须具有以下权限:

  • storage.buckets.list

注意

GCS 快捷方式是只读的。 无论所用帐户的权限如何,它们都不支持写入操作。

Dataverse 快捷方式

Dataverse 与 Microsoft Fabric 的直接集成使组织能够将其 Dynamics 365 企业应用程序和业务流程扩展到 Fabric 中。 此集成是通过快捷方式实现的,而快捷方式可通过两种方式创建:通过 PowerApps 创建者门户创建或通过 Fabric 直接创建。

通过 PowerApps 创建者门户创建快捷方式

获得授权的 PowerApps 用户可以访问 PowerApps 创建者门户,并使用指向 Microsoft Fabric 功能的链接。 在此一键式操作中,系统会在 Fabric 中创建一个湖屋,并为 Dataverse 环境中的每个表自动生成快捷方式。 有关详细信息,请参阅 Dataverse 与 Microsoft Fabric 的直接集成

通过 Fabric 创建快捷方式

Fabric 用户还可以创建 Dataverse 的快捷方式。 在创建快捷方式的用户体验中,用户可以选择 Dataverse,提供其环境 URL,以及浏览可用的表。 此体验允许用户选择性地选择要引入 Fabric 的表,而不是引入所有表。

注意

Dataverse 表必须先在 Dataverse 托管湖中可用,然后才能在 Fabric 中的创建快捷方式用户体验中可见。 如果表在 Fabric 中不可见,请使用 PowerApps 创建者门户中的“链接到 Microsoft Fabric”功能。

授权

Dataverse 快捷方式采用了委托的授权模型。 在此模型中,快捷方式创建者为 Dataverse 快捷方式指定凭据,对该快捷方式的所有访问都将使用该凭据获得授权。 支持的委托凭据类型为组织帐户 (OAuth2)。 该机构帐户必须拥有 Dataverse 托管湖中数据的系统管理员权限。

注意

Dataverse 快捷方式授权目前不支持服务主体。

缓存

快捷方式缓存可用于降低与跨云数据访问相关的出口成本。 当通过外部快捷方式读取文件时,文件将存储在 Fabric 工作区的缓存中。 后续的读取请求由缓存而不是远程存储提供程序提供服务。 缓存文件的保持期为 24 小时。 每次访问文件时,保持期都会重置。 如果远程存储提供程序中的文件比缓存中的文件更新,则由远程存储提供程序提供请求,并且更新的文件将存储在缓存中。 如果某个文件超过 24 小时未被访问,则会从缓存中被清除。 大小超过 1GB 的单个文件不会被缓存。

注意

目前仅支持 GCS、S3 和 S3 兼容快捷方式的快捷方式缓存。

要启用快捷方式缓存,请打开“工作区设置”面板。 选择 OneLake 选项卡。将缓存设置切换为“”,然后单击“保存”。

工作区设置面板的屏幕截图,其中选择了 OneLake 选项卡。

快捷方式如何利用云连接

ADLS 和 S3 快捷方式授权通过使用云连接进行委派。 创建新的 ADLS 或 S3 快捷方式时,需创建新连接或为数据源选择现有连接。 为快捷方式设置连接是一种绑定操作。 只有具有连接权限的用户才能执行绑定操作。 如果对连接没有权限,则无法使用该连接创建新的快捷方式。

权限

快捷方式的权限由快捷方式路径和目标路径中的权限组合进行控制。 当用户访问快捷方式时,会应用这两个位置的最严格权限。 因此,如果用户在湖屋中具有读/写权限,但在快捷方式目标中只拥有读取权限,则该用户无法写入快捷方式目标路径。 同样,如果用户在湖屋中仅具有读取权限,但在快捷方式目标中拥有读/写权限,则该用户也无法写入快捷方式目标路径。

工作区角色

下表显示了每个工作区角色与快捷方式相关的权限。 有关详细信息,请参阅工作区角色

功能 管理员 成员 参与者 查看者
创建快捷方式 1 1 1 -
读取快捷方式的文件/文件夹内容 2 2 2 -
写入快捷方式目标位置 3 3 3 -
通过 TDS 终结点从湖屋表部分中的快捷方式读取数据

1 用户必须具有在快捷方式位置提供写入权限,且至少在目标位置提供读取权限的角色。

2 用户必须具有在快捷方式位置和目标位置都提供读取权限的角色。

3 用户必须具有在快捷方式位置和目标位置都提供写入权限的角色。

OneLake 数据访问角色(预览)

OneLake 数据访问角色是一项新功能,可用于将基于角色的访问控制 (RBAC) 应用于 OneLake 中存储的数据。 你可以定义安全角色,授予对 Fabric 项中特定文件夹的读取访问权限,并将其分配给用户或组。 访问权限决定了用户通过湖屋 UX、笔记本或 OneLake API 访问数据湖视图时看到的文件夹。 对于启用了预览功能的项,OneLake 数据访问角色也决定了用户对快捷方式的访问权限。

无论定义的 OneLake 数据访问角色如何,具有管理员、成员和参与者角色的用户都具有从快捷方式读取数据的完全访问权限。 但是,他们仍然需要访问工作区角色中提到的快捷方式的源和目标。

具有查看者角色或直接与其共享湖屋的用户的访问权限将受到限制,具体取决于用户是否有权通过 OneLake 数据访问角色进行访问。 有关具有快捷方式的访问控制模型的更多信息,请参阅 OneLake 中的数据访问控制模型

快捷方式如何处理删除?

快捷方式不执行级联删除。 对快捷方式执行删除操作时,仅删除快捷方式对象。 快捷方式目标中的数据保持不变。 但是,如果对快捷方式中的文件或文件夹执行删除操作,并且你在快捷方式目标中具有执行删除操作的权限,则会在目标中删除文件和/或文件夹。 以下示例说明了这一点。

删除示例

用户 A 有一个湖屋,其中包含以下路径:

MyLakehouse\Files\MyShortcut\Foo\Bar

MyShortcut 是一个快捷方式,它指向包含 Foo\Bar 目录的 ADLS Gen2 帐户。

删除快捷方式对象

用户 A 对以下路径执行删除操作:

MyLakehouse\Files\MyShortcut

在这种情况中,将从湖屋中删除 MyShortcut。 快捷方式不执行级联删除,因此 ADLS Gen2 帐户 Foo\Bar 中的文件和目录不受影响。

删除快捷方式引用的内容

用户 A 对以下路径执行删除操作:

MyLakehouse\Files\MyShortcut\Foo\Bar

在这种情况下,如果用户 A 在 ADLS Gen2 帐户中具有写入权限,则会从 ADLS Gen2 帐户中删除 Bar 目录。

工作区世系视图

在工作区中的多个 Fabric 项之间创建快捷方式时,可以通过工作区世系视图可视化快捷方式关系。 在工作区资源管理器右上角选择“数据世系”按钮 ()。

数据世系屏幕的屏幕截图。

注意

世系视图的范围限定为单个工作区。 不会显示指向所选工作区外部位置的快捷方式。

限制和注意事项

  • 每个 Fabric 项的快捷方式数不超过 100,000。 在此上下文中,“项”这个术语是指:应用、湖屋、仓库、报表等。
  • 单个 OneLake 路径中的快捷方式数不超过 10。
  • 快捷方式链接的直接快捷方式数量为 5 个。
  • ADLS 和 S3 快捷方式目标路径不能包含 RFC 3986 第 2.2 节中所述的任何保留字符。 有关允许的字符,请参阅 RFC 3968 第 2.3 节
  • OneLake 快捷方式名称、父路径和目标路径不能包含“%”或“+”字符。
  • 快捷方式不支持非拉丁字符。
  • ADLS 或 S3 快捷方式不支持复制 Blob API。
  • 复制函数不适用于直接指向 ADLS 容器的快捷方式。 建议创建指向至少低于容器一个级别的目录的 ADLS 快捷方式。
  • 无法在 ADLS 或 S3 快捷方式中创建其他快捷方式。
  • 数据仓库和语义模型的快捷方式世系目前不可用。