Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GOOGLE-CLOUD-PLATTFORM
Tutorial de Google
Cloud Platform con
Python
Tutorial sobre como configurar google cloud platform
usando Python.
LAIN TALJUK
15 FEB. 2021
• 14 MIN READ
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 1/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Introducción
Tutorial de Google Cloud Platform con Python
Muchas veces desarrollamos scripts que hacen cosas interesantes como
analizar imágenes, hacer predicciones con modelos de ML, convertir
audio en texto, etc.
Pero...
¿Qué ocurre si necesitamos que estos scripts funcionen las 24 horas del
día, los 7 días de la semana?
Aca dejo un video de 1 min explicando con más detalle las Cloud
Functions:
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 2/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Objetivos
El objetivo de este articulo sera detallar el proceso para crear una Cloud
Function en GCP, que se ejecute todos los días de manera automática y
luego envíe la informacion procesada a un data warehouse llamado
Google BigQuery.
Agenda de Temas
Crear una cuenta en GCP
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 3/33
10/1/22 14:23 Tutorial de google cloud platform con Python
En este link hay mas información sobre el pricing de una cloud function.
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 6/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Para los que no entiendan que es una API, básicamente sirve para que
dos aplicaciones de software se puedan comunicar.
Por ej:
Para que esto sea posible, Google Maps tiene su propia API.
Luego hacemos click en enable (en este caso aparece manage porque ya
se encuentra activada la API):
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 7/33
10/1/22 14:23 Tutorial de google cloud platform con Python
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 8/33
10/1/22 14:23 Tutorial de google cloud platform con Python
En este caso:
edv_dataset
Finalmente hacemos click en create:
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 9/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Dolar blue
Dolar oficial
Dolar bolsa
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 10/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Dentro de la carpeta del proyecto, se deben crear cuatro archivos .py, los
cuales seran subidos mas tarde a GCP como una cloud function.
main.py
dolar_value.py
bigquery_uploader.py
schema.py
lue :
import requests
import pandas as pd
def request_dolar_value():
dolar_price_urls = [
'https://www.dolarhoy.com/cotizaciondolarblue',
'https://www.dolarhoy.com/cotizaciondolaroficial
'https://www.dolarhoy.com/cotizaciondolarbolsa',
'https://www dolarhoy com/cotizaciondolarcontado
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 11/33
10/1/22 14:23 Tutorial de google cloud platform con Python
https://www.dolarhoy.com/cotizaciondolarcontado
]
titleSelector = CSSSelector("div[class='topic']")
valueSelector = CSSSelector("div[class='value']")
try:
r = requests.get(url)
html_tree = fromstring(r.text)
except Exception as e:
print(e)
continue
dolar_df = pd.DataFrame({
'dolar_type': dolar_type_column,
'topic': dolar_topic_column,
'dolar_value': dolar_value_column
})
dolar_df['dolar_value'] = dolar_df['dolar_value'].as
dolar_df['load_timestamp'] = pd.to_datetime('now')
return dolar_df
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 12/33
10/1/22 14:23 Tutorial de google cloud platform con Python
ad_df_to_bigquery .
r.py :
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 13/33
10/1/22 14:23 Tutorial de google cloud platform con Python
'''
try:
client = bigquery.Client(project=project_id)
print(
dataset_ref = client.dataset(dataset_id)
table_id = project_id+'.'+dataset_id+'.'+table_n
try:
except Exception:
table.time_partitioning = bigquery.TimeParti
type_=bigquery.TimePartitioningType.DAY,
field=partition_field,
# Create table
created_table = client.create_table(table)
print(
created_table.time_partitioning.fiel
)
bq_table = client.get_table(table_id)
job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat
job_config.autodetect = True
if append is True:
job_config.write_disposition = bigquery.\
WriteDisposit
WRITE_APPEND
else:
job_config.write_disposition = bigquery.\
WriteDisposit
WRITE_TRUNCAT
job = client.load_table_from_dataframe(
df,
b t bl
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 15/33
10/1/22 14:23 Tutorial de google cloud platform con Python
bq_table,
job.result()
# show info
job.output_rows,
dataset_id,
table_id)
return 200
except Exception as e:
print('[ERROR] {}'.format(e))
return 400
SCHEMA = [
"name": "dolar_type",
"type": "STRING",
"mode": "NULLABLE"
},
"name": "topic",
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 16/33
10/1/22 14:23 Tutorial de google cloud platform con Python
"type": "STRING",
Tutorial de Google
"mode": Cloud Platform con Python
"NULLABLE"
},
"name": "dolar_value",
"type": "FLOAT",
"mode": "NULLABLE",
},
"name": "load_timestamp",
"type": "TIMESTAMP",
"mode": "NULLABLE",
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 17/33
10/1/22 14:23 Tutorial de google cloud platform con Python
from Tutorial
schemade GoogleSCHEMA
def main(request):
try:
# PROJECT VARIABLES
BIGQUERY_PROJECT_ID = 'edv-project-304721'
BIGQUERY_DATASET_ID = 'edv_dataset'
BIGQUERY_TABLE_NAME = 'dolar_evolution'
PARTITION_FIELD = 'load_timestamp'
APPEND_DATA_ON_BIGQUERY = True
dolar_data = request_dolar_value()
project_id=BIGQUERY_PROJECT_ID,
dataset_id=BIGQUERY_DATASET_ID,
table_name=BIGQUERY_TABLE_NAME,
df=dolar_data,
schema=SCHEMA,
partition_field=PARTITION_FIELD,
append=APPEND_DATA_ON_BIGQUERY
if http_status == 200:
else:
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 18/33
10/1/22 14:23 Tutorial de google cloud platform con Python
except Exception as e:
Ese parametro sirve en los casos en los que se necesite setear variables
usando la URL de la cloud function.
cachetools==4.2.1
certifi==2020.12.5
cffi==1.14.5
chardet==4.0.0
google-api-core==1.26.0
google-api-python-client==1.12.8
google-auth==1.26.1
google-auth-httplib2==0.0.4
google-cloud-bigquery==2.8.0
google-cloud-core==1.6.0
google-crc32c==1.1.2
google-resumable-media==1.2.0
googleapis-common-protos==1.52.0
grpcio==1.35.0
httplib2==0.19.0
idna==2.10
lxml==4 6 2
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 19/33
10/1/22 14:23 Tutorial de google cloud platform con Python
lxml==4.6.2
numpy==1.20.1
pandas==1.2.2
proto-plus==1.13.0
protobuf==3.14.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.20
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2021.1
requests==2.25.1
rsa==4.7
six==1.15.0
uritemplate==3.0.1
urllib3==1.26.3
cssselect==1.1.0
pyarrow==3.0.0
Ahora si! ya podemos subir nuestro proyecto a GCP como una Cloud
Function.
Aquí dejo un excelente tutorial que muestra como instalar cloud SDK.
Una vez instalado cloud sdk, abrimos una terminal y nos movemos
hacia la carpeta de nuestro proyecto. Una vez dentro de la carpeta sera
necesario loguearse en cloud SDK usando el comando gcloud auth logi
n :
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 20/33
10/1/22 14:23 Tutorial de google cloud platform con Python
El comando anterior abrirá una url de autenticacion. Solo debe dar click
en continuar hasta llegar a una pantalla de éxito.
Los flags servirán para configurar nuestra cloud function. Los flags que
usaremos son:
--project=edv-project-304721
--trigger-http
--timeout=540
--memory=512MB
--region=us-central1
--runtime=python38
--entry-point=main
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 21/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Si unimos todas los flags, el comando final que debemos ejecutar queda
de la siguiente forma (dolar_evolution es el nombre de la cloud
function):
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 22/33
10/1/22 14:23 Tutorial de google cloud platform con Python
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 23/33
10/1/22 14:23 Tutorial de google cloud platform con Python
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 24/33
10/1/22 14:23 Tutorial de google cloud platform con Python
pondremos:
edv_scheduler
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 26/33
10/1/22 14:23 Tutorial de google cloud platform con Python
cada 1 minuto: * * * * *
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 28/33
10/1/22 14:23 Tutorial de google cloud platform con Python
Aqui vemos que el campo last run esta vacio porque todavia no se
ejecuto el scheduler. Si esperamos 5 minutos y refrescamos la pagina,
notaremos que el campo last run se lleno con la fecha y hora de la
ultima ejecucion:
Conclusiones
A lo largo de este articulo se trataron muchos temas:
Request HTTP
Manejo de depencias
Cloud Functions
Google BigQuery
Cloud SDK
Cloud Scheduler
Pero aun así, solo vimos una parte muy minúscula de todo lo que nos
ofrece Google Cloud Platform.
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 30/33
10/1/22 14:23 Tutorial de google cloud platform con Python
¿Qué te pareció?
Tutorial de 9Google Cloud Platform con Python
Responses
LOG IN WITH
OR SIGN UP WITH DISQUS ?
Name
HYPERTUNING
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 31/33
10/1/22 14:23 Tutorial de google cloud platform con Python
EDV
21 ENE. 2021 • 3 MIN READ
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 32/33
10/1/22 14:23 Tutorial de google cloud platform con Python
https://blog.escueladedatosvivos.ai/tutorial-google-cloud-platform-con-python/ 33/33