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

如何在PySpark(Databricks)中溯源核心层表依赖的源层表并生成Excel

核心层表-源层依赖关系Excel生成方案

1. 提取依赖元数据

核心思路是解析核心层表的创建DDL语句,从中提取关联的源表信息。在Databricks中,通过SHOW CREATE TABLE语句可获取表的完整创建逻辑,再用正则匹配FROM、JOIN关键字后的源表名称。

  • 遍历所有目标核心层表,逐个执行SHOW CREATE TABLE <核心表名>获取DDL
  • 用正则表达式匹配DDL中的源表,兼容带数据库前缀(如src_db.src_table)、带反引号的表名格式

2. 整理依赖关系

将提取到的核心表-源表对应关系整理成结构化数据,用字典收集后转成DataFrame,确保每个核心表对应其所有依赖的源表(需做去重处理)。

3. 导出为Excel

Databricks依赖openpyxl库处理Excel格式,先安装依赖,再将结构化数据转成Pandas DataFrame后导出到DBFS,最后可从DBFS下载到本地查看。


代码示例

# 安装Excel处理依赖
%pip install openpyxl

import re
import pandas as pd

# 替换为你的核心层表列表,支持带数据库前缀
core_tables = ["core_db.user_profile", "core_db.order_summary"]
dependency_records = {"core_table": [], "source_table": []}

# 正则匹配FROM/JOIN后的表名,适配多种格式
table_regex = re.compile(r'(?:FROM|JOIN)\s+`?([a-zA-Z0-9_.]+)`?', re.IGNORECASE)

for table in core_tables:
    # 获取表的创建DDL
    create_sql = spark.sql(f"SHOW CREATE TABLE {table}").collect()[0][0]
    # 提取所有匹配的源表并去重
    source_tables = list(set(table_regex.findall(create_sql)))
    # 填充记录
    for src in source_tables:
        dependency_records["core_table"].append(table)
        dependency_records["source_table"].append(src)

# 转成DataFrame并导出到DBFS
dependency_df = pd.DataFrame(dependency_records)
output_path = "/dbfs/FileStore/output/core_source_deps.xlsx"
dependency_df.to_excel(output_path, index=False)

print(f"依赖关系表已生成,路径:{output_path}")

关键注意事项

  • 正则表达式需根据实际DDL格式调整,比如存在子查询、临时表时,需优化匹配规则避免误提取
  • 若核心层对象是视图,替换为SHOW CREATE VIEW语句获取逻辑
  • DBFS路径需确保有写入权限,导出后可在Databricks Workspace的FileStore/output目录下找到文件并下载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:10:32