Cómo unir tablas en el datalake
Organizamos los datos de manera que la unión de tablas de diferentes instituciones y temas sea tan simple como cualquier otra consulta. Para ello, definimos una metodología estándar para el tratamiento de datos, nomenclatura de columnas, tablas y conjuntos.
¿Cómo funciona la metodología BD?
Alguna frase sobre .... Para saber más, lea la documentación sobre tratamiento y arquitectura de datos.
La información de diferentes tablas se puede agregar mediante claves identificadoras. Una clave identificadora es una columna cuyo nombre es único en todas las tablas del data lake y se utiliza para identificar una entidad.
Ejemplo de clave identificadora
La columna ano
tiene el mismo nombre en todas las tablas del data lake -
siempre se refiere a la variable que tiene como valor cualquier año de
nuestro calendario.
Cuando trabajamos con datos de población del IBGE, la columna ano
,
junto con la columna municipio
, identifican de manera única cada fila de
la tabla:
-
No existe más de una fila con el mismo año y municipio;
-
No existe fila con valor nulo de
ano
omunicipio
en la tabla;
¡Pruébalo tú mismo(a): las siguientes consultas deben retornar vacío!
library("basedosdados")
# Busca alguna fila que tenga año y municipio repetido
query <- "SELECT ano, municipio, count(*) as total
FROM `basedosdados.br_ibge_populacao.municipios`
GROUP BY ano, municipio
WHERE total > 1"
read_sql(query=query)
# Busca filas con año o municipio nulos
query <- "SELECT * FROM
`basedosdados.br_ibge_populacao.municipios`
WHERE ano IS NULL OR municipio IS NULL"
read_sql(query=query)
import basedadosdados as bd
# Busca alguna fila que tenga año y municipio repetido
query = """SELECT ano, municipio, count(*) as total
FROM `basedosdados.br_ibge_populacao.municipios`
GROUP BY ano, municipio
WHERE total > 1"""
bd.read_sql(query=query)
# Busca filas con año o municipio nulos
query = """SELECT * FROM
`basedosdados.br_ibge_populacao.municipios`
WHERE ano IS NULL OR municipio IS NULL"""
bd.read_sql(query=query)
...
Uniendo tablas con claves identificadoras
La indicación de un conjunto de columnas como clave identificadora se hace directamente en los metadatos de la tabla. Así, puedes saber qué tablas pueden unirse comparando el conjunto de claves identificadoras de cada una.
A continuación, haremos un ejemplo de cómo unir las tablas de población y PIB del IBGE para obtener el PIB per cápita de todos los municipios brasileños.
En las tablas de población y PIB, la columna ano
y municipio
son claves
identificadoras. Por lo tanto, usaremos estas columnas en nuestra función JOIN
para
determinar cómo unir las tablas.
library("basedosdados")
set_billing_id("<YOUR_PROJECT_ID>")
query <- "SELECT
pib.id_municipio,
pop.ano,
pib.PIB / pop.populacao as pib_per_capita
FROM `basedosdados.br_ibge_pib.municipio` as pib
JOIN `basedosdados.br_ibge_populacao.municipio` as pop
ON pib.id_municipio = pop.id_municipio AND pib.ano = pop.ano"
# Puedes descargar en tu computadora
dir <- tempdir()
data <- download(query, file.path(dir, "pib_per_capita.csv"))
# O cargar el resultado de la consulta en tu ambiente de análisis
data <- read_sql(query)
import basedadosdados as bd
pib_per_capita = """SELECT
pib.id_municipio ,
pop.ano,
pib.PIB / pop.populacao as pib_per_capita
FROM `basedosdados.br_ibge_pib.municipio` as pib
INNER JOIN `basedosdados.br_ibge_populacao.municipio` as pop
ON pib.id_municipio = pop.id_municipio AND pib.ano = pop.ano
"""
# Puedes descargar en tu computadora
bd.download(query=pib_per_capita,
savepath="where/to/save/file",
billing_project_id=<YOUR_PROJECT_ID>)
# O cargar el resultado de la consulta en pandas
df = bd.read_sql(pib_per_capita, billing_project_id=<YOUR_PROJECT_ID>)
Lista de claves identificadoras
Claves geográficas
-
Sector censal:
id_setor_censitario
-
Municipio:
id_municipio
(estándar),id_municipio_6
,id_municipio_tse
,id_municipio_rf
,id_municipio_bcb
-
Área Mínima Comparable:
id_AMC
-
Región inmediata:
id_regiao_imediata
-
Región intermediaria:
id_regiao_intermediaria
-
Microrregión:
id_microrregiao
-
Mesorregión:
id_mesorregiao
-
Unidad de la federación (UF):
sigla_uf
(estándar),id_uf
,uf
-
Región:
regiao
Claves temporales
ano
,semestre
,mes
,semana
,dia
,hora
Claves de personas físicas
cpf
,pis
,nis
Claves de personas jurídicas
-
Empresa:
cnpj
-
Escuela:
id_escola
Claves en política
-
Candidato(a):
id_candidato_bd
-
Partido:
sigla_partido
,partido