You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Databricks:如何从Unity Catalog读取指定分区?

Unity Catalog读取指定分区的方法

无需直接访问存储路径,通过分区裁剪读取指定分区

不管是Unity Catalog中的内部表(Managed Table)还是外部表,都可以通过分区过滤语法实现只读取指定分区,不用加载全量数据:

  • 使用Spark SQL查询时,直接在语句中添加WHERE子句指定分区列的值:
    SELECT * FROM my_catalog.my_database.my_table WHERE partition_col = 'target_partition_value'
    
  • 使用DataFrame API时,调用filter方法过滤分区:
    spark.table("my_catalog.my_database.my_table").filter("partition_col = 'target_partition_value'")
    

Spark会自动识别分区列并执行分区裁剪,仅扫描对应分区的数据,效率和直接访问存储路径相当。

关于外部表的路径读取方式

你提到的直接通过abfs://my_container@my_storage_account.dfs.core.windows.net/<path>/<partition>路径读取是可行的,但这不是唯一方式,上面的分区过滤方法更通用,也更符合Unity Catalog的使用规范(无需暴露底层存储路径)。

是否必须创建外部表才能读指定分区?

不需要。Unity Catalog中的内部表同样支持分区裁剪,只要表是按指定列分区创建的,就可以通过上述的WHERE过滤或filter方法读取指定分区,完全不需要依赖外部表的存储路径访问。

针对视图的特殊说明

如果你查询的是视图(mt_view),可以直接在视图查询语句后添加分区过滤条件,比如:

SELECT * FROM my_catalog.my_database.mt_view WHERE partition_col = 'target_partition_value'

但如果视图的定义本身已经限制了数据范围或未保留分区列,建议直接查询视图对应的底层分区表来实现分区读取。


内容的提问来源于stack exchange,提问作者Alexis Kan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:53:12