目前我的角色是所有者,但我没有看到查看所有用户的所有查询的方法。我主要对查看为每个成功查询处理的字节感兴趣。如果没有这种能力,就很难在不单独询问每个用户的情况下确定成本的来源。有没有办法通过 UI 或 CLI 命令来做到这一点?
丹尼·基特的回答让我明白了这一点。这是我编写的 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |