我正在使用 Spark SQL 3.2.0
有關我的資料集和所需結果的簡化示例,請參閱
抽象地說,我有一個包含一系列相關事件的資料集,這些事件可以按時間順序和事件編號進行分組。當按時間和事件編號排序時,每次事件編號重置為 1 時,您都會看到一組新的事件。
我知道如何使用row_number()或dense_rank()增加event_group_numberwhere sub_event_number = 1,但我不確定如何使行 wheresub_event_number > 1呈現正確的event_group_number.
我目前正在做以下事情:
case
when sub_event_number = 1 and is_event_type
then row_number() over (partition by context_id, event_id, sub_event_number order by is_event_type asc, start_time asc) - 1
else null
end as event_group_number
如有任何幫助,我將不勝感激,我很樂意回答任何問題。
uj5u.com熱心網友回復:
您似乎正在尋找累積條件總和:
SELECT context_id,
event_id,
start_time,
NULLIF(
SUM(CASE WHEN sub_event_number = 1 THEN 1 ELSE 0 END) OVER(
PARTITION BY context_id, event_id
ORDER BY is_event_type, start_time) - 1,
0
) AS event_group_number
FROM foobar
ORDER BY context_id, event_id, is_event_type, start_time
資料庫小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394031.html
標籤:sql 阿帕奇火花 apache-spark-sql 数据块
上一篇:PySpark-使用TimeStamp資料型別解決isnan錯誤
下一篇:在哪里可以找到JavaMapWithStateSuite.java中參考的JavaTestUtils和BatchCounter依賴項?
