[PYTHON] [mémo] Envoyez des informations de table à GCS avec BigQuery Schedule et Cloud Functions

TODO

Convertissez les informations du tableau en CSV et envoyez le fichier vers GCS une fois la planification définie dans BigQuery terminée.

Implémentation du traitement de transmission Cloud Functions déclenché par Pub / Sub

Paramètres Pub / Sub

PUBSUB.png
  1. Saisissez l'ID de sujet qui déclenche les fonctions Cloud.

Exemple: Définissez "exemple-1"

Paramètres Cloud Functions

FUNK1.png

Lorsque la gâchette s'enflamme Reportez-vous au tableau BQ dans GCS Placer un script pour envoyer le CSV

  1. Définissez le déclencheur dans "Cloud Pub / Sub" Sélectionnez "exemple-1" ci-dessus
  2. J'aime le langage, cette fois l'implémentation en ligne en Python

REQUIREMENTS.TXT décrit les modules nécessaires, etc. Décrivez ce qui fonctionne réellement avec MAIN.PY

Le contenu de la mise en œuvre est tel que "Envoyer les informations de la table d'hier à GCS sur BQ"

#Qu'est-ce qui est installé avec pip
google-cloud-bigquery
from google.cloud import bigquery
from datetime import date, timedelta
def export_table(event, context):
    client = bigquery.Client()
    yesterday = date.today() - timedelta(days=1)
    project = "project_name"
    dataset_id = "data_set_name"
    table_id = "table_name_yyyymmdd_" + yesterday.strftime('%Y%m%d')
    destination_uri = "gs://{}/{}".format("dir_name", yesterday.strftime('%Y%m%d')+".csv")
    dataset_ref = client.dataset(dataset_id, project=project)
    table_ref = dataset_ref.table(table_id)
    extract_job = client.extract_table(
    table_ref,
    destination_uri,
    location="US",
    )
    extract_job.result()

Enfin, entrez "export_table" comme fonction d'exécution

Planifier avec BigQuery

Une "planification" est fournie comme l'une des fonctions de BigQuery, alors utilisez-la.

BQ1.png

Entrez une requête valide et commencez par créer une nouvelle planification pour elle

BQ2.png

En définissant "exemple-1" dans l'entrée Pub / Sub en bas, Le déclencheur se déclenchera lorsque la table sera créée.

Avec ce qui précède, une fois la planification définie dans BigQuery terminée, les informations du tableau seront converties au format CSV et le fichier sera envoyé à GCS.

Épilogue

Lors de la migration du serveur sur site de Rundeck vers le cloud Le compte de service a été changé et l'autorisation d'exécution GS n'a pas été accordée. Le contenu lui-même est tel que "Générer une table qui est complétée dans BQ" et "Envoyer les données du tableau à GCS" Comme il s'agissait d'une utilisation des fonctions à petite échelle, j'ai décidé de la compléter avec GCP.

Ce n'est pas un gros problème, alors je vais laisser un mémo implémenté ici.

Recommended Posts

[mémo] Envoyez des informations de table à GCS avec BigQuery Schedule et Cloud Functions
Convertissez la feuille de calcul en CSV et importez-la dans Cloud Storage avec Cloud Functions
[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery
termux × AWS Envoyez des informations de localisation de smartphone à AWS avec l'IoT
API Nifty Cloud facile à utiliser avec botocore et python
Cloud Functions pour redimensionner les images à l'aide d'OpenCV avec le déclencheur Cloud Storage
Précautions lors de la sortie vers une table BigQuery toutes les heures avec Luigi
Importez et supprimez des fichiers dans Google Cloud Storages avec django-storage
Connectez-vous à BigQuery avec Python
Extraire le jeu de données bigquery et la liste des tables avec python et la sortie en CSV
Je souhaite utiliser une bibliothèque externe avec IBM Cloud Functions
Comment se connecter à Cloud Firestore à partir de Google Cloud Functions avec du code Python
Essayez d'afficher la carte google et la carte géographique avec python
Télécharger le fichier sur Cloud Storage (GCS) de GCP ~ Charger avec Python local