我想在过去一个月内分析BigQuery上的活动。
我去了云控制台和(非常不方便)日志查看器。我将导出设置为Big-query,现在我可以对日志运行查询并分析活动。这里有非常方便的指南:https://cloud.google.com/bigquery/audit-logs。
然而,所有这些都有助于查看从现在开始收集的数据。我需要分析过去一个月。
有没有办法将现有的日志(而不是新的)导出到Bigquery(或平面文件,然后将它们加载到BQ)?
由于
答案 0 :(得分:1)
虽然你不能"回流"过去BigQuery的日志,根据您正在寻找的信息类型,您仍可以执行某些操作。如果您需要有关查询作业(作业统计信息,配置等)的信息,可以调用BigQuery API的Jobs: list
方法列出项目中的所有作业。数据在那里保留了6个月,如果您是项目所有者,则可以列出所有用户的作业,无论是谁实际运行它。
如果您不想编写任何代码,您甚至可以使用API Explorer调用该方法并将输出保存为json
文件,然后将其加载回BigQuery' s表
Sample code使用BigQuery API列出作业。它需要一些修改,但它应该很容易完成。
答案 1 :(得分:1)
您可以使用Jobs: list API收集工作信息并将其上传至GBQ
由于它在GBQ中 - 您可以使用BigQuery的强大功能以任何方式分析它
您可以扁平化结果或使用原始 - 我建议使用原始,因为它不那么令人头疼,因为在加载到GBQ之前没有任何转换(您只需逐字上传从API获得的任何内容)。当然所有这些都在简单的应用程序/脚本中,你仍然需要写
注意:请确保对full
参数
projection
值
答案 2 :(得分:0)
当我发现一篇文章描述了如何使用INFORMATION_SCHEMA
而不使用任何脚本或Jobs: list
来检查Big Query时遇到了同样的问题,正如其他OP所提到的。
我能够跑步并开始工作。
# Monitor Query costs in BigQuery; standard-sql; 2020-06-21
# @see http://www.pascallandau.com/bigquery-snippets/monitor-query-costs/
DECLARE timezone STRING DEFAULT "Europe/Berlin";
DECLARE gb_divisor INT64 DEFAULT 1024*1024*1024;
DECLARE tb_divisor INT64 DEFAULT gb_divisor*1024;
DECLARE cost_per_tb_in_dollar INT64 DEFAULT 5;
DECLARE cost_factor FLOAT64 DEFAULT cost_per_tb_in_dollar / tb_divisor;
SELECT
DATE(creation_time, timezone) creation_date,
FORMAT_TIMESTAMP("%F %H:%I:%S", creation_time, timezone) as query_time,
job_id,
ROUND(total_bytes_processed / gb_divisor,2) as bytes_processed_in_gb,
IF(cache_hit != true, ROUND(total_bytes_processed * cost_factor,4), 0) as cost_in_dollar,
project_id,
user_email,
FROM
`region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
DATE(creation_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) and CURRENT_DATE()
ORDER BY
bytes_processed_in_gb DESC
积分:https://www.pascallandau.com/bigquery-snippets/monitor-query-costs/