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

如何在Databricks SQL笔记本中通过文件路径连接Parquet文件并生成信息表

Databricks SQL 读取Parquet生成元数据表操作指南

前置说明

如果你的业务Parquet文件按表分目录存放(如每个表对应一个独立的存储路径),可以用以下两种方案实现需求,效果和SSMS的information_schema.columns查询结果完全一致。


方案1:先建外部表再通过内置information_schema查询(适合长期复用表的场景)

步骤1:为每个Parquet数据集创建外部表

-- 替换占位符为实际值,批量执行所有业务表的建表语句
CREATE EXTERNAL TABLE IF NOT EXISTS <业务库名>.<表名>
USING PARQUET
LOCATION '<对应Parquet文件的存储目录路径>'
-- 如果有分区可以加 PARTITIONED BY (分区字段名 类型)
;

步骤2:生成目标元数据表

-- 替换<业务库名>、<目标元数据表名>为实际值
CREATE OR REPLACE TABLE <业务库名>.<目标元数据表名> AS
SELECT
  column_name AS `Field Name`,
  data_type AS `Data Type`,
  table_name AS `Table Name`
FROM information_schema.columns
WHERE table_schema = '<业务库名>'
-- 如需筛选指定表,可加条件:AND table_name IN ('表1','表2','表3')
ORDER BY table_name, ordinal_position;

方案2:直接读取Parquet元数据生成(适合临时查询、不需要长期保留业务表的场景)

无需提前建业务表,直接通过DESCRIBE语法读取Parquet路径的元数据,多个表用UNION ALL拼接即可:

CREATE OR REPLACE TABLE <业务库名>.<目标元数据表名> AS
-- 第一个业务表元数据
SELECT
  col_name AS `Field Name`,
  data_type AS `Data Type`,
  '表1的名称' AS `Table Name`
FROM (DESCRIBE parquet.`<表1的Parquet存储路径>`)

UNION ALL

-- 第二个业务表元数据
SELECT
  col_name AS `Field Name`,
  data_type AS `Data Type`,
  '表2的名称' AS `Table Name`
FROM (DESCRIBE parquet.`<表2的Parquet存储路径>`)

-- 后续有更多业务表,继续追加UNION ALL块即可
;

结果验证

执行以下语句即可查看最终元数据效果:

SELECT * FROM <业务库名>.<目标元数据表名>;

注意事项

  • 路径、库名、表名、字段名如果包含特殊字符,需要用反引号`包裹避免语法报错
  • 使用Unity Catalog的环境需要提前配置好存储路径的访问权限和元数据查询权限
  • 如果Parquet文件有schema演化,建表时可以加mergeSchema = true参数读取全量字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:48:02