[GO] [GCF + Python] So laden Sie Excel in GCS hoch und erstellen eine neue Tabelle in BigQuery

Zweck

Ich möchte ein Tool bereitstellen, mit dem Planungsingenieure und Marketingmitarbeiter selbst Daten in BigQuery hochladen können. Es ist für mich schwierig, Excel-Daten selbst in BigQUery hochzuladen. Daher habe ich es so erstellt, dass es mit der GUI betrieben werden kann Es war.

Angenommenes Verhalten

  1. ** Laden Sie Excel (.xlsx oder .csv) in den Cloud-Speicher hoch. ** ** **
  1. ** GCF-Upload-Trigger und GCF funktionieren. ** ** **
  2. ** In BigQuery wird eine neue Tabelle erstellt. ** ** ** (* Wenn derselbe Tabellenname bereits vorhanden ist, wird er überschrieben.)

Vorbereitung

Erstellen Sie einen Bucket für das Hochladen von Daten

Nehmen Sie die folgenden Einstellungen vor (Details weggelassen) Python 3.7 Auslösertyp: Cloud Storage Bucket: GCS-Bucket oben erstellt

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)
    #Geben Sie den Bucket-Namen und den Projektnamen an
    BUCKET = 'Eimername'
    PROJECT_ID = 'Projektname'
    #Rufen Sie den Datensatznamen ab
    DATASET_ID = m.group('getDatasetId')
    #Dateinamen abrufen
    FILE_ID = m.group('getFileId')
    #Kennung abrufen
    FILE_TYPE = m.group('getFileType')

    TMP_PATH = '/tmp/' + FILE_ID + '.' + FILE_TYPE
    #Importieren Sie Daten von GSC nach Python
    gcs = storage.Client(PROJECT_ID)
    bucket = gcs.get_bucket(BUCKET)
    blob = bucket.get_blob(GETPATH)
    blob.download_to_filename(TMP_PATH)

    #Bedingter Zweig des Bezeichners
    if FILE_TYPE == 'xlsx':
        df = pd.read_excel(TMP_PATH)
    elif FILE_TYPE == 'csv':
        df = pd.read_csv(TMP_PATH)

    #Erstellen Sie eine Tabelle von Python zu 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] So laden Sie Excel in GCS hoch und erstellen eine neue Tabelle in BigQuery
So erstellen Sie eine JSON-Datei in Python
[Pandas] So überprüfen Sie Duplikate in einer Tabelle und löschen Duplikate (entspricht dem Löschen von Duplikaten in Excel)
[Python] So geben Sie eine Pandas-Tabelle in eine Excel-Datei aus
So erstellen Sie eine Instanz einer bestimmten Klasse aus dict mit __new__ () in Python
[Python] So löschen Sie eine Zeile / Spalte in einer Tabelle (Liste der Optionen für die Drop-Methode)
[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)
So arbeiten Sie mit BigQuery in Python
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
Verwendung ist und == in Python
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda
So setzen Sie in Python ein Leerzeichen mit halber Breite vor Buchstaben und Zahlen.
So stoppen Sie das Programm bis zu einem bestimmten Datum und einer bestimmten Uhrzeit in Python
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
So löschen Sie einen Taple in einer Liste (Python)
So generieren Sie eine Sequenz in Python und C ++
Einbetten von Variablen in Python-Strings
Ich möchte mit Python ein Fenster erstellen
Erstellen Sie automatisch Wort- und Excel-Berichte mit Python
So benachrichtigen Sie Discord-Kanäle in Python
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So erstellen Sie eine Rest-API in Django
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
[Python] So benennen Sie Tabellendaten und geben sie mit csv aus (to_csv-Methode)
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Erstellen Sie ein Plug-In, das Python Doctest auf Vim ausführt (2)
Erstellen Sie ein Plug-In, um Python Doctest mit Vim (1) auszuführen.
So zeigen Sie DataFrame als Tabelle in Markdown an
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
[Python] So erstellen Sie eine Korrelationsmatrix und eine Heatmap
So speichern Sie eine von Python gekratzte Tabelle in CSV
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Veröffentlichen / Hochladen einer in Python erstellten Bibliothek in PyPI
So stellen Sie pyenv unter Amazon Linux und Ubuntu ein, um eine Python 3.6.0-Umgebung zu erstellen
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Wie man in Python entwickelt
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
So importieren Sie Dateien in Python an eine beliebige Stelle
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
So definieren Sie mehrere Variablen in einer Python for-Anweisung
[Python Kivy] So erstellen Sie ein einfaches Popup-Fenster
Eine Standardmethode zum Entwickeln und Verteilen von Paketen in Python
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Erstellen und Verwenden von statischen / dynamischen Bibliotheken in C-Sprache
Bearbeiten Sie die Zwischenablage in Python und fügen Sie die Tabelle in Excel ein
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]