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

在Databricks的PySpark中获取最新创建的表名用于后续查询

获取Databricks中最新output_YYYYMMDD表并自动复用

方法1:利用information_schema查询元数据(推荐)

Databricks的表元数据存储在information_schema.tables中,可直接获取创建时间,筛选目标表后取最新:

-- 替换为你的目标数据库名
USE your_target_db;

WITH latest_output AS (
  SELECT 
    table_name,
    creation_time
  FROM information_schema.tables
  WHERE 
    table_name LIKE 'output_%'
    AND table_schema = current_database()
  ORDER BY creation_time DESC
  LIMIT 1
)
SELECT table_name INTO @latest_table FROM latest_output;

-- 验证变量
SELECT @latest_table;

后续查询可直接复用该变量:

SELECT * FROM @latest_table;

如果用Databricks Notebook的Python代码实现:

# 替换为你的数据库名
db_name = "your_target_db"

# 查询最新表名
latest_table = spark.sql(f"""
  SELECT table_name
  FROM information_schema.tables
  WHERE table_name LIKE 'output_%' AND table_schema = '{db_name}'
  ORDER BY creation_time DESC
  LIMIT 1
""").collect()[0][0]

# 使用表名执行后续查询
df = spark.sql(f"SELECT * FROM {db_name}.{latest_table}")
df.display()

方法2:通过表名日期后缀排序(无元数据权限时用)

如果无法访问information_schema,可直接解析表名中的日期部分排序:

USE your_target_db;

WITH output_tables AS (
  SELECT 
    table_name,
    -- 提取表名的日期部分并转成日期类型
    to_date(substring(table_name, 8, 8), 'yyyyMMdd') AS table_date
  FROM (SHOW TABLES LIKE 'output_%')
)
SELECT table_name INTO @latest_table 
FROM output_tables
ORDER BY table_date DESC
LIMIT 1;

-- 后续查询示例
SELECT * FROM @latest_table;

注意事项

  • 确保账号拥有information_schema的读取权限,这是最可靠的方式(避免表名日期与实际创建时间不符)
  • 若表名严格遵循output_YYYYMMDD格式,方法2也可正常工作,但优先级低于方法1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:40:05