3

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

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

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

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

谢谢

4

3 回答 3

1

您可以使用Jobs: list API来收集工作信息并将其上传到 GBQ
因为它在 GBQ 中 - 您可以使用 BigQuery 的强大功能以任何方式分析它
您可以展平结果或使用原始结果 - 我建议使用原始的由于在加载到 GBQ 之前没有任何转换(您只需上传从 API 获得的任何内容),因此不那么令人头疼。当然,所有这些都在您仍然必须编写的简单应用程序/脚本中

注意:确保使用参数fullprojection

于 2016-04-07T15:46:25.017 回答
1

虽然您无法“回溯” BigQuery 过去的日志,但您仍然可以做一些事情,具体取决于您要查找的信息类型。如果您需要有关查询作业的信息(作业统计信息、配置等),您可以调用Jobs: listBigQuery API 的方法来列出项目中的所有作业。数据在那里保留 6 个月,如果您是项目所有者,您可以列出所有用户的工作,而不管实际运行它的人是谁。

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

在此处输入图像描述

使用 BigQuery API 列出作业的示例代码。它需要一些修改,但应该很容易完成。

于 2016-04-06T10:18:37.327 回答
0

当我发现一篇文章描述了如何在INFORMATION_SCHEMA没有任何脚本或Jobs: list其他 OP 提到的情况下检查 Big Query 时,我遇到了同样的问题。我能够运行并使其正常工作。


# 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/

于 2020-09-28T23:26:20.330 回答