[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery

Objectif

Je souhaite fournir un outil permettant au personnel de planification et au personnel marketing non ingénieurs de télécharger eux-mêmes des données sur BigQuery.Il est difficile pour moi de télécharger des données Excel vers BigQUery par moi-même, je l'ai donc conçu de manière à ce qu'il puisse être utilisé avec une interface graphique. C'était.

Comportement présumé

  1. ** Téléchargez Excel (.xlsx ou .csv) sur Cloud Storage. ** **
  1. ** Déclencheurs de téléchargement GCF et GCF fonctionne. ** **
  2. ** Une nouvelle table est créée dans BigQuery. ** ** (* Si le même nom de table existe déjà, il sera écrasé)

Préparation

Créer un bucket pour le téléchargement de données

Effectuez les réglages suivants (détails omis) Python 3.7 Type de déclencheur: "Cloud Storage" Bucket: "Bucket GCS créé ci-dessus"

GCF

requestments.txt


pandas
pandas-gbq
google-cloud-storage
google-cloud-bigquery
xlrd

main.py


from google.cloud import storage
from google.cloud import bigquery
import pandas as pd
import re


def gsc_to_bigquery_createtable(data, context):
    # log
    print(data)
    print(context)
    print('Folder Name : {}'.format(data['name']))
    GETPATH = data['name']
    m = re.match(
        r'(?P<getDatasetId>.*)/(?P<getFileId>.*)\.(?P<getFileType>.*)',
        GETPATH)
    #Spécifiez le nom du compartiment et le nom du projet
    BUCKET = 'Nom du godet'
    PROJECT_ID = 'Nom du projet'
    #Obtenez le nom du jeu de données
    DATASET_ID = m.group('getDatasetId')
    #Obtenir le nom du fichier
    FILE_ID = m.group('getFileId')
    #Obtenir l'identifiant
    FILE_TYPE = m.group('getFileType')

    TMP_PATH = '/tmp/' + FILE_ID + '.' + FILE_TYPE
    #Importer des données de GSC vers python
    gcs = storage.Client(PROJECT_ID)
    bucket = gcs.get_bucket(BUCKET)
    blob = bucket.get_blob(GETPATH)
    blob.download_to_filename(TMP_PATH)

    #Branche conditionnelle de l'identifiant
    if FILE_TYPE == 'xlsx':
        df = pd.read_excel(TMP_PATH)
    elif FILE_TYPE == 'csv':
        df = pd.read_csv(TMP_PATH)

    #Créer une table de Python vers BigQuery
    full_table_id = DATASET_ID + '.' + FILE_ID
    df.to_gbq(full_table_id, project_id=PROJECT_ID, if_exists='replace')
  # log
    print('Folder Name : {}'.format(data['name']))

Recommended Posts

[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery
Comment créer un fichier JSON en Python
[Pandas] Comment vérifier les doublons dans un tableau et supprimer les doublons (équivalent à supprimer les doublons dans Excel)
[Python] Comment générer une table pandas dans un fichier Excel
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
[Python] Comment supprimer des lignes et des colonnes dans une table (liste des options de méthode de dépôt)
[Python] Comment ajouter des lignes et des colonnes à une table (pandas DataFrame)
Comment utiliser BigQuery en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment utiliser is et == en Python
Comment générer un nouveau groupe de journaux dans CloudWatch à l'aide de python dans Lambda
Comment mettre un espace demi-largeur avant les lettres et les chiffres en Python.
Comment arrêter le programme jusqu'à une date et une heure spécifiques en python
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Comment effacer un taple dans une liste (Python)
Comment générer une séquence en Python et C ++
Comment incorporer des variables dans des chaînes python
Je veux créer une fenêtre avec Python
Créez automatiquement des rapports Word et Excel avec Python
Comment notifier les canaux Discord en Python
Créer une nouvelle page en confluence avec Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment créer une API Rest dans Django
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
[Python] Comment développer des variables dans une chaîne de caractères
Créer un plugin pour exécuter Python Doctest sur Vim (2)
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Comment afficher DataFrame sous forme de tableau dans Markdown
[Python] Comment trier un dict dans une liste et une instance dans une liste
Comment créer un téléchargeur d'image avec Bottle (Python)
[Python] Comment créer une matrice de corrélation et une carte thermique
Comment enregistrer une table récupérée par python en csv
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Comment exécuter une commande à l'aide d'un sous-processus en Python
Publier / télécharger une bibliothèque créée en Python vers PyPI
Comment mettre Pyenv sur Amazon Linux et Ubuntu pour créer un environnement Python 3.6.0
Créer une fonction en Python
Créer un dictionnaire en Python
Comment développer en Python
Comment créer un nouvel environnement virtuel Python sur Ubuntu
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
Une histoire sur la façon de spécifier un chemin relatif en python.
Comment importer des fichiers où vous le souhaitez en Python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Comment définir plusieurs variables dans une instruction Python for
[Python Kivy] Comment créer une simple fenêtre pop-up
Un moyen standard de développer et de distribuer des packages en Python
J'ai essayé "Comment obtenir une méthode décorée en Python"
Comment créer et utiliser des bibliothèques statiques / dynamiques en langage C
Manipulez le presse-papiers en Python et collez le tableau dans Excel
Comment développer dans un environnement virtuel Python [Memo]