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