您將如何克服上述限制?JOIN EACH和GROUP EACH BY子句不能用於窗口函數的輸出
我想使用LEAD和LAG窗口函數根據3條記錄的序列找到流,然後計算它們屬性的某些聚合(計數,總和等)。
當我在少量的數據樣本上運行我的查詢時,一切都很好,並通過運行組確定。但是當運行在更大的數據集上時,我得到:「在查詢執行過程中超出資源。查詢包含GROUP BY運算符,請考慮使用GROUP EACH BY。」
在其他許多情況下切換到GROUP分別由做的工作...... 然而,當我使用的窗口功能,我不能使用的每個...
有什麼建議?最佳實踐?
這裏是一個基於維基百科樣本數據的示例查詢。它顯示了不同貢獻者編輯標題的頻率。 where條件只是爲了限制響應大小,如果你刪除了「B」,我們得到的結果,如果我們添加它,我們得到了「使用EACH」推薦。
select title,count (case when contributor_id<>LeadContributor then 1 else null end) as different,
count (case when contributor_id=LeadContributor then 1 else null end) as same,
count(*) as total
from
(
SELECT title,contributor_id,lead(contributor_id)over(partition by title order by timestamp) as LeadContributor
FROM [publicdata:samples.wikipedia]
where regexp_match(title,r'^[A,B]')=true)
group by title
感謝
你能提供一個樣本數據集?示例查詢? –
你能提供你的用戶嗎?我會授予您讀取我的生產環境的權限並共享我有問題的查詢。 –
嗨user2881671;我更願意先公開討論查詢和/或數據。對於24x7一對一支持,Google提供高級支持套餐,而StackOverflow則致力於成爲一個基於社區的頻道。如果你願意分享更多,有很多人可以從這個問題中得到幫助和學習。 –