我想從日期分區BigQuery表中的最新分區中選擇數據,但查詢仍然從整個表讀取數據。如何選擇BigQuery表中的最新分區?
我試過(據我所知,BigQuery的不支持QUALIFY
):
SELECT col FROM table WHERE _PARTITIONTIME = (
SELECT pt FROM (
SELECT pt, RANK() OVER(ORDER by pt DESC) as rnk FROM (
SELECT _PARTITIONTIME AS pt FROM table GROUP BY 1)
)
)
WHERE rnk = 1
);
但是,這並不工作,讀取所有行。
SELECT col from table WHERE _PARTITIONTIME = TIMESTAMP('YYYY-MM-DD')
其中'YYYY-MM-DD'
是一個具體的日期做的工作。
但是,我需要將來運行此腳本,但表更新(和_PARTITIONTIME
)是不規則的。有沒有一種方法可以從BigQuery中的最新分區獲取數據?
你能澄清 - 怎麼不起作用?它有什麼問題? –
我在下面評論過,但這兩個查詢都不從最新的分區中讀取。當我明確鍵入最後一個_partitiontime時,查詢讀取18 MB。但是當我嘗試下面兩個查詢中的任何一個時,他們讀取的是15.4 GB。 – cshin9
我現在明白了。感謝您的更新!有趣的理解爲什麼。 @ felipe-hoffa提到了一些有關緩存的內容 - 但這並不明確 –