如何在 Databricks 的 SQL 查询中使用 python 变量?

How to use python variable in SQL Query in Databricks?

我正在尝试将 SQL 存储过程转换为数据块笔记本。 在下面的存储过程中,要实现 2 个语句。 这里的表 1 和表 2 是 databricks 集群中的 delta lake 表。

我想在 SQL 查询中使用 python 变量代替 max_date。怎么做?

%sql
DELETE FROM table1 WHERE Date = max_date;
INSERT INTO table1
SELECT * FROM table2 WHERE Date = max_date;

如果您要 运行 一个单元一个单元地进行,那么您可以使用像

这样的数据块小部件

第一个单元格

x=str(datetime.date.today())
dbutils.widgets.text("max_date",x)

第二个单元格

%sql
select getArgument("max_date") AS max_date

会给你

max_date
2022-06-04

但如前所述here当运行全部使用时它不起作用,理想的方法是创建单独的基于语言的笔记本并使用 %运行[=16 传递变量=]

其他方法是像下面这样使用 spark conf

首先为 conf 设置一个值 [Note-the conf 名称应该包含 .(点)]

max_date2=str(datetime.date.today())
spark.conf.set("abc.max_dt2", max_date2)

接下来尝试选择如下值

%sql
select "${abc.max_dt2}" as max_date

它应该给出与上面相同的值