我目前正試圖計算谷歌大查詢中的行之間的差異。我實際上有一個工作查詢。谷歌大查詢中的行之間的差異
SELECT
id, record_time, level, lag,
(level - lag) as diff
FROM (
SELECT
id, record_time, level,
LAG(level) OVER (ORDER BY id, record_time) as lag
FROM (
SELECT
*
FROM
TABLE_QUERY(MY_TABLES))
ORDER BY
1, 2 ASC
)
GROUP BY 1, 2, 3, 4
ORDER BY 1, 2 ASC
但我使用大數據,有時我有內存限制警告,不讓我執行查詢。所以,我想了解爲什麼我不能做像波紋管這樣的優化查詢。我認爲這將允許在沒有內存限制警告的情況下處理更多記錄。
SELECT
id, record_time, level,
level - LAG(level, 1) OVER (ORDER BY id, record_time) as diff
FROM (
SELECT
*
FROM
TABLE_QUERY(MY_TABLES))
ORDER BY
1, 2 ASC
這種功能level - LAG(level, 1) OVER (ORDER BY id, record_time) as diff,
當執行查詢返回的錯誤
在解析表達式
大上查詢中缺少的功能。
我也試着把()
放到這個函數中,但是它不起作用。
感謝您的幫助!
另外我覺得你有一個尾部逗號在'末尾('和'失蹤')'末尾。 –
你的問題中的第一個查詢根本沒有意義。通常無意義的東西失敗!所以試圖改進它也沒有多大意義。我建議你寧願解釋你的第一個查詢所要達到的目標,所以我們將幫助你解決這個問題 –
從'我有內存限制警告,不讓我執行查詢' - 只刪除ORDER BY語句! –