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

如何在Azure Databricks中查询指定schema下所有表的存储位置

批量获取指定Schema下所有表的存储位置

方法1:使用Databricks SQL批量查询

直接通过系统表生成批量查询逻辑,合并所有表的存储位置结果:

WITH table_list AS (
  SELECT table_name FROM information_schema.tables WHERE table_schema = 'mydata'
)
SELECT 
  table_name AS `Table Name`,
  (SELECT value FROM DESCRIBE DETAIL mydata.`${table_name}` WHERE col_name = 'Location') AS Location
FROM table_list

执行后直接返回你需要的表格格式结果。

方法2:使用PySpark代码批量处理

在Notebook的PySpark环境中,遍历Schema下的所有表并提取存储位置:

# 指定目标Schema名称
schema_name = "mydata"

# 获取Schema下所有表的列表
tables = spark.catalog.listTables(schema_name)

# 收集表名与存储位置的对应关系
table_locations = []
for table in tables:
    # 查询表的详细信息
    detail_df = spark.sql(f"DESCRIBE DETAIL {schema_name}.`{table.name}`")
    # 提取Location字段值
    location = detail_df.filter(detail_df.col_name == "Location").select("value").first()[0]
    table_locations.append({"Table Name": table.name, "Location": location})

# 转换为DataFrame并以表格形式展示
result_df = spark.createDataFrame(table_locations)
display(result_df)

方法3:使用Scala代码(适配你的Scala 2.12环境)

如果习惯用Scala,可执行以下代码实现批量获取:

val schemaName = "mydata"
val tables = spark.catalog.listTables(schemaName)

val tableLocations = tables.map { table =>
  val detailDF = spark.sql(s"DESCRIBE DETAIL $schemaName.`${table.name}`")
  val location = detailDF.filter($"col_name" === "Location").select("value").first().get(0).toString
  (table.name, location)
}.toDF("Table Name", "Location")

display(tableLocations)

以上三种方法均无需逐个手动执行命令,可一次性获取mydata Schema下所有表的存储位置。

内容的提问来源于stack exchange,提问作者Tanvi Mirza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:32:47