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