我正在嘗試將 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;

uj5u.com熱心網友回復:
如果您要逐個單元格地運行它,那么您可以使用 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
它應該給出與上面相同的值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/486203.html
上一篇:加入時處理丟失的資料
