BigQuery查询执行成本



我知道有关于BigQuery定价的文档,但我不知道他们向您收取的是哪个值。当您编写查询时,编辑器会显示This query will process 69.3 GB when run.,但当您执行查询时,Results选项卡旁边会有一个Job Information选项卡。在该Job Information中,有两个值:"字节处理";以及";计费字节数";

我被告知你因";计费字节数";值(根据名称似乎合乎逻辑!(。

引起我困惑的是,上面69.3GB查询的计费字节数是472MB。我相信WHERE条款不会影响的定价

为什么要少得多?如果我事先看不到计费的字节数,我如何准确估计查询成本?

提前感谢

编辑1这是我的查询:

SELECT 
timestamp_trunc(DateTimeUTC, SECOND) as DateTimeUTC,
ANY_VALUE(if(Code = 'Aftrtmnt_1_Scr_Cat_Tank_Level', value, null)) as Aftrtmnt_1_Scr_Cat_Tank_Level,
ANY_VALUE(if(Code = 'ctv_ds_ect', value, null)) as ctv_ds_ect,
ANY_VALUE(if(Code = 'Engine_Coolant_Level', value, null)) as Engine_Coolant_Level,
ANY_VALUE(if(Code = 'ctv_batt_volt_min', value, null)) as ctv_batt_volt_min,
ANY_VALUE(if(Code = 'ctv_moderate_brake_count', value, null)) as ctv_moderate_brake_count,
ANY_VALUE(if(Code = 'ctv_amber_lamp_count', value, null)) as ctv_amber_lamp_count,
VIN,
ANY_VALUE(if(Code = 'ctv_trip_distance_miles', value, null)) as ctv_trip_distance_miles,

FROM `xxxx.yyyy.zzzz` 
WHERE
DATE(DateTimeUTC) > '2021-03-01') and  DATE(DateTimeUTC) < '2021-06-01' and 
Code in ('Aftrtmnt_1_Scr_Cat_Tank_Level', 'ctv_ds_ect', 'Engine_Coolant_Level', 'ctv_trip_distance_miles',  'ctv_batt_volt_min',  'ctv_moderate_brake_count', 'ctv_amber_lamp_count')
and event_name = 'Trip Detail'
group by timestamp_trunc(DateTimeUTC, SECOND), VIN

本质上,它只是以主表为中心,目的是将结果插入另一个表

这篇文章指出WHERE子句不影响成本,这与我之前认为的不同

I相信您的实际成本永远不应该超过估计值,但可能会更低。

考虑一个既分区又集群的表。假设分区位于日期字段my_date上,并聚集在字符串字段my_type上。

然后,考虑以下查询。。。

select my_date, my_type from <table>

估价认为你正在扫描这两列的全部内容,因此你的账单应该与估价相匹配

然而,如果您根据分区进行筛选,您应该会看到估计和计费金额都有所减少。

select my_date, my_type from <table> where my_date = '2021-06-17'

但是,如果您针对聚集列进行筛选,我不相信估计值会评估该筛选,因为它不知道您正在筛选什么,只知道筛选哪些列。然而,当您执行查询时,您确实可以获得集群的好处,因为它实际上不会扫描整个列,只扫描相关的集群。

select my_date, my_type from <table> where my_type = 'A'

它不是针对估计中的聚类来检查'A'。考虑一个'A'不存在于集群列中的情况,估计器会显示一个估计值,但在执行时实际上会扫描0字节。

最新更新