Ver auditorías del historial de consultas

Las auditorías del historial de consultas te permiten generar un informe de todas las tareas ejecutadas con tu cuenta del Centro de Datos de Anuncios. Así, puedes saber quién ha accedido a tus datos y cuándo.

Las auditorías del historial de consultas se escriben en formato de tabla de BigQuery, con entradas de registro de todas las consultas ejecutadas mediante tu cuenta del Centro de Datos de Anuncios. Para ver las auditorías del historial de consultas de tu cuenta, primero debes generar el informe a través de una API. Cada registro de auditoría contiene los datos de un día. Puedes generar un registro de auditoría de cualquier día de los últimos 30 días.

Las auditorías del historial de consultas solo están disponibles para los superusuarios. Más información sobre el acceso basado en roles

Formato de la auditoría del historial de consultas

En todas las auditorías del historial de consultas se utiliza el siguiente esquema:

Nombre del campo Descripción
customer_id ID de cliente del Centro de Datos de Anuncios
ads_customer_id ID de subcuenta, si se utiliza (de lo contrario, coincide con user_id)
match_table_customer_id ID de la cuenta que contiene la tabla de coincidencias, si se utiliza (de lo contrario, coincide con customer_id)
user_email Dirección de correo electrónico del usuario que ha hecho la consulta
query_start_time Hora a la que ha empezado a ejecutarse la consulta
query_end_time Hora a la que ha terminado de ejecutarse la consulta
query_type Distinción entre las consultas de análisis y las consultas de audiencia
query_resource_id ID asociado a la consulta
query_text Código SQL de la consulta
query_parameters
query_parameters.name Nombre del parámetro de la consulta
query_parameters.value Valor enviado a través del parámetro row_merge_summary de la consulta
row_merge_summary.column_name Nombre de la columna
row_merge_summary.merge_type Tipo de resumen de combinación de filas
row_merge_summary.constant_value Valor del conjunto de constantes (es nulo si no se utiliza ninguna constante)
destination_table Ubicación (en BigQuery) en la que se ha escrito la consulta

Acceder a las auditorías del historial de consultas

Para acceder a las auditorías del historial de consultas, debes llamar a la API. Busca un código de muestra para llamar a la API a continuación o consulta la documentación de referencia y escribe tu propia consulta.

Los resultados de la solicitud a la API se escribirán en el conjunto de datos de BigQuery que especifiques en el cuerpo de dicha solicitud.

.

"""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())