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

Azure Databricks跨Notebook调用配置与查询的自动化实现问询

最优实现方案

1. 重构Notebook1的配置存储

把分散的cfg_1、query_1这类变量改成统一的映射字典,直接用目标表名作为key,这样能通过表名快速匹配对应配置和查询,不用写一堆判断逻辑。示例代码:

# Notebook1 里定义统一映射表
table_configs = {
    "table_1": {
        "cfg": {"db": "prod_db", "date_range": "last_7_days"},
        "query": "SELECT * FROM ${db}.user_events WHERE event_date >= current_date() - ${date_range}"
    },
    "table_2": {
        "cfg": {"db": "staging_db", "limit": 1000},
        "query": "SELECT * FROM ${db}.audit_logs LIMIT ${limit}"
    }
}

2. 在Notebook2中加载配置映射

用%run命令直接加载Notebook1的内容,拿到上面定义的table_configs字典:

# Notebook2 开头加载Notebook1
%run ./Notebook1

3. 配置dbutils交互Widget

添加下拉框Widget让用户选择目标表,同时设置默认选项:

# Notebook2 中创建表选择控件
table_options = list(table_configs.keys())
dbutils.widgets.dropdown("target_table", table_options[0], table_options, "选择目标表")

4. 自动匹配并执行处理逻辑

获取选中的表名,直接从映射字典里取出对应cfg和查询,调用你已经实现的处理函数就行:

# 获取用户选中的表名
selected_table = dbutils.widgets.get("target_table")

# 匹配对应配置和查询模板
config = table_configs[selected_table]["cfg"]
query_template = table_configs[selected_table]["query"]

# 调用已实现的处理函数(假设你的函数叫process_and_write)
process_and_write(query_template, config, selected_table)

额外优化点

  • 配置校验:执行前加个判断,防止选中的表名不在配置里报错:
if selected_table not in table_configs:
    raise ValueError(f"找不到表 {selected_table} 的对应配置,请检查Notebook1")
  • 动态更新选项:如果Notebook1的配置经常变,Widget的下拉选项可以直接从table_configs动态生成,不用手动维护。
  • 调试可视化:加个打印或日志,显示当前选中的表、加载的配置和最终生成的SQL,方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:24:59