什么是视图?
视图是对 Unity Catalog 中的一个或多个表和视图进行查询的结果。 视图是一个只读对象,由元存储中的一个或多个表和视图组成。 可以从多个架构和目录中的表和其他视图创建视图。
本文介绍可在 Azure Databricks 中创建的视图。
在 Unity Catalog 中,视图位于三级命名空间的第三级别 (catalog.schema.view
):
视图通常针对元存储中的一个或多个数据源或表存储查询的文本。 在 Azure Databricks 中,视图等效于作为架构中的对象保留的 Spark DataFrame。 与 DataFrame 不同,你可以从 Azure Databricks 中的任何位置查询视图,前提是你有权执行此操作。 创建视图时不会处理或写入任何数据。 只有查询文本会注册到关联架构中的元存储。
备注
如果为视图提供支持的数据源不是 Delta 表,则视图可能具有不同的执行语义。 Databricks 建议始终使用表或视图名称引用数据源来定义视图。 通过指定路径或 URI 定义数据集视图可能会导致数据治理需求混乱。
具体化视图以增量方式计算和更新定义查询返回的结果。
可以使用 Databricks SQL 在 Unity Catalog 中注册具体化视图,或将其定义为 Delta Live Tables 管道的一部分。 请参阅在 Databricks SQL 中使用具体化视图和什么是 Delta Live Tables?。
临时视图的范围和持久性有限,它不注册到架构或目录。 临时视图的生存期因所使用的环境而异:
- 在笔记本和作业中,临时视图的范围限定为笔记本或脚本级别。 它们不能在声明了它们的笔记本之外引用,并且当笔记本从群集分离时它们将不再存在。
- 在 Databricks SQL 中,临时视图的范围限定为查询级别。 同一查询中的多个语句可以使用临时视图,但不能在其他查询中引用,即使在同一仪表板中也是如此。
动态视图除了用于数据掩码外,还可用于提供行级和列级访问控制。 请参阅创建动态视图。
可以针对任何数据源定义旧版 Hive 视图,并在旧版 Hive 元存储中注册它们。 Databricks 建议将所有旧版 Hive 视图迁移到 Unity Catalog。 请参阅 Hive 元存储中的视图。
全局临时视图是一项旧的 Azure Databricks 功能,它让你可以注册可用于针对计算资源运行的所有工作负载的临时视图。 全局临时视图是 Hive 和 HDFS 的遗留物。 Databricks 不建议使用全局临时视图。