Jobs.Insert API DryRun响应

时间:2019-03-16 16:12:47

标签: google-bigquery

在将查询配置设置为DryRun = true时,我在Jobs.Insert API的响应中注意到一个名为totalBytesProcessedAccuracy的字段。


    "query": {
       "totalBytesProcessed": "341880728292",
       "totalBytesBilled": "0",
       "totalBytesProcessedAccuracy": "UPPER_BOUND",
       "cacheHit": false,
       "referencedTables": [
        {
         "projectId": "mydata-1470162410749",
         "datasetId": "EVALUEX_PROD",
         "tableId": "tables"
        }
       ]

从我的实验中,我看到了该字段的2个值:

  1. UPPER_BOUND:我使用查询时,在WHERE
  2. 中包含集群字段
  3. 预想:当我不使用时,在WHERE
  4. 中具有簇字段的查询

我在BigQuery文档中搜索了此字段,以获得对此的更好解释,但找不到任何参考

关于如何找到该字段的更多详细信息及其含义的任何想法?

1 个答案:

答案 0 :(得分:1)

使用传统表,BigQuery确切知道在运行查询(空运行)之前它将查询多少字节:

SELECT SUM(views) views
FROM `fh-bigquery.wikipedia_v2.pageviews_2019` 
WHERE DATE(datehour)='2019-01-05'
AND wiki='en'
AND title='Shakira'

estimated bytes to be processed:  6.36 GB
actual bytes processed:  6.36 GB

但是对于群集表,很难知道将实际处理多少个字节。因此,BigQuery目前能做的最好的就是告诉您可以处理的最大字节数:

SELECT SUM(views) views
FROM `fh-bigquery.wikipedia_v3.pageviews_2019` 
WHERE DATE(datehour)='2019-01-05'
AND wiki='en'
AND title='Shakira'

estimated bytes to be processed:  6.36 GB (upper bound)
actual bytes processed:  148 MB 

通过从我的v2表切换到v3(我已经集群的表),此查询节省了98%的数据处理成本。另一方面,您必须接受试运行只能给您带来成本的“上限”。