Databricks SQL错误:无法评估在线表定义中的表达式外部表达式
我加入了两个表,并试图获得两个时间戳字段的最大时间戳值。这是我的SQL语句:
SELECT
rts.DataLakeModified_DateTime,
rtt.DataLakeModified_DateTime,
(
SELECT MAX(DataLakeModifiedDateTime)
FROM VALUES(rts.DataLakeModified_DateTime), (rtt.DataLakeModified_DateTime) AS AllDates (DataLakeModifiedDateTime)
) AS DataLakeModifiedDateTime
FROM RetailTransactionSalesTrans_Full rts
LEFT JOIN RetailTransactionTable_Full rtt
ON rtt.TRANSACTIONID = rts.TRANSACTIONID
AND rtt.CHANNEL = rts.CHANNEL
AND rtt.STORE = rts.STORE
AND rtt.TERMINAL = rts.TERMINALID
但是它有一个错误:
Error in SQL statement: AnalysisException: cannot evaluate expression outer(rts.DataLakeModified_DateTime) in inline table definition; line 6 pos 17
我正在使用Spark3.2.1和MSSQL数据库。而且我使用104 LTS群集在Azure Databricks笔记本上运行它(包括Apache Spark3.2.1,Scala 2.12)。
您是否有解决此问题的解决方案?
I joined two tables and tried to get a max timestamp value of two timestamp fields. This is my SQL statement:
SELECT
rts.DataLakeModified_DateTime,
rtt.DataLakeModified_DateTime,
(
SELECT MAX(DataLakeModifiedDateTime)
FROM VALUES(rts.DataLakeModified_DateTime), (rtt.DataLakeModified_DateTime) AS AllDates (DataLakeModifiedDateTime)
) AS DataLakeModifiedDateTime
FROM RetailTransactionSalesTrans_Full rts
LEFT JOIN RetailTransactionTable_Full rtt
ON rtt.TRANSACTIONID = rts.TRANSACTIONID
AND rtt.CHANNEL = rts.CHANNEL
AND rtt.STORE = rts.STORE
AND rtt.TERMINAL = rts.TERMINALID
But it has an error:
Error in SQL statement: AnalysisException: cannot evaluate expression outer(rts.DataLakeModified_DateTime) in inline table definition; line 6 pos 17
I'm using Spark3.2.1 and MSSQL database. And I'm running it on Azure Databricks notebook using 104 LTS cluster (include Apache Spark3.2.1, Scala 2.12).
Do you have any solution to solve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
错误似乎是因为以下SQL语句的使用以获取最大时间戳值。
tb1
和tb2
具有时间戳字段t1
和t2
。桌子看。case
语句尝试时,它给出了所需的输出。因此,请修改您的SQL查询,如下所示:
The error seems to be because of the usage of the following SQL statement to get the maximum timestamp value.
tb1
andtb2
which have timestamp fieldst1
andt2
.The following is how the tables look.CASE
statement, it gave the desired output.So, modify your SQL query as shown below:
我简单地找到了另一个具有
最大
功能的解决方案。看起来比...然后...子句。
最后,SQL语句是:
它正常工作。
谢谢你!
I found another solution with
GREATEST
function, simply.It looks like it's simply than WHEN ... THEN ... clause.
Finally, the SQL statement is :
It worked correctly.
Thank you!