簡體   English   中英

我想在執行刪除操作時降低 bigquery 中的查詢成本

[英]I want to reduce the query cost in bigquery while performing the delete operation

詳細地,

我在 bigquery 中有一個名為 tableA 的表,它具有名為 date_key(類型整數)(大小為 500 GB)的分區列我想每天刪除基於 date_key 列的數據以保持數據質量。

這是我嘗試執行以下操作時的關鍵點:

delete from tableA where date_key in (20200729);

查詢成本是 2.5 gb,因此我在分區列上執行刪除操作,我對此很滿意

所以這里出現了問題 date key should be dynamically pass 所以我寫了一個子查詢來傳遞 date_key 如下所示

delete from tableA where date_key in (select distinct date_key in stg_tableA)--which will give you 2020029 as output from the subquery

在這種情況下查詢成本是500 GB 奇怪不知道為什么?

我嘗試設置變量,然后設置它的無效代碼:

--declare a,b int64;

DECLARE a DEFAULT (select distinct date_key from stg_tableA);

delete from TableA where date_key in(a)

在此處輸入圖像描述

我已經嘗試過這種方式,因為當我硬編碼 date_key 值時它正在工作 --declare a,b int64;

DECLARE a DEFAULT 20200727;

delete from tableA where date_key in(a)

在此處輸入圖像描述

聲明一個變量應該起作用。 您看到的估計成本來自空運行腳本。 在空運行中,所有腳本變量都不會被設置,因此分區修剪不會發生。 這是設計使然。 當您實際運行腳本時,變量將設置為第一個查詢的值,並且分區修剪應該發生在第二個查詢中。

暫無
暫無

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

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