Visualizzare i controlli della cronologia delle query

I controlli della cronologia delle query ti consentono di generare un report di tutti i job eseguiti utilizzando il tuo account Ads Data Hub. Questo consente di rispondere a domande relative a chi ha eseguito l'accesso ai tuoi dati e quando.

I controlli della cronologia delle query sono scritti come tabelle BigQuery contenenti le voci di log per tutte le query eseguite utilizzando l'account Ads Data Hub. Per visualizzare i controlli della cronologia delle query per il tuo account, devi prima generare il report tramite un'API. Ogni log di controllo contiene dati relativi a un giorno. Puoi generare un log di controllo per qualsiasi giorno incluso negli ultimi 30 giorni.

I controlli della cronologia delle query sono disponibili solo per i super user. Scopri di più sull'accesso basato sui ruoli

Formato dei controlli della cronologia delle query

Ogni controllo della cronologia delle query utilizza il seguente schema:

Nome campo Descrizione
customer_id ID cliente Ads Data Hub
ads_customer_id L'ID del subaccount, se utilizzato (in caso contrario sarà identico a customer_id)
match_table_customer_id L'ID dell'account contenente la tabella delle corrispondenze, se utilizzato (in caso contrario sarà identico a customer_id)
user_email Indirizzo email dell'utente che ha eseguito la query
query_start_time L'ora in cui è stata avviata la query
query_end_time L'ora in cui è terminata l'esecuzione della query
query_type Distinzione tra query di analisi e query relative al pubblico
query_resource_id L'ID associato alla query
query_text SQL della query
query_parameters
query_parameters.name Il nome del parametro della query
query_parameters.value Il valore trasmesso tramite il parametro della query row_merge_summary
row_merge_summary.column_name Il nome della colonna
row_merge_summary.merge_type Il tipo di riepilogo dell'unione di righe
row_merge_summary.constant_value Il valore della costante impostata (sarà null se non viene utilizzata alcuna costante).
destination_table La posizione (in BigQuery) in cui è stata scritta la query

Accesso ai controlli della cronologia delle query

Per accedere ai controlli della cronologia delle query, devi chiamare l'API. Individua il codice campione per chiamare l'API qui sotto oppure visualizza la documentazione di riferimento e scrivi la tua query.

I risultati della richiesta API verranno scritti nel set di dati BigQuery specificato nel corpo della richiesta 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())