1 of 31

Modelado de�Data Warehouses con

Jorge Aguilar Orozco�Julio 2023

2 of 31

Acerca de mi

Ing. Electrónico - Universidad del Norte

+3 años Exp. sector IT

Ing. Datos - Pragma SA

3 of 31

DEMO

INTRODUCCIÓN A DBT

CONTEXTO

LO QUE VEREMOS …

01

02

03

4 of 31

CONTEXTO

5 of 31

6 of 31

DEFINICIÓN DE DATA WAREHOUSE

Para mas Informacion: TechTarget

Redshift

BigQuery

Synapse

A nivel funcional, es un repositorio centralizado de grandes volúmenes de datos estructurados, que provienen de diversas fuentes, y que han sido previamente procesados y están listos para ser consumidos.

A nivel de infraestructura, se crean sobre una base de datos relacional.�

7 of 31

BENEFICIOS Y APLICACIONES DEL �DATA WAREHOUSE

Para mas Informacion: TechTarget

BENEFICIOS

  • Creación de una fuente de verdad centralizada.
  • Obtención rápida de Insights.
  • Desacople la analítica de la operación.

APLICACIONES

  • Inteligencia de Negocios (BI)
  • Reporteria

8 of 31

¿Cómo se modelan los �Data Warehouses?

9 of 31

NORMALIZACIÓN Y DESNORMALIZACIÓN

Una base de datos normalizada es una base de datos con baja redundancia en los datos. El objetivo es facilitar las operaciones tipo CRUD y reducir el tamaño de almacenamiento.

Una base de datos desnormalizada es una base de datos con alta redundancia en los datos. El objetivo es facilitar las operaciones de lectura con propósitos analíticos.

10 of 31

NORMALIZADA

DESNORMALIZADA

11 of 31

ENFOQUES

BILL INMON VS KIMBALL

12 of 31

ENFOQUE BILL INMON�(DW NORMALIZADO)

Fuente: Kurt Zahra

13 of 31

ENFOQUE KIMBALL�(DW DESNORMALIZADO)

Fuente: Medium

F

F

14 of 31

MODELO DIMENSIONAL �DE KIMBALL

Fuente: Medium

F

D

D

D

D

D

15 of 31

“Data involved in calculations should be in fact tables, and data involved in constraints, groups, and labels should be in dimensional tables.”

— The Data Warehouse Toolkit

16 of 31

EJEMPLO MODELO DIMENSIONAL

17 of 31

¿PASOS PARA CREAR UN MODELO DIMENSIONAL?

18 of 31

CASO DE EJEMPLO: �CHINOOK DATABASE

Para mas Informacion: SQLite Tutorial

19 of 31

PASOS PARA CONSTRUIR EL MODELO DIMENSIONAL

Fuente: guru99

  1. Obtener requerimientos de negocio.
  2. Identificar Granularidad.
  3. Identificar las posibles dimensiones.
  4. Identificar los hechos o facts.
  5. Diseño del esquema.

20 of 31

  1. OBTENER REQUERIMIENTO DE NEGOCIO

Fuente: guru99

El gerente desea saber:

Cantidad de productos vendidos

Ingresos

21 of 31

2. IDENTIFICAR GRANULARIDAD

Fuente: guru99

Nivel de detalle o desagregación que se tiene en los datos.

Normalmente se busca en relación al tiempo.

Ej: Dia, semana, mes.

22 of 31

3. IDENTIFICAR LAS DIMENSIONES

Fuente: guru99

Es posible saber las ventas por?

  • Cliente
  • Empleado
  • Producto

23 of 31

4. IDENTIFICAR LOS HECHOS O FACTS

Fuente: guru99

Cuales son las variables que cuantifican lo que quiero responder?

24 of 31

5. DISEÑAR MODELO DIMENSIONAL

25 of 31

  • Crear tablas (CREATE)�
  • Poblar tablas (INSERT)�
  • Actualizar valores y campos (UPDATE)�
  • Realizar Consultas (SELECT)

Antes de crear nuestro modelo de datos, sabemos que vamos a tener que hacer las siguientes operaciones en la base de datos.

26 of 31

INTRODUCCIÓN A DBT

0

27 of 31

DEFINICIÓN

Fuente: DBT

DBT (acronimo de Data Build Tool) es un Framework de Python para el modelado de base de datos.

�Permite realizar CREATE, INSERT, y UPDATE, solamente aplicando consultas SELECT.

Permite crear código reutilizable gracias a Jinja

28 of 31

Como Iniciar?

Fuente: DBT

DBT está disponible a través de PIP.

pip install dbt-postgres

Una vez instalado, para iniciar un proyecto de DBT se ejecutará el siguiente comando.��dbt-init

Enter a name for your project (letters, digits, underscore): dbt_pybaq_example

Which database would you like to use?

[1] postgres

(Don't see the one you want? https://docs.getdbt.com/docs/available-adapters)

Enter a number: 1

29 of 31

Una vez finalizado, va a cargar los siguientes elementos:

  1. Archivo Profile:�Linux: ~/.dbt/profiles.yml�
  2. Directorio del proyecto DBT

dbt_pybaq_example:

outputs:

dev:

type: postgres

threads: 4

host: localhost

port: 5432

user: postgres

pass: postgres

dbname: postgres

schema: dbt_example

prod:

type: postgres

threads: 4

host: localhost

port: 5432

user: postgres

pass: postgres

dbname: postgres

schema: dbt_example

target: dev

30 of 31

Estructura Proyecto DBT

Fuente: DBT

Archivo

  • dbt_project.yml: Archivo que define la configuración del proyecto�

�Los directorios más importantes son:

  • models/: Ruta donde se guardan los modelos
  • macros/: Directorio donde se definen las macros personalizadas

dbt_pybaq_example

├───analyses/

├───dbt_packages/

├───logs/

├───macros/

├───models/

├───seeds/

├───snapshots/

├───target/

├───tests/

└───dbt_project.yml

31 of 31

MUCHAS GRACIAS

Please keep this slide for attribution

CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, and infographics & images by Freepik