湖屋架构是什么(预览版)?
湖屋支持创建自定义架构。 架构允许将表组合在一起,以便更好地发现数据、进行访问控制等操作。
创建湖屋架构
要为湖屋启用架构支持,创建湖屋架构时,请选中“湖屋架构(公共预览版)”旁边的框。
重要
由于预览限制,工作区名称只能包含字母数字字符。 如果在工作区名称中使用特殊字符,则某些湖屋功能将不起作用。
创建湖屋后,可以在“表”下找到名为“dbo”的默认架构。 此架构始终存在,且无法更改或删除。 要创建新架构,请将鼠标悬停在“表”上,选择“…”,然后选择“新建架构”。 输入架构名称,然后选择“创建”。 架构将在到“表”下按字母顺序列出。
在湖屋架构中存储表
需要一个架构名称才能将表存储在架构中。 否则,会转到默认“dbo”架构。
df.write.mode("Overwrite").saveAsTable("contoso.sales")
可以使用湖屋资源管理器来排列表,并将表名称拖放到不同的架构。
注意
如果修改表,还必须更新相关项(如笔记本代码或数据流),确保它们与正确的架构保持一致。
使用架构快捷方式引入多个表
要从其他 Fabric 湖屋或外部存储引用多个 Delta 表,请使用架构快捷方式,该快捷方式可显示所选架构或文件夹下的所有表。 架构中也会显示对源位置中的表所做的任何更改。 要创建架构快捷方式,请将鼠标悬停在“表”上,选择“…”,然后选择“新建架构快捷方式”。 然后在另一个湖屋上选择架构,或者选择外部存储(如 Azure Data Lake Storage [ADLS] Gen2)上包含 Delta 表的文件夹。 这将使用所引用的表创建新的架构。
访问湖屋架构来进行 Power BI 报告
要创建语义模型,只需选择要使用的表。 表可以位于不同的架构中。 如果来自不同架构的表共享相同的名称,则“模型视图”中的表名称旁边会显示数字。
笔记本中的湖屋架构
在笔记本对象资源管理器中查看启用了架构的湖屋时,可以看到表位于架构中。 可以将表拖放到代码单元格中,获取引用表所在架构的代码片段。 使用此命名空间引用代码中的表:“workspace.lakehouse.schema.table”。 如果省略任何元素,执行程序将使用默认设置。 例如,如果只提供表名称,则它使用笔记本的默认湖屋的默认架构 (dbo)。
重要
如果要在代码中使用架构,请确保笔记本的默认湖屋已启用架构。
跨工作区 Spark SQL 查询
使用命名空间“workspace.lakehouse.schema.table”来引用代码中的表。 这样,如果运行代码的用户有权访问表,则可以联接不同工作区的表。
SELECT *
FROM operations.hr.hrm.employees as employees
INNER JOIN global.corporate.company.departments as departments
ON employees.deptno = departments.deptno;
重要
请确保只从启用了架构的湖屋联接表。 从未启用架构的湖屋联接表将不起作用。
公共预览版限制
以下列出的不支持的功能/功能适用于公共预览版的当前版本。 在正式发布之前,将在即将发布的版本中解决这些问题。
不支持的功能/功能 | 备注 |
---|---|
共享湖屋 | 在命名空间中使用共享 lakehouses 中的工作区不起作用,例如 wokrkspace.sharedlakehouse.schema.table。 THe 用户必须具有工作区角色才能在 namaspace 中使用工作区。 |
托管的非 Delta 表架构 | 不支持为托管的非 Delta 格式表(例如 CSV)获取架构。 在湖屋资源管理器中展开这些表不会在 UX 中显示任何架构信息。 |
外部 Spark 表 | 不支持外部 Spark 表操作(例如发现、获取架构等)。 这些表在 UX 中无法识别。 |
公共 API | 启用了架构的湖屋不支持公共 API(列出表、加载表、公开 defaultSchema 扩展属性等)。 在启用了架构的湖屋上调用的现有公共 API 会导致错误。 |
表维护 | 不支持。 |
更新表属性 | 不支持。 |
包含特殊字符的工作区名称 | 不支持包含特殊字符(例如空格、斜杠)的工作区。 显示用户错误。 |
Spark 视图 | 不支持。 |
Hive 特定功能 | 不支持。 |
USE <schemaName> |
不能跨工作区工作,但在同一工作区中受支持。 |
迁移 | 不支持将现有非架构湖屋迁移到基于架构的湖屋。 |