我如何知道 Bigquery 查询使用的槽数?

pas*_*ate 7 google-bigquery

我试图找出每个大​​查询查询使用的插槽数。有没有办法找出来?

nar*_*nki 8

根据谷歌文档,这样我们就可以计算使用的槽数(平均)。

时隙数=total_slot_ms / TIMESTAMP_DIFF(end_time,start_time, MILLISECOND)

select job_id
       ,total_slot_ms / TIMESTAMP_DIFF(end_time,start_time,MILLISECOND) as num_slot
from `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
Run Code Online (Sandbox Code Playgroud)

或者如果您无权访问上表,则手动使用 BQ UI 执行详细信息。

Number of slot = Slot time consumed (convert in MILLISECOND)/Elapses time (convert in MILLISECOND) 
Run Code Online (Sandbox Code Playgroud)


Ebe*_*oit 5

此信息确实在job.statistics.query.timeline中提供,该时间线构成 BigQuery 的 Jobs API 的一部分 ( https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#resource )。当您获得此信息时,它会出现在如下数组中:

timeline: 
    [ '{"elapsedMs":"750","totalSlotMs":"2795","pendingUnits":"8","completedUnits":"66","activeUnits":"9"}',
      '{"elapsedMs":"1252","totalSlotMs":"3617","pendingUnits":"1","completedUnits":"73","activeUnits":"1"}',
      '{"elapsedMs":"2944","totalSlotMs":"5643","pendingUnits":"0","completedUnits":"78","activeUnits":"0"}' ],
Run Code Online (Sandbox Code Playgroud)

所以你能做什么取决于你的实际问题:

1)如果您的问题是“查询在其运行时间内使用的总槽数是多少?”,那么查看completedUnits的最终值

2)如果你的问题是“如何在查询过程中使用的插槽的运行时间?”,然后就可以平均建completedUnitselapsedMs每个时间片。


Mik*_*ant 3

Stackdriver Monitoring For BigQuery中有一个插槽利用率图表,
它显示了所选项目的已分配和可用插槽

不幸的是,我认为每个查询都无法获得此类统计信息