MS Fabric - 从非默认的 Lakehouse 加载笔记本数据?

问题描述 投票:0回答:1

我已将源和奖章阶段加载到他们自己工作区的湖屋中,以实现可扩展性并尝试从一开始就保持整洁。我现在的处境是,在笔记本中,能够从源中提取数据,对其运行一些 SQL,并将其加载到图层中,这将非常有用。非常标准的简单转换步骤。

我可以将这些 Lakehouse 添加到我的笔记本中,以便它们都在那里被引用,但我无法从任何不是该笔记本默认值的 Lakehouse 中获取数据。如果我们无法从中获取数据,为什么还要添加它呢?这是即将发生的事情还是我做错了什么?

当我从 Lakehouse 中的表中选择“加载数据”(该表不是笔记本的默认值)时,它会自动填充单元格,从注释开始:

# With Spark SQL, Please run the query onto the lakehouse which is from the same workspace as the current default lakehouse.

df = spark.sql("SELECT * FROM SilverLayerLakehouse.myTable LIMIT 10")
display(df)

尝试运行该单元会产生错误:

AnalysisException: Table or view not found: SilverLayerLakehouse.myTable; line 1 pos 14; 'GlobalLimit 10 +- 'LocalLimit 10 +- 'Project [*] +- 'UnresolvedRelation [SilverLayerLakehouse, myTable], [], false

如果我将其切换为默认值,它运行良好,但我需要从源加载并存储在 silver 中,中间有一些 SQL。对于“一个湖”,我假设我的数据在任何地方都可见,这就是其背后的整个想法,但我似乎无法让我的笔记本从不同工作区的湖中读取任何内容?我是否遗漏了什么,或者这将是进一步的功能?

default fabric spark-notebook microsoft-fabric data-lakehouse
1个回答
0
投票

首选方法是在 Notebook 所在的工作区中创建一个新的 Lakehouse,并为远程 Lakehouse 中的表创建快捷方式

或者,您可以使用绝对路径来引用另一个工作区中的表。在 URI 中使用 WorkspaceID 和 Lakehouse ID,如下所示

df = spark.read.format("Delta").load("abfss://<Workspace GUID>@onelake.dfs.fabric.microsoft.com/<Lakehouse GUID>/Tables/SUPPLIER")
参见 

https://learn.microsoft.com/en-us/fabric/onelake/onelake-access-api

© www.soinside.com 2019 - 2024. All rights reserved.