As auditorias do histórico de consultas permitem gerar um relatório de todas as tarefas executadas com a conta do Ads Data Hub. Isto permite determinar, por exemplo, quem acedeu aos seus dados e quando o fizeram.
As auditorias do histórico de consultas são escritas como tabelas do BigQuery que contêm entradas do registo para todas as consultas executadas com a conta do Ads Data Hub. Para ver as auditorias do histórico de consultas da conta, primeiro precisa de gerar o relatório através de uma API. Cada registo de auditoria contém dados relativos a 1 dia. Pode gerar um registo de auditoria para qualquer dia nos últimos 30 dias.
As auditorias do histórico de consultas só estão disponíveis para superutilizadores. Saiba mais acerca do acesso com base em funções
Formato das auditorias do histórico de consultas
As auditorias do histórico de consultas usam o seguinte esquema:
Nome do campo | Descrição |
---|---|
customer_id | O ID de cliente do Ads Data Hub |
ads_customer_id | O ID da subconta, se usada (caso contrário, será igual a customer_id) |
match_table_customer_id | O ID da conta que contém a tabela de correspondência, se usada (caso contrário, será igual a customer_id) |
user_email | O endereço de email do utilizador que executou a consulta |
query_start_time | A hora em que a consulta começou a ser executada |
query_end_time | A hora em que a consulta terminou |
query_type | Distingue entre consultas de análise e consultas de públicos-alvo |
query_resource_id | O ID associado à consulta |
query_text | O SQL da consulta |
query_parameters | |
query_parameters.name | O nome do parâmetro da consulta |
query_parameters.value | O valor transmitido através do parâmetro da consulta line_merge_summary |
row_merge_summary.column_name | O nome da coluna |
row_merge_summary.merge_type | O tipo de resumo da união de linhas |
row_merge_summary.constant_value | O valor do conjunto de constantes (será nulo se não for usada uma constante) |
destination_table | A localização (no BigQuery) na qual a consulta foi escrita |
Aceder às auditorias do histórico de consultas
Para aceder às auditorias do histórico de consultas, precisa de chamar a API. Consulte o exemplo de código para chamar a API abaixo ou veja a documentação de referência e escreva a sua própria consulta.
Os resultados do pedido API serão escritos no conjunto de dados do BigQuery especificado no corpo do pedido API.
"""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())