Consulter les audits de l'historique des requêtes

Les audits de l'historique des requêtes vous permettent de générer un rapport concernant toutes les tâches exécutées à l'aide de votre compte Ads Data Hub. Cela vous permet de savoir qui a accédé à vos données et quand.

Les audits de l'historique des requêtes sont écrits sous forme de tables BigQuery contenant les entrées de journal de toutes les requêtes exécutées via votre compte Ads Data Hub. Pour afficher les audits de l'historique des requêtes dans votre compte, vous devez d'abord générer le rapport via une API. Chaque journal d'audit contient les données d'une journée. Vous pouvez générer un journal d'audit pour n'importe lequel des 30 derniers jours.

Les audits de l'historique des requêtes ne sont disponibles que pour les super-utilisateurs. En savoir plus sur l'accès basé sur les rôles

Format d'audit de l'historique des requêtes

Chaque audit de l'historique des requêtes contient les éléments suivants :

Nom du champ Description
customer_id Numéro client Ads Data Hub
ads_customer_id ID du sous-compte, s'il est utilisé (sinon, il sera identique à customer_id)
match_table_customer_id ID du compte contenant le tableau de correspondance, s'il est utilisé (sinon, il sera identique à customer_id)
user_email Adresse e-mail de l'utilisateur ayant exécuté la requête
query_start_time Heure de début de l'exécution de la requête
query_end_time Heure de fin de l'exécution de la requête
query_type Distingue les requêtes d'analyse des requêtes d'audience
query_resource_id ID associé à la requête
query_text Code SQL de la requête
query_parameters
query_parameters.name Nom du paramètre de la requête
query_parameters.value Valeur transmise via le paramètre "row_merge_summary" de la requête
row_merge_summary.column_name Nom de la colonne
row_merge_summary.merge_type Type de résumé de la fusion des lignes
row_merge_summary.constant_value Valeur de l'ensemble de constantes (nulle si aucune constante n'est utilisée)
destination_table Emplacement (dans BigQuery) dans lequel la requête a été écrite

Accéder aux audits de l'historique des requêtes

Pour accéder aux audits de l'historique des requêtes, vous devez appeler l'API. Pour ce faire, un exemple de code est disponible ci-dessous. Vous pouvez également consulter la documentation de référence et rédiger votre propre requête.

Les résultats de la requête API seront écrits dans l'ensemble de données BigQuery que vous spécifiez dans le corps de la requête 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())