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.
GS: // nom du compartiment (facultatif) / nom de l'ensemble de données / nom de la table .xlsx
.csv GS: // nom du compartiment (facultatif) / nom de l'ensemble de données / nom de la table .csv
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