通过查询历史记录审核日志,您可以针对使用您的广告数据中心账号运行的所有作业生成报告。这样,您就可以弄清楚谁访问了您的数据,以及具体的访问时间。
系统将查询历史记录审核日志编写成 BigQuery 表的形式,使用您的广告数据中心账号运行的所有查询在表中都有对应的日志条目。如需查看您账号的查询历史记录审核日志,需要先通过 API 生成报告。每个审核日志都包含一天的数据。您可以针对过去 30 天内的任何一天生成审核日志。
查询历史记录审核日志仅向超级用户提供。详细了解基于角色的访问权限
查询历史记录审核日志的格式
每个查询历史记录审核日志都使用以下架构:
字段名称 | 说明 |
---|---|
customer_id | 广告数据中心客户 ID |
ads_customer_id | 若使用了子账号,即为子账号的 ID(若未使用,则与 customer_id 相同) |
match_table_customer_id | 若使用了匹配表,即为包含匹配表的账号的 ID(若未使用,则与 customer_id 相同) |
user_email | 运行查询的用户的电子邮件地址 |
query_start_time | 查询开始运行的时间 |
query_end_time | 查询完成运行的时间 |
query_type | 用于区分分析查询和受众群体查询 |
query_resource_id | 与查询相关联的 ID |
query_text | 查询的 SQL |
query_parameters | |
query_parameters.name | 查询的参数名称 |
query_parameters.value | 通过查询的参数 row_merge_summary 传递的值 |
row_merge_summary.column_name | 列名称 |
row_merge_summary.merge_type | 行合并摘要的类型 |
row_merge_summary.constant_value | 所设置的常量的值(如果未使用常量,则为 null) |
destination_table | 将查询写入到的位置(在 BigQuery 中) |
访问查询历史记录审核日志
若要访问查询历史记录审核日志,您需要调用 API。您可以在下面找到调用 API 的示例代码,也可以查看参考文档,编写自己的查询。
API 请求的结果将写入您在 API 请求正文中指定的 BigQuery 数据集。
"""This sample shows how to create a query history audit.
For the program to execute successfully, ensure that you run it using Python 3.
"""
from __future__ import print_function
from json import dumps
from google_auth_oauthlib import flow
from googleapiclient.discovery import build
appflow = flow.InstalledAppFlow.from_client_secrets_file(
# Replace client_secrets.json with your own client secret file.
'client_secrets.json',
scopes=['https://www.googleapis.com/auth/adsdatahub'])
appflow.run_local_server()
credentials = appflow.credentials
developer_key = input('Developer key: ').strip()
service = build('adsdatahub', 'v1', credentials=credentials,
developerKey=developer_key)
def pprint(x):
print(dumps(x, sort_keys=True, indent=4))
customer_id = input('Customer ID (e.g. "customers/123"): ').strip()
bq_project = input('Destination BigQuery project ID (e.g. "your-project"): ').strip()
dataset_id = input('Destination BigQuery dataset (e.g. "your-dataset"): ').strip()
start = input('The start date for your query history audit. Formatted as "mm/dd/yyyy": ').strip().split('/')
end = input('The end date for your query history audit. Should be 1 day later than start_date. Formatted as "mm/dd/yyyy": ').strip().split('/')
choice = input("Do you want to enter a timezone? Defaults to UTC otherwise. (y/n) ")
if choice.lower() == 'y':
timezone = input("Timezone (e.g. 'UTC'): ")
else:
timezone = 'UTC'
body = {
'project_id': bq_project,
'dataset': dataset_id,
'start_date': {
'year': start[2],
'day': start[1],
'month': start[0]
},
'end_date': {
'year': end[2],
'day': end[1],
'month': end[0]
},
'time_zone': timezone
}
pprint(service.customers().exportJobHistory(customer=customer_id, body=body).execute())