簡體   English   中英

跨多個相隔很遠的 _PARTITIONDATE 天查詢分區的 BigQuery 表?

[英]Querying a partitioned BigQuery table across multiple far-apart _PARTITIONDATE days?

我有許多按 _PARTITIONDATE 分區的非常大的表,我想以一種有效的方式定期查詢它們。 每次運行查詢時,我只需要搜索少量日期,但這些日期每次運行都會發生變化,並且彼此之間可能相隔數月/數年。

要捕獲這些日期,我可以執行_PARTITIONDATE >= '2015-01-01'但這會使查詢運行非常慢,因為每個分區上有數百萬行。 我也可以執行_PARTITIONDATE BETWEEN '2015-01-01' AND '2017-01-01' ,但確切的日期范圍會在每次運行時發生變化。 我想做的是像_PARTITIONDATE IN ("2015-03-10", "2016-01-24", "2016-22-03", "2017-06-14")這樣的查詢需要在提供的日期運行,從我的測試來看似乎有效。

我遇到的問題是日期列表每次都會更改,需要我先加入臨時表中的日期列表。 當像這樣source._PARTITIONDATE IN (datelist.date)那樣做時,如果這是查詢需要分區的表時唯一的 WHERE 條件,它就不起作用並且會出錯。

關於我可能使它工作的方式或其他查詢非背靠背特定分區而不必處理查詢整個事情的方法的任何建議?

我一直在閱讀BigQuery 文檔,但沒有看到這個問題的答案。 我確實看到它說以下內容“不限制掃描的分區,因為它使用動態的表值。” 因此,在當前的 BQ 限制下,我嘗試做的事情可能是不可能的?

_PARTITIONTIME = (SELECT MAX(timestamp) from dataset.table1)

腳本是一種可能的解決方案。

DECLARE max_date DEFAULT (SELECT MAX(...) FROM ...);
SELECT .... FROM ... WHERE _PARTITIONDATE = max_date;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM