导出Bigquery日志

时间:2016-04-06 09:15:28

标签: google-bigquery stackdriver

我想在过去一个月内分析BigQuery上的活动。

我去了云控制台和(非常不方便)日志查看器。我将导出设置为Big-query,现在我可以对日志运行查询并分析活动。这里有非常方便的指南:https://cloud.google.com/bigquery/audit-logs

然而,所有这些都有助于查看从现在开始收集的数据。我需要分析过去一个月。

有没有办法将现有的日志(而不是新的)导出到Bigquery(或平面文件,然后将它们加载到BQ)?

由于

3 个答案:

答案 0 :(得分:1)

虽然你不能"回流"过去BigQuery的日志,根据您正在寻找的信息类型,您仍可以执行某些操作。如果您需要有关查询作业(作业统计信息,配置等)的信息,可以调用BigQuery API的Jobs: list方法列出项目中的所有作业。数据在那里保留了6个月,如果您是项目所有者,则可以列出所有用户的作业,无论是谁实际运行它。

如果您不想编写任何代码,您甚至可以使用API Explorer调用该方法并将输出保存为json文件,然后将其加载回BigQuery' s表

enter image description here

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/