编辑:spark 2.4.3不支持间隔。我暂时无法升级到spark 3.0.0(管理策略)。我想知道是否有一个解决办法或交替方法的间歇目前?谢谢
在databricks中运行sparksql查询,查询在间隔行上显示错误。我试图在同一个用户id上左键联接表本身,并且用户数相差一个月。
Error in SQL statement: ParseException:
Literals of type 'INTERVAL' are currently not supported.
spark sql不支持interval函数吗?
以下是我的尝试:
%sql
;WITH act_months AS (
SELECT DISTINCT
DATE_TRUNC('month', data_date) ::DATE AS act_month,
user_id
FROM user_sessions)
SELECT
prev.act_month,
prev.user_id,
curr.user_id IS NULL AS churned_next_month
FROM act_months AS prev
LEFT JOIN act_months AS curr
ON prev.user_id = curr.user_id
AND prev.act_month = (curr.act_month - INTERVAL '1 MONTH')
ORDER BY prev.act_month ASC, prev.user_id ASC;
这是我的数据结构
+----------+----------+
| data_date| user_id|
+----------+----------+
|2020-01-01|22600560aa|
|2020-01-01|17148900ab|
|2020-01-01|21900230aa|
|2020-01-01|35900050ac|
|2020-01-01|22300280ad|
|2020-01-02|19702160ac|
|2020-02-02|17900020aa|
|2020-02-02|16900120aa|
|2020-02-02|11160900aa|
|2020-03-02|16900290aa|
+----------+----------+
1条答案
按热度按时间bkkx9g8r1#
(免责声明:我不是spark用户-这是我重新发布我的评论作为答案):
从我阅读spark的文件来看,
INTERVAL
仅由spark 3.0.0或更高版本支持。你说你在运行spark 2.4.3,所以
INTERVAL
您的系统不支持。但是你可以使用
ADD_MONTHS
(和DATE_ADD
)由(至少)spark 2.3.0支持。试试这个: