在Azure Databricks中基于当前日期创建表(SQL/Python实现)
在Azure Databricks中创建带日期后缀的表
一、Databricks SQL实现方案
直接用变量替换无法解析函数表达式,需通过动态SQL(EXECUTE IMMEDIATE)拼接表名并执行。具体代码如下:
-- 将当前日期格式化为YYYY-MM-DD并赋值给变量 SET p.myVar = (SELECT DATE_FORMAT(CURRENT_DATE(), 'yyyy-MM-dd')); -- 动态生成并执行建表SQL EXECUTE IMMEDIATE CONCAT('CREATE OR REPLACE TABLE workbench.example_', ${p.myVar}, ' AS SELECT "1"'); -- 动态查询刚创建的表 EXECUTE IMMEDIATE CONCAT('SELECT * FROM workbench.example_', ${p.myVar});
说明
- 先通过子查询把
CURRENT_DATE()转为指定格式的字符串,避免变量直接保留函数表达式 - 用
CONCAT拼接完整SQL语句,再通过EXECUTE IMMEDIATE执行动态生成的逻辑
二、Databricks Python实现方案
如果SQL方案无法满足需求,可通过PySpark代码实现:
from datetime import datetime from pyspark.sql import SparkSession # 生成格式化日期并拼接表名 current_date = datetime.today().strftime('%Y-%m-%d') table_name = f"workbench.example_{current_date}" # Databricks环境中SparkSession通常已初始化,无需手动创建 spark = SparkSession.builder.getOrCreate() # 执行建表语句 spark.sql(f"CREATE OR REPLACE TABLE {table_name} AS SELECT '1'") # 查询表数据 result = spark.sql(f"SELECT * FROM {table_name}") result.show()
说明
- 用Python的
datetime模块生成符合要求的日期字符串,拼接出完整表名 - 通过
spark.sql()执行动态生成的建表、查询语句,适配Databricks环境
内容的提问来源于stack exchange,提问作者Englishman Bob
相关产品推荐
相关产品推荐

