Data ingestion with python to redshift
- Published on
- • 2 mins read•--- views
Introduccion
Si conoces sobre las librerias de python, sabrás que hay muchas y existe una muy popular para la ingesta de datos a traves de APIs, es la libreria REQUESTS, esta libreria es capaz de extraer cualquier tipo de datos JSON para nuestro caso jalaremos de un muyy conocida que recoge datos de puntajes de tiendas, restaurantes, lugares públicos, etc. la API de YELP
Que debemos preparar
API key Remote database access Python v3.10.5 Requests v2.81 Pandas v2.0.2 SQLAlchemy v1.4.38 psycopg2-binary v2.9.7
pip install requests==2.81
pip install pandas==2.0.2
pip install psycopg2-binary==2.9.7
pip install SQLAlchemy==1.4.38
%reset -f
import requests
import pandas as pd
url = "https://api.yelp.com/v3/businesses/search"
api_key = "tCHWtqVrsUiwlSnk8gftldKYGvhU71upowSlbuydOXW_qByHx7hcp6nUcS3GqLZ47WljuHN1OXqjGbuhE0opoqmhT6g4qrIvrUEl-Ci5wuFuYI-j7DCWMNRY4P89ZnYx"
headers = {"Authorization": "Bearer {}".format(api_key)}
params = {"term": "bookstore",
"location": "San Francisco"}
response = requests.get(url, headers=headers, params=params)
data = response.json()
df = pd.DataFrame(data['businesses'])
bookstore = pd.json_normalize(data["businesses"],
sep="_",
record_path="categories",
meta=["name",
"alias",
"rating",
["coordinates", "latitude"],
["coordinates", "longitude"]],
meta_prefix="pr_")
from sqlalchemy import create_engine
# https://docs.sqlalchemy.org/en/20/core/engines.html#postgresql
engine = create_engine('postgresql://username:password@data-engineer-cluster.cyhh5bfevlmn.us-east-1.redshift.amazonaws.com:5439/data-engineer-database')
bookstore.to_sql('bookstore', con=engine, if_exists='append', chunksize=100, index=False)
api_url
: endpoint.params
: parametros que filtraran la información que solicitamos, cada API tiene sus parametros, aqui los de YELP https://docs.developer.yelp.com/reference/v3_business_searchheaders
: The list of imported modules that export the providers


Happy reading!