paginationされているのでちょっとめんどかった。
https://docs.honeybadger.io/api/faults/#get-a-list-of-notices を参考にした。
$user_ids = []
# returns page of next url
def get_user_ids(url)
connection = Faraday.new(url: url)
connection.basic_auth("xxxxxxxxxxxxxxxx", "") # take this from https://app.honeybadger.io/users/edit
res = JSON.parse(connection.get().env[:response_body])
res["results"].each do |r|
$user_ids << r["request"]["params"]["job"]["args"][0]["arguments"][3]["args"][0]
end
return res["links"]["next"]
end
url = "https://app.honeybadger.io/v2/projects/xxxxx/faults/yyyyyy/notices"
while !url.nil? do
url = get_user_ids(url)
end
sql = <<~SQL
INSERT `org.tmp.table_name`
VALUES (#{user_ids.join("), (")})
SQL
BigQuery.client.query(sql)
# もし、user_idsが多すぎたら
# $user_ids.each do |uid|
# sql = <<~SQL
# INSERT `org.tmp.table_name`
# VALUES (#{uid})
# SQL
# BigQuery.client.query(sql)
# end
もし、user_idsが多すぎたら
以下のエラーがおこる。
Google::Cloud::InvalidArgumentError: resourcesExceeded: Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex.
from /app/vendor/bundle/ruby/3.0.0/gems/google-cloud-bigquery-1.34.0/lib/google/cloud/bigquery/service.rb:564:in `rescue in execute'
Caused by Google::Apis::ClientError: resourcesExceeded: Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex.
from /app/vendor/bundle/ruby/3.0.0/gems/google-apis-core-0.4.1/lib/google/apis/core/http_command.rb:228:in `check_status'