如何在 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
它应该给出与上面相同的值
我正在尝试将 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
它应该给出与上面相同的值