簡體   English   中英

如何在 Databricks 的 SQL 查詢中使用 python 變量?

[英]How to use python variable in SQL Query in Databricks?

我正在嘗試將 SQL 存儲過程轉換為 databricks 筆記本。 在下面的存儲過程中,要執行 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;

在此處輸入圖像描述

如果您要逐個單元格地運行它,那么您可以使用 databricks 小部件,例如

第一個單元格

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

第二個細胞

%sql
select getArgument("max_date") AS max_date

會給你

max_date
2022-06-04

但正如這里提到的,當使用 run all 時它不起作用,理想的方法是創建單獨的基於語言的筆記本並使用 %run 傳遞變量

其他方法是使用 spark conf,如下所示

首先為 conf 設置一個值 [注意-conf 名稱中應包含 .(dot)]

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

接下來嘗試選擇如下值

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

它應該給出與上面相同的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM