我需要在 Azure Databricks 中创建一个小部件,以允许我将日期传递给查询。
这段代码的 MSSQL 版本是(注意我已经大大简化了问题,这是更大查询的一部分,我试图避免自连接):
DECLARE @MAXstartdate DATE = (SELECT MAX(startdate) FROM table
SELECT *
FROM table
WHERE startdate = @MAXstartdate
我已经尝试过:
SET mbr.MAX = (SELECT MAX(startdate) FROM table);
CREATE WIDGET mbr.MAX DEFAULT SELECT MAX(startdate) FROM table
但是 Azure 在这两个方面都会出错。
最佳答案
我尝试使用一些示例数据在我的环境中复制该问题:
create table sampletable(Id int , startdate Date)
insert into sampletable(id,startdate) values(1, '2023-04-04'),(2,'2023-04-23'),(3,'2023-04-12')
使用您的代码:
DECLARE @MAXstartdate DATE = (SELECT MAX(startdate) FROM sampletable
SELECT *
FROM sampletable
WHERE startdate = @MAXstartdate
我收到以下错误:
我通过以下代码解决了该问题:
SELECT *FROM sampletable
WHERE startdate = (SELECT MAX(startdate) FROM sampletable)
我使用以下代码使用上述查询的结果创建了一个小部件:
CREATE WIDGET DROPDOWN maxdate DEFAULT "2023-04-23" CHOICES SELECT MAX(startdate) FROM sampletable ;
我能够使用以下代码访问小部件值:
SELECT *
FROM sampletable
WHERE startdate = getArgument('maxdate')
关于sql - 创建在 Azure Databricks 中传递日期以进行查询的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75931960/