在BigQuery中,有没有办法查看所有用户的所有查询?

时间:2015-06-23 00:08:20

标签: google-bigquery

目前我的角色是所有者,但我没有办法查看所有用户的所有查询。我主要感兴趣的是看到每个成功查询处理的字节数。如果没有这种能力,就很难确定成本的来源,而无需单独询问每个用户。有没有办法通过UI或CLI命令执行此操作?

3 个答案:

答案 0 :(得分:3)

在CLI中,您可以运行bq ls -j -a来检索项目中所有用户的作业。我不认为此命令会返回为成功查询而处理的字节数,但成功查询时会bq show。工作ID将检索相关信息。

直接使用API​​,您可以为jobs.list请求指定allUsers参数。

目前无法在网络用户界面中查看此信息。

答案 1 :(得分:2)

Danny Kitt的回答让我成为了那里的一部分。这是我写的Ruby脚本之一,最终给了我想要的东西。应该很容易移植到您选择的语言。

#!/usr/bin/ruby

require "json"
require "time"

MAX_RESULTS = 1000

jobs_json = `bq ls --format json --jobs --all --max_results #{MAX_RESULTS}`
jobs = JSON.parse(jobs_json)

users = {}
jobs.each do |job|
    if job["Job Type"] == "query" and job["State"] == "SUCCESS"
        job_data_json = `bq show --format=json --job #{job["jobId"]}`
    job_data = JSON.parse(job_data_json)
    creation_time = Time.at(job_data["statistics"]["creationTime"][0..-4].to_i)
    user = job_data["user_email"]
    bytes_processed = job_data["statistics"]["totalBytesProcessed"].to_i
    if bytes_processed > 0
      users[user] = 0 unless users.key?(user)
      users[user] += bytes_processed
      puts "[#{creation_time}] #{user}: #{bytes_processed} (running total: #{users[user]})"
      # puts job_data["configuration"]["query"]["query"]
    end
    end
end

puts "\nFINAL:\n"

users.each do |user, bytes_processed|
  puts "#{user}: #{bytes_processed}"
end

答案 2 :(得分:0)

BigQuery UI

BigQuery UI的右上角,您可以看到一个Show queries for all users的复选框。