Berichte in BigQuery planen
Ein häufiger Anwendungsfall für den GA360-BigQuery-Export ist das Planen eines Jobs zum Erstellen einer Reihe von (flachen) aggregierten Tabellen. Diese Tabellen sind für Benutzer aufgrund ihrer geringeren Größe und Komplexität im Vergleich zur Haupttabelle oft einfacher zu verwenden.
Dieser Leitfaden bietet eine Beispielmethode zum regelmäßigen Planen einer Abfrage und zum Erstellen einer Tabelle mit der Ausgabe in Google BigQuery . In diesem Dokument wird der Prozess zum Einrichten einer Lösung mit einer virtuellen GCP-Maschine beschrieben. In der Praxis wäre es auf Wunsch auch möglich, eine Lösung auf einer lokalen Maschine zu implementieren.
Richten Sie die virtuelle Maschine ein
Stellen Sie beim Erstellen einer virtuellen Maschine sicher, dass Sie das Kontrollkästchen Vollständigen Zugriff auf alle Cloud-APIs zulassen aktiviert haben.
Richten Sie grundlegende Bibliotheken ein
Holen Sie sich Pip und installieren Sie einige grundlegende Bibliotheken
username@project-vm-us:~$ sudo pip install --upgrade-Anforderungen
username@project-vm-us:~$ sudo pip install --upgrade httplib2
username@project-vm-us:~$ sudo pip install --upgrade google-cloud-bigquery
Ordner erstellen
Autorisieren
- Erstellen Sie eine Authentifizierungsdatei für die APIsusername@project-vm-us:~$ nano auth.py
Der Inhalt der Datei sollte wie folgt sein:
auth.py
#!/usr/bin/python2.7
'''Handhabt Anmeldeinformationen und Autorisierung.
Dieses Modul wird von den Beispielskripten verwendet, um Anmeldeinformationen zu verarbeiten und
autorisierte Kunden generieren. Das Modul kann auch direkt ausgeführt werden
um den HTTP-Autorisierungsheader zur Verwendung in curl-Befehlen auszudrucken.
Betrieb:
python auth.py
druckt den Header auf stdout.
'''
Importieren Sie httplib2
importiere google.auth
aus google.auth.transport.requests import AuthorizedSession
def get_creds():
Anmeldeinformationen, Projekt = google.auth.default()
wenn nicht Credentials.Token:
authed_session = AuthorizedSession (Anmeldeinformationen)
Anmeldedaten.refresh(google.auth.transport.requests.Request())
Anmeldeinformationen zurückgeben
def print_creds (Anmeldeinformationen):
'''Druckt den Autorisierungs-Header zur Verwendung in HTTP-Anforderungen.'''
print 'Autorisierung: Träger %s' % (credentials.token,)
def main():
print_creds(get_creds())
if __name__ == "__main__":
hauptsächlich() - Führen Sie das Authentifizierungsskript aususername@project-vm-us:~$ python auth.py
Abfrageskript erstellen
Importzeit
def warten_auf_job(job):
während wahr:
job.reload() # Aktualisiert den Status über eine GET-Anfrage.
if job.state == 'FERTIG':
if job.error_result:
RuntimeError(job.error_result) auslösen
zurückkehren
time.sleep(10)
def example_query():
query_id = str(int(time.time()))
print 'Beispiel-Abfrage-Abfrage mit ID starten: ' + query_id
client = bigquery.Client()
Abfrage = """\
FRAGE HIER EINFÜGEN
"""
dataset = client.dataset('datasetName')
table = dataset.table(name='destination_table_name')
job = client.run_async_query('your-job-name-' + query_id, query)
job.destination = Tabelle
job.write_disposition = 'WRITE_TRUNCATE'
job.begin()
warten_auf_job(job)
if __name__ == '__main__':
example_query()
Erstellen Sie ein Skript, um die Abfrage auszuführen
python /home/username/schedule-query/run-query.py >> /home/username/schedule-query/log.txt 2>&1
Planen Sie die Abfrage
Hier ist ein Beispiel für eine Crontab, um ein Skript jeden Tag um 19.05 Uhr auszuführen.
05 19 * * * sh /home/username/schedule-query/run-query.sh
No comments:
Post a Comment