我想分析过去一个月在 BigQuery 上的活动。
我去了云控制台和(非常不方便的)日志查看器。我将导出设置为 Big-query,现在我可以对日志运行查询并分析活动。这里甚至还有非常方便的指南:https ://cloud.google.com/bigquery/audit-logs 。
但是,所有这些都有助于查看从现在开始收集的数据。我需要分析过去一个月。
有没有办法将现有日志(而不是新日志)导出到 Bigquery(或导出到平面文件,然后将它们加载到 BQ)?
谢谢
我想分析过去一个月在 BigQuery 上的活动。
我去了云控制台和(非常不方便的)日志查看器。我将导出设置为 Big-query,现在我可以对日志运行查询并分析活动。这里甚至还有非常方便的指南:https ://cloud.google.com/bigquery/audit-logs 。
但是,所有这些都有助于查看从现在开始收集的数据。我需要分析过去一个月。
有没有办法将现有日志(而不是新日志)导出到 Bigquery(或导出到平面文件,然后将它们加载到 BQ)?
谢谢
您可以使用Jobs: list API来收集工作信息并将其上传到 GBQ
因为它在 GBQ 中 - 您可以使用 BigQuery 的强大功能以任何方式分析它
您可以展平结果或使用原始结果 - 我建议使用原始的由于在加载到 GBQ 之前没有任何转换(您只需上传从 API 获得的任何内容),因此不那么令人头疼。当然,所有这些都在您仍然必须编写的简单应用程序/脚本中
注意:确保使用参数full
值projection
虽然您无法“回溯” BigQuery 过去的日志,但您仍然可以做一些事情,具体取决于您要查找的信息类型。如果您需要有关查询作业的信息(作业统计信息、配置等),您可以调用Jobs: list
BigQuery API 的方法来列出项目中的所有作业。数据在那里保留 6 个月,如果您是项目所有者,您可以列出所有用户的工作,而不管实际运行它的人是谁。
如果您不想编写任何代码,甚至可以使用API Explorer调用该方法并将输出保存为json
文件,然后将其加载回 BigQuery 的表中。
使用 BigQuery API 列出作业的示例代码。它需要一些修改,但应该很容易完成。
当我发现一篇文章描述了如何在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/