PDF - BDC Fusionado-Comprimido

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 205

BASE DE DATOS CORPORATIVAS

Durante años las empresas han generado información para la gestión en sus base de
datos operativas realizando las transacciones de la actividad diaria de la empresa
(finanzas, ventas, personal, sueldos, etc.) y acumulando una gran cantidad de información
que se pueden analizar para conocer tendencias del negocio y tomar decisiones.
Sobre las base de datos operativa se pueden ejecutar reportes
● OPERATIVOS: Información para la Gestión diaria de la empresa, altas y bajas de
personal, facturas, ventas del día, etc.
● ANALITICOS: Gestión de la información para conocer el negocio. Ventas mes a
mes de los últimos 5 años. Productos más vendidos en los últimos 3 años.
Los reportes analíticos, en las bases de datos operativas, cada vez son más complejos a
desarrollar y lentos al ejecutarse.
Los sistemas “tradicionales” de información sobre base de datos operativas tienen un
diseño que no es el que se necesita para el análisis de datos y la toma de decisiones.
Por tal motivo surge la tecnología “BI - Business Intelligence - Inteligencia de negocio”,
basada en:
● Base de Datos Corporativa, para la toma de decisiones y análisis/inteligencia del
negocio.
● Cubos de información con una visión global única del conjunto de datos de la
empresa.
● Reportes ANALITICOS (cuadros y gráficos).

CLIENTE: UNIVERSIDAD
APLICACIÓN: “GESTIÓN ACADÉMICA”

BASE DE DATOS OPERATIVA BASE DE DATOS CORPORATIVA


para sistemas de información para la para sistemas de información para la
GESTIÓN TOMA DE DECISIONES

Registrar Carreras, Docentes y Análisis de inscripciones por semestre.


Estudiantes.
Evolución de Permanencia/Abandono
Gestión de Matrículas. de los estudiantes en cada carrera.

Calendario de Cursos. Desempeño en los Cursos:


Calificación mínima, máxima y promedio.
Registrar Exámenes y Actas de
Calificaciones.

Procesamiento de Transacciones en Procesamiento analítico en línea


Línea OLAP
OLTP Online Analytical Processing
OnLine Transaction Processing

MODELO ENTIDAD-RELACION MODELO DIMENSIONAL


BI - Business Intelligence - Inteligencia de negocio
BI es un proceso para la toma de decisiones basado en una tecnología que transforma los
datos en información y la información en conocimiento, de forma que se pueda optimizar el
proceso de toma de decisiones para el negocio.

Soluciones BI para:
Observar ¿qué está ocurriendo?
Comprender ¿por qué ocurre?
Predecir ¿qué ocurriría si ...?
Colaborar ¿qué debería hacer el equipo?
Decidir ¿qué camino se debe seguir?

Componentes BI:
● Fuente de Informacion
● Almacén de Datos - Base Datos Corporativas
○ DWH-DataWareHouse
● Carga/Integración de Datos - ETL
○ ETL-Extract, Transform and Load
● Cubos de Información - OLAP
● Reportes Analticiós (Cuadros Gráficos)
● Tablero/Cuadro de Mando

Cubos de Información - OLAP - On-Line Analytical Processing


Los cubos OLAP se generan a partir de la BD Corporativa

Tipos de reportes/informes que ofrece BI


a partir de la base de Datos Corporativos - DataWarehouse
Rotar (Drill Anywhere)
Profundizar nivel de detalle (Drill-Down)
Disminuir nivel de detalle (Roll-Up)
Filtrar (slice y dice)
Pivotaje/Trasponer (pivot)
Arquitectura BI

Diferencias entre Base de Datos Operacional y Corporativa

BD OPERACIONAL OLTP BD CORPORATIVA OLAP


ALMACÉN DE DATOS

•Predomina la actualización. •Predomina la consulta


*Actividad operativa (día a día). *Análisis y decisión estratégica.
•Proceso puntual. •Proceso masivo.
*Estabilidad. •Dinamismo.
•Datos desagregados. •Niveles de detalle/agregación.
•Dato actual. •Dato histórico.
•Respuesta de la transacción •Respuesta masiva
inmediata. •Estructura Multidimensional
•Estructura relacional. •Usuarios de perfiles altos.
•Usuarios de perfiles bajos. •Explotación de información
Explotación de la información interna y externa relacionada con
relacionada con operatividad de el negocio.
cada aplicación

Transacciones Análisis
Normalizado, optimizado Des-normalizado,
para recopilar, optimizado para análisis
almacenar, actualizar o y obtención de grandes
eliminar datos volúmenes de datos
rápidamente Base de datos
Base de datos relacional multidimensional
(diversas formas de
dividir los datos)

Data Warehouse - Almacén de datos


-Es el punto de partida de una solución BI, el repositorio único para hacer análisis de
información

-Base de Datos centralizada que integra información desde distintas fuentes, integrando los
datos

corporativos de las bases de datos operacionales de la organización


-Modelo dimensional para optimizar el tiempo de respuesta. No posee el mismo detalle de
Información de un sistema operacional.

-Base histórica cuyo tamaño crece rápidamente.

-Contiene la información relevante para la toma de decisiones, con un nivel de agregación


que

no necesariamente coincide con el manejado en los sistemas


transaccionales/operacionales.
-Maneja grandes volúmenes de datos, ya que integra diferentes fuentes de datos y además
Incluye gran cantidad de datos históricos.

-La cantidad de transacciones es baja, pero contiene consultas complejas que involucran
muchos datos donde se espera un tiempo de respuesta rápido.

- Modelo de datos orientado a consultas. Los datos están desnormalizados para realizar
consultas de alto rendimiento. Bl transforma los datos desde uno o varios sistemas
operacionales normalizados e independientes a un único sistema desnormalizado con
datos integrados en cubos de información.

En las tablas del DWH se almacenan las dimensiones y las métricas (medidas, hechos)
para el análisis, con una columna por cada dimensión y una columna por cada métrica o
hecho a analizar.
Las tablas del modelo dimensional del DWH se asocian a un cubo OLAP.
Las dimensiones de los cubos se corresponden con las columnas de dimensiones de la
tabla de hechos (fact) y la métrica/medida a analizar se corresponde a las columnas de
medidas de la tabla de hechos.
El modelo dimensional es una adaptación del modelo relacional para el almacén de
datos de BI, orientado a consultas para que los datos puedan ser extraídos fácilmente
usando Cubos/Consultas OLAP con el objetivo de presentar la información de una
manera estándar, sencilla y sobre todo intuitiva para el usuario.

El modelo dimensional es creado en el año 1996 por Ralph Kimball, para el diseño de
almacenes de datos (Data Warehouse), partiendo de la visión multidimensional que
los usuarios tienen de los datos empresariales al analizar sus datos.

Básicamente el Modelo Dimensional es el nombre que se le da a una técnica


utilizada para construir el Data Warehouse que difiere del modelo Entidad-Relación
ya que en el Modelo dimensional los datos están desnormalizados para realizar
consultas de alto rendimiento.

BI transforma los datos desde uno o varios sistemas operacionales normalizados e


independientes a un único sistema desnormalizado con datos integrados en cubos
de información.

Modelo Dimensional
Modelo DIMENSIONAL
- Se construye como un cubo de tres o más dimensiones pudiendo acceder a la
información a través de una combinación de dimensiones.
- Está compuesto por una tabla llamada "de hechos" (fact) que contiene las medidas a
analizar y un conjunto de pequeñas tablas llamadas "dimensiones“.
Por ejemplo
Dimensiones: año, mes, país, departamento
Hechos: ventas, compras,..
- Cada dimensión contiene una clave primaria que se "conecta"/relaciona con la tabla
de hechos manteniendo una relación de 1 a muchos.
- Estas claves son numéricas y no compuestas.
Modelo Dimensional: Estrella
Modelo Estrella (Star).
Es un modelo de datos que tiene una tabla de hechos que contiene los datos para el
análisis, rodeada de las tablas de dimensiones.
Las tablas de dimensiones tendrán siempre una clave primaria simple
Este esquema es ideal por su simplicidad y velocidad para ser usado en análisis
multidimensionales. Permite acceder tanto a datos agregados como de detalle.

● Una BD dimensional está compuesta por varias estrellas en las que las dimensiones
y hechos pueden ser compartidos
● A cada estrella se conoce como Data Mart

Modelo Dimensional: Copo de Nieve


Modelo Copo de Nieve (Snowflake).
El esquema copo de nieve es un refinamiento del esquema estrella, donde, por ejemplo,
cuando la dimensión o el hecho tiene jerarquías, las jerarquías podrían representarse
mediante la normalización de la tabla correspondiente.

Ejemplo: la dimensión DIRECCIÓN se puede jerarquizar en distintos niveles: ciudad,


departamento, país, continente.

Es una estructura más compleja que el esquema en estrella. Se usa cuando alguna de las
dimensiones se implementa con más de una tabla de datos.

En este caso se normalizan las tablas de dimensiones para reducir el espacio de


almacenamiento al eliminar la redundancia de datos; pero tiene la contrapartida de generar
peores rendimientos al tener que crear más tablas de dimensiones y más relaciones entre
las tablas (JOINS) lo que tiene un impacto directo sobre el rendimiento de las consultas.
Modelo Dimensional: 3FN
Modelo 3FN (Tercera Forma Normal).
Es cuando el modelo Dimensional tiene la información del hecho (fact) normalizada.
Los modelos en estrella son útiles para BI, sin embargo los cubos se multiplican y van
apareciendo cada vez más informes que requieren su propia estrella para ejecutarse en un
tiempo razonable, por eso es importante en la etapa de análisis de requerimientos identificar
los casos en que se debe aplicar el modelo dimensional 3NF con la normalización del hecho
en Principal y Detalle como se muestra en la siguiente figura:
Herramientas OLAP
(Procesiamiento analitico online)
● Las herramientas de OLAP presentan al usuario una visión multidimensional de los
datos (esquema multidimensional) para cada actividad que es objeto de análisis.
● El usuario formule consultas a la herramienta OLAP seleccionando atributos de este
esquema multidimensional sin conocer la estructura interna (esquema físico) del
almacén de datos.
● La herramienta OLAP genera la correspondiente consulta y la envía al gestor de
consultas del sistema (p.ej. mediante una sentencia SELECT).

Las herramientas de OLAP se caracterizan por:

● Ofrecer una visión multidimensional de los datos (matricial).


● No imponer restricciones sobre el número de dimensiones.
● Ofrecer simetría para las dimensiones.
● Permite definir de forma flexible (sin limitaciones) sobre las dimensiones:
restricciones, agregaciones y jerarquías entre ellas.
● Ofrecer operadores intuitivos de manipulación: drill-down, roll-up, slice-and-dice,
pivot.

Complemento
BASE DE DATOS OPERATIVA
● Procesamiento de Transacciones en Línea OLTP
OnLine Transaction Processing
● MODELO ENTIDAD-RELACIÓN
○ Entidades
○ Atributos
○ Relaciones
● Procesamiento analítico en línea OLAP
OnLine Analytical Processing
● MODELO DIMENSIONAL
○ Hechos
○ Dimensiones
○ Medidas

Modelado Dimensional

● Es una adaptación del modelo relacional.


● Consiste de tablas de hechos que se caracterizan usando dimensiones y medidas.
● La información sobre un hecho (actividad) se representa mediante indicadores
(medidas o atributos de hecho).
● La información de cada dimensión se representa por un conjunto de atributos
(atributos de dimensión).
● Una dimensión es el contexto de un hecho, tienden a ser discretas y jerárquicas.
● Un indicador es una cantidad que describe el hecho, debe ser agregable.
Ejemplo - ANÁLISIS DE VENTAS

HECHO VENTAS MEDIDAS DIMENSIONES

- Importe - Tiempo
- Costo - Sucursal
- Unidades - Vendedor
- Cliente
- Importe Total
- Producto
- Ganancia
- Promedio

Modelo Dimensional y Tablas

Minería de Datos: Análisis matemático / estadístico para buscar patrones y tendencias en


grandes volúmenes de datos. Construcción del modelo de conocimiento del negocio, que
representa sus patrones de comportamiento.
Modelo FÍSICO del DWH se organiza en:
a) Tablas Fuentes
Por ejemplo la tabla D_Cliente donde se cargan desde fuente externa (planilla xls)
los valores/datos de la Dimensión Cliente

b) Tablas ODS o Staging Área (capa intermedia entre las tablas fuente y el
DataWarehouse)
Para transformar los datos al formato y estructura necesaria para el modelo desnormalizado
del DataWarehouse y sus Datamarts.
Por ejemplo la tabla ODS_D_Cliente donde se cargan las transformaciones necesarias
para el Cliente
c) Tablas DataWarehouse
Tablas Dimensiones comunes DT TIEMPO
Tablas Hechos HT_VENTAS
Datamarts (estrella o copo de nieve) se forma a partir de un hecho y sus dimensiones.

DataWarehouse (DWH) y DataMart

DWH almacena un conjunto de información no volátil (información que no cambia)


recopilada desde Bases de Datos Operacionales. Para el DWH la información es filtrada,
procesada y correctamente organizada para brindar una estructura confiable de forma que
las consultas y reportes permitan o ayuden a la toma de decisiones de la empresa. El
DataWarehouse es una Bodega de Datos, que contiene datos históricos que servirán para
los respectivos análisis para la toma de decisiones.

Data Mart es un subconjunto de datos de un DataWarehouse:


● Una BD dimensional está compuesta por varias estrellas en las que las dimensiones
y hechos pueden ser compartidos
● A cada estrella se conoce como Data Mart

DataWarehouse "UNIVERSIDAD"
DataWarehouse "UNIVERSIDAD" compuesto por dos DataMart (estrellas)
"ESTUDIANTES INSCRIPTOS" para el análisis de Permanencia/Abandono Inscriptos por
Semestre
"ESTUDIANTES EGRESADOS" para el análisis de Egresados que comparten las
Dimensiones: Carrera, Generación, Estudiante y Tiempo
Requerimiento: Reporte analitico

Con un ejemplo sencillo vamos a diseñar/implementar el almacén de datos (base de datos


corporativa) para realizar análisis BI de la "GESTION ACADEMICA" para el Cliente
"UNIVERSIDAD" con el siguiente reporte analítico.

Para el reporte Analítico se identifica


¿Qué se analiza?
Permanencia de Estudiantes
¿Qué se mide?
Cantidad estudiantes inscriptos cada semestre
¿Cómo se agrupa la información?
Carrera
Generación
Semestre
¿Qué contiene cada Grupo?
Carrera TTI, Lechería
Generación G13, G14, G15
Semestre S1,52,53,54

HECHOS
¿Qué se analiza?
Analiza: Evolución de Permanencia/Abandono de Estudiantes
¿Qué se mide?
Mide: Cantidad de Estudiantes Inscriptos cada semestre.

DIMENSIONES
¿Cómo se agrupa la información?
● Carrera
● Generación
● Semestre
Hecho y Dimensiones
Para nuestro análisis vamos a diseñar un modelo dimensional con esquema de estrella,
donde hay una tabla principal del hecho: Inscriptos y un conjunto de tablas de Dimensiones:
Carrera, Generación, Semestre, Tiempo y Estudiante, que se relacionan con la tabla de
Hechos-Inscriptos.

El modelo conceptual de INSCRIPTOS en el almacén de datos contiene:


НЕСНО: Objeto del ANÁLISIS
¿Qué se analiza? Estudiantes
¿Qué se mide? Cantidad estudiantes inscriptos cada semestre
DIMENSIONES: Como se agrupa la información?
Carrera
Generación
Semestre
Tiempo (Semestre_fecha en el archivo Fuente xls)
Estudiante (Documento en el archivo Fuente xls)
Clave de Negocio y Subrogada (SK)
En general la Tabla de DIMENSIÓN tiene 3 columnas
Clave de negocio (business key)
Descripción de la clave de negocio
Clave Subrogada (subrogate key)

Clave de negocio (business key)


Clave PRINCIPAL del NEGOCIO, es la clave que el
cliente reconoce en su negocio.
Por ejemplo para Carrera : Alimentos, Lechería.
Descripción de la clave de negocio:
Texto que describe la clave del negocio

Clave subrogada (subrogate key) SK


- No tiene ningún significado a nivel de negocio, es el identificador INTERNO que se
usa para identificar de forma única los registros de la dimensión.
- Es la CLAVE PRIMARIA de la tabla Dimensión: numérico y autoincremental
- Con la clave SK de la dimensión se construye la relación entre la tabla hecho y la
dimensión, creando la clave FK de referencia del hecho a la dimensión.

La Clave PRIMARIA de la TABLA DIMENSIÓN


NO es la clave de negocio (business key)
Es la Clave subrogada (subrogate key)

VENTAJAS de la Clave subrogada (subrogate key) SK


Lógica de negocio no está en la clave SK: queda protegida la SK ante cambios en los
valores de la Clave del NEGOCIO (business key).

Base de datos corporativa no dependerá de la codificación interna de la Clave del


NEGOCIO (business key).

La clave SK, al ser numérica:


- Se genera rápidamente en la BD corporativa.
- Hace que las consultas sean más eficientes ya que el manejo y mantenimiento de
los índices numéricos es más sencilla.
Tabla Dimensión (DT)
En general, para Tabla de DIMENSIÓN, se define:
Tabla DT_dimension
Columna Clave subrogada SK_dimensión INTEGER
NOT NULL Clave de negocio Dimension_PK VARCHAR(n)
NOT NULL Descripción de la clave de negocio Dimension_DESC VARCHAR(n) NOT
NULL
Restricción (Constraint) PRIMARY KEY por columna SK_dimension

Diferenciar Columna Dimension_PK que es la Clave del Negocio


con Restricción Clave PRIMARIA por la columna SK_dimension

Para la tabla de la Dimensión Carrera se define:


Tabla DT_carrera

Columna Clave subrogada SK_carrera INTEGER NOT NULL


Clave de negocio carrera_PK VARCHAR(50) NOT NULL
Descripción clave de negocio carrera_DESC VARCHAR(100) NOT
NULL

Restricción (Constraint)
PRIMARY KEY por la columna SK_carrera
Tabla Dimension DT_CARRERA
Comando SQL para crear la Tabla DT_Carrera
CREATE TABLE DT_CARRERA(
SK_CARRERA INTEGER NOT NULL PRIMARY KEY,
CARRERA_PK VARCHAR2(50) NOT NULL,
CARRERA_DESC VARCHAR2(100) NOT NULL
)
TABLESPACE "USERS" ;

Restricciones (CONSTRAINT) de la Tabla DT_Carrera

DT_ESTUDIANTE y DT_TIEMPO
DIMENSIÓN ESTUDIANTE

Tabla DT_Estudiante
Columna Clave subrogada
SK_Estudiante INTEGER NOT NULL
Clave de negocio
Estudiante_PK VARCHAR2(50) NOT NULL

Contiene el documento del estudiante


(*)No se registra descripción para la dimensión Estudiante

Restricción (Constraint)
PRIMARY KEY por columna SK_estudiante
DIMENSIÓN TIEMPO

Clave subrogada (subrogate key) SK


-Identificador único registrando la fecha en formato numérico yyyymmdd.
Por ejemplo para la fecha 20/10/2014 se registra en SK el número 20141020
La fecha en formato numérico simplifica el proceso de carga ETL

Tabla DT_Tiempo
Columna Clave subrogada SK_Tiempo INTEGER NOT NULL
Clave de negocio FECHA DATE NOT NULL

(*)No se registra descripción para la dimensión tiempo

Restricción (Constraint)
PRIMARY KEY por columna SK_tiempo

(*)La clave de negocio (Dimension_PK) es el valor que se muestra en los reportes de


análisis y la descripción (Dimension_DESC) es para detallar el significado de la clave del
negocio.
Ejemplo: Para la dimension Carrera, la clave de negocio TTI tiene como descripción
"Tecnicatura de Tecnología de la Información"
Las dimensiones Estudiante y Tiempo tienen una clave de negocio, documento y fecha
respectivamente, que no necesitan detallar su significado.
Para identificar el contenido de la columna Estudiante_PK se le asigna un COMENTARIO a
la columna.
Ejecutando el siguiente comando:
COMMENT ON COLUMN DT_ESTUDIANTE.ESTUDIANTE_PK IS 'Documento del
estudiante';
Tabla Hecho (HT)
Para cada Tabla de HECHO se define:
Nombre Tabla HT_hecho
Una columna por cada Dimensión
SK_Dimension1
...
SK_DimensionN
Una columna para cada
medida/métrica
Medida1
...
MedidaN

Restricción de Referencia/externa (Foreign Keys):


La integridad referencial de la tabla hecho se garantiza con las claves
FK que conectan el hecho a la clave primaria de la dimensión (columna
SK_dimension).
En la tabla Hecho, para cada Dimensión se define una clave FK
que hace referencia a la clave principal (columna SK) de la dimensión
FK_Hecho_Dimension
FOREIGN KEY (SK_Dimension)
REFERENCES DT_dimension(SK_dimension)

CLAVE PRIMARIA es COMPUESTA por aquellas columnas SK


de dimensiones que identifican de forma única el registro de la tabla
de HECHOS:
SK_Dimension1
SK_Dimension2
SK_Dimension3
SK_Dimension4

Tabla de hechos. Contiene indicadores del modelo de Inteligencia de Negocio.

Tablas de Hechos: Son las que almacena las Medidas del negocio, las cuales dan sentido al
análisis dimensional. Las principales características de las tablas de hechos son:
● Almacenan más del 97% de la información del Data Warehouse.
● El Crecimiento es constante y dependerá de las estrategias de carga de datos.
● La información no es actualizable, una vez insertada esta debería ser de solo
lectura.
● No deben permitir valores nulos.
Tabla Hecho HT_INSCRIPTOS
Tabla HT_INSCRIPTOS - Almacena las medidas del negocio a analizar
COMANDO SQL - CREATE TABLE HT_INSCRIPTOS

Clave PRIMARIA - HT_INSCRIPTOS


CLAVE PRIMARIA de la Tabla HT_INSCRIPTOS está COMPUESTA
por columnas SK de dimensiones que identifican de forma única
el registro de INSCRIPTOS, aplicando la regla de negocio
"Un estudiante está inscripto SÓLO en una
carrera/generación/semestre"
SK CARRERA
SK GENERACION
SK SEMESTRE
SK ESTUDIANTE

COMANDO SQL - CREACION CLAVE PRIMARIA


ALTER TABLE HT_INSCRIPTOS
ADD CONSTRAINT PK_INSCRIPTOS PRIMARY KEY
( SK_CARRERA,
SK_GENERACION,
SK_SEMESTRE,
SK_ESTUDIANTE);
Complemento
DWH - UNIVERSIDAD

En nuestro curso vamos a construir el DWH "UNIVERSIDAD" con las siguientes


características
1) ESQUEMA ESTRELLA

2) DIMENSIONES DESNORMALIZADAS
En el esquema de estrella, las jerarquías de la dimensión no se registran en tablas
adicionales.
Por ejemplo la dimensión ESTUDIANTE podría incluir la jerarquía PAIS con el NOMBRE del
país.
En este caso se incluiría una columna PAIS en la tabla DT ESTUDIANTE y no se crearía
una tabla con la lista de PAISES.
3) HECHO CON CLAVE PRIMARIA
Las columnas de la tabla de HECHO
Claves subrogadas SK de dimensiones
Medidas del hecho,
son numéricas, lo que hace que la tabla hecho se caracterice por :
-Tamaño de cada registro: Pequeño
-Cantidad de registros: Grande
La clave PRIMARIA PK del HECHO es compuesta por claves Subrogadas SK_dimension
que se relacionan con las tablas de dimensiones.
4) ORGANIZACIÓN DE LA DE CARGA DEL HECHO
En el DWH Universidad tenemos:
Forma de carga:
Instantánea, o sea una "fotografía del momento"
Momento/periodo a cargar
DataMart "ESTUDIANTES INSCRIPTOS"
Semestral
DataMart "ESTUDIANTES EGRESADOS"
Anual
ESQUEMA ESTRELLA

ESQUEMA ESTRELLA DIMENSIONES DESNORMALIZADAS

Las principales características del esquema Ventajas


de estrella:
- Estructura simple fácil de entender - Consultas más simples para la
esquema lógica de reportes de negocios
- Optimizar el rendimiento de la
- Consultas efectivas poca cantidad consulta para informes de sólo
de JOIN de Tablas lectura
- Agregación/Agrupamiento de datos
- Es el más utilizado para DWH más rápidos
- Está incluido en casi todas las - Construir de manera eficiente los
herramientas de inteligencia de cubos OLAP para los reportes
negocio (BI)
Desventajas
- Es más fácil de usar y por lo general
se obtienen mejores resultados para - La principal desventaja es que la
consultas analíticas. integridad de datos no se aplica.
- La integridad de datos en el DWH
se garantiza en la carga controlada
por medio del procesamiento/carga
por lotes/periodos

DIMENSIONES DESNORMALIZADAS
DIMENSIONES DESNORMALIZADAS - ESQUEMA DE ESTRELLA
La dimensión ESTUDIANTE incluye columna PAIS con
el NOMBRE del país, por ejemplo
PAIS
ARGENTINA
BRASIL
URUGUAY
DIMENSIONES DESNORMALIZADAS - ESQUEMA COPO DE NIEVE
Se crea la tabla DT_PAIS con la lista de referencia de todos los paises, por ejemplo
SK_PAIS PAIS
1 ARGENTINA
2 BRASIL
3 URUGUAY
La tabla DT_ESTUDIANTE se relaciona (FK) con la tabla DT_PAIS por la columna SK_PAIS

Clave Primaria - Tabla Hecho


TABLA HECHO CON CLAVE PRIMARIA
En el DWH UNIVERSIDAD se crea , para la tabla de HECHO, su Clave PRIMARIA PK
compuesta por las claves Subrogadas SK_dimension que son numéricas y se relacionan
con las tablas de dimensiones.
Se usa PK en Hechos para evitar la duplicación, garantizar UNICIDAD.

La Clave primaria PK en la tabla HECHO NO es obligatoria cuando no existe otra tabla que
se relacione/referencie a la PK de la tabla HECHO.
La clave PK de la tabla Hecho NO se usa en los join de las consultas del DWH, ni en los join
de los cubos, solo se usa para garantizar la integridad de datos.
RENDIMIENTO: CONSULTA o CARGA
El DWH tiene como requerimiento
Principal -Rendimiento optimo de las consultas
Secundario -Rendimiento de la carga. Secundario
Desventaja de crear PK en Hechos
En las cargas masivas, gran volumen de datos, el rendimiento de la carga se ve afectado
cuando existe PK en el hecho (90% del DWH son los hechos) porque se debe comprobar la
PK cada vez que se inserta un registro en el HECHO (para que cada Insert en la tabla
Hecho se hace un Insert en el índice que controla la
clave PK).
Si la tabla de hechos contiene miles de registros, NO hace la diferencia en la carga la PK ,
pero si la tabla de hechos contiene millones de registros, SI hace una gran diferencia.
Existen DWH que realizan el control unicidad/duplicidad de la tabla HECHO en el proceso
de carga de datos ETL y NO crean CLAVE PRIMARIA para la tabla de HECHO.
Para mejorar el rendimiento de la carga cuando se usa PK en el Hecho, se puede realizar
"inserciones particionadas" creando PARTICIONES (organización física de tabla y de
índices) de forma que los registros a cargar estén en una misma partición.

ORGANIZACIÓN DE LA CARGA
FORMA
Instantánea
Instantánea de un periodo/momento determinado, es una "fotografía del momento", donde
el momento es el período determinado, por ejemplo, los ESTUDIANTES EGRESADOS en
el año.
Incremental
Acumulación de instantáneas para mostrar la actividad de un proceso, por ejemplo
ESTUDIANTES EGRESADOS ACUMULADOS.
MOMENTO/PERIODO
Anual
Una carga al año
Semestral
Dos cargas en un año
Mensual
Seis cargas en un año
DWH UNIVERSIDAD
Forma de carga a usar:
Instantánea, o sea una "fotografía del momento"
Momento/periodo a cargar
DataMart "ESTUDIANTES INSCRIPTOS" Semestral
DataMart "ESTUDIANTES EGRESADOS" Anual
Almacén de Datos: ODS y DWH
ODS- Almacén de datos intermedio/temporal:
ODS - Operational Data Store
Se cargan los datos desde las fuentes de información: Datos Operacionales y/o Planillas.
Es temporal: se borra cada vez que se hace una nueva carga.

DWH - Almacén de Datos Corporativos:


DWH - DataWareHouse
Información unificada, depurada y consolidada para el análisis.

Características del Almacén de Datos DWH:

● Orientado a Temas:
Los datos son organizados por temas para facilitar el entendimiento a los usuarios.
Todos los datos relativos a una misma "entidad" quedarán en una tabla.
● Integrado:
Debido a que la información procede desde distintos sistemas, es tarea del DW
integrar las diversas fuentes y normalizar los datos.
● Histórico:
Los cambios en los datos relevantes deben quedar registrados, para luego poder
consultarlos en diversos momentos en el tiempo.
● No Volátil:
Una vez introducida la información, debe quedar almacenada y disponible en
formato solo lectura.

Tablas del Almacén de Datos:

● Tabla de Hechos:
Almacena los indicadores del negocio (datos numéricos), tanto básicos como
elementos calculados.

● Tabla de Dimensiones:
Almacena los datos descriptivos, por lo general son tablas con un porcentaje muy
bajo de filas en relación a las tablas de Hechos, pero pueden contener muchas más
columnas.

Una correcta y completa definición de campos en la tabla de dimensiones puede


ayudar a realizar análisis robustos sobre los datos.

Dimensión: Atributos y jerarquías.


Las dimensiones pueden contener, además de la clave del negocio, atributos, por ejemplo,
la dimensión tiempo puede tener los siguientes atributos para cada fecha:
Año, Trimestre, Mes, Semana, Día
Los atributos se organizan en jerarquías, que son los niveles para analizar/agrupar la
información en el cubo del modelo dimensional.
Por ejemplo para dimensión Tiempo se pueden organizar
las siguientes jerarquías:
Año - Mes - Día.
Semana - Día.
Año - Trimestre - Mes - Día.

ODS - Operational Data Store, tiene como objetivos:


- Asegurar la Integridad y calidad de los Datos en el proceso de carga ETL
- Unificar la clave de negocio de aquellas dimensiones que se cargan desde distintas
fuentes con distinta forma de representar la dimensión, por ejemplo, la Dimensión
Sexo se encuentra codificada en la fuente de 3 formas distintas:
Codificación 1 F M
Codificación 2 M H.
Codificación 3 o 1
- Normalizar los valores de la clave del Negocio, convirtiendo a mayúscula su
contenido y acordar si con o sin acento.

ODS - Datos intermedios/temporales


No almacena los datos históricos finales, contiene datos intermedios/temporales para cada
carga.

Los datos se borra cada vez que se hace una


nueva carga.

Sobre los datos cargados en ODS se realizan transformaciones, limpieza/depuración de


datos y controles de integridad referencial.

La carga a ODS se realiza con determinada frecuencia: anual, mensual, semanal o diaria,
según las necesidades del cliente.

DWH - DataWareHouse - Almacén de Datos Corporativo


Los datos al DWH se cargan desde el almacén de datos ODS.
Contiene datos históricos orientados a la explotación analítica de la información.

El procesos de transformación e integración ya está en el ODS, por eso NO es necesario


repetirlo en el DWH - Almacén Corporativo.

Auditoría. En la mayoría de las tablas se incorporan columnas de auditoría: fecha y usuario


de la carga.

Las herramientas de BI, para visualizar los reportes analítico realizan las consultas al
DWH-Almacén de De Corporativo a través de los cubos de información OLAP
Proceso ETL

● Extracción: Adquirir datos de 1o más fuentes


● Transformación: Cambiar la forma y contenido de los datos
● Loading (Carga): cargar los datos en los repositorios y el DWH

El proceso ETL (Extract, Transform and Load = «extraer, transformar y cargar») se realiza
en tres fases
Fase 1-Extracción desde la Fuente de información a ODS
Fase 2-Transformación en ODS
Fase 3-Carga a DWH desde ODS
El Proceso ETL permite cargar datos desde múltiples fuentes, reformatearlos,
depurarlos/limpiarlos para hacer la carga al DWH. El proceso ETL es clave para lograr que
los datos extraídos en forma asincrónica desde orígenes heterogéneos se integren en el
entorno homogéneo del DWH.

ETL-Fase 1-Extracción a ODS


La extracción desde la fuente convierte los datos a un
formato requerido para iniciar el proceso de
transformación.

Se analizan los datos extraídos, se chequea y verifica las inconsistencias. De existir


inconsistencias se deben modificar las fuentes y cargar los datos nuevamente, borrando los
datos cargados anteriormente ya que el ODS es temporal.

Los datos desde las fuentes se cargan directamente en las tablas FUENTES del ODS
ETL-Fase 2 -Transformación a ODS

En la fase de transformación del ETL se aplican las reglas de negocio o funciones sobre los
datos extraídos para convertirlos en los datos que serán cargados al DWH

Ejemplos de transformaciones:
- Recodificar códigos
Por ejemplo, si la fuente almacena "H" para Hombre y "M" para Mujer y la dimensión
en DWH tiene F para Femenino y M para Masculino

- Codificar valores libres, por ejemplo la dimensión Estudiante se codifica a partir de la


columna Documento de la tabla de Hechos

- Obtener nuevos valores aplicando función , por ejemplo una función para obtener el
semestre de inscripción del estudiante

- Normalizar valores de dimensiones transformando a mayúscula los valores con la


función UPPER

ETL-Fase3 -Carga (Load) a DWH


La fase de carga es el momento en el cual los datos de la
fase anterior
(transformación) desde ODS son cargados en el DWH.
Desde DWH se forman los Cubos de Información para los
reportes de análisis y
cuadros/tableros de mando.

RECOMENDACIÓN: Crear almacén de datos


intermedios ODS y
almacén de datos corporativos DWH en bases de datos
diferentes
para garantizar que las cargas y transformaciones en
ODS no
afecten el tiempo de respuesta de las consultas en DWH.
En nuestro curso, para facilitar el trabajo, usaremos la
misma base
de datos = esquema para cargar datos a ODS y DWH.
Se define/acuerda la siguiente Nomenclatura de las tablas

Se recomienda grabar comentario para describir/informar Tablas y Columnas


Por ejemplo:

COMMENT ON TABLE D_CARRERA IS 'Dimensión Carrera FUENTE';


COMMENT ON TABLE ODS_D_CARRERA IS 'Dimensión Carrera ODS';
COMMENT ON TABLE DT_CARRERA IS 'Dimensión Carrera DWH';
COMMENT ON COLUMN ODS_D_CARRERA.CARRERA IS 'Clave del Negocio -
Dimensión Carrera';

PROCESO ETL - Tablas

En el proceso ETL se crean las siguientes tablas


Fase 1 - Tablas Fuentes
Fase 2 - Tablas ODS
Fase 3 - Tablas DWH

La dimensión ESTUDIANTE, en la fase 1- Extracción, NO se carga desde una hoja de la


planilla fuente como las otras dimensiones. Se crea a partir de la columna Documento de la
tabla de Hechos.

La dimensión TIEMPO se crea en la Fase 3-Carga.

Extracción de Datos a ODS - Carga desde la FUENTE


1) Importar Hoja a Tabla en almacén ODS
Desde Hoja Grab en Tabla ODS
DIM_Carrera D_Carrera
DIM_Generacion D_Generacion
DIM_Semestre D_Semestre
Inscriptos H_Inscriptos
2) Dimensión D_Estudiante
Se construye a partir de la columna documento de la tabla H_Inscriptos
3) Dimensión D_Tiempo
NO se usa tabla D_tiempo en ODS, la dimensión Tiempo se carga en DWH en la 3 del
ETL.

SQL - Predicado DISTINCT


DIMENSION ESTUDIANTE
Dimensión D_Estudiante se construye a partir de la columna DOCUMENTO de la tabla
H_Inscriptos, ya que en la fuente = planilla no se entrega en una hoja DIM_Estudiante como
otras dimensiones (DIM_carrera,.)
La dimensión ESTUDIANTE tiene como clave del negocio el DOCUMENTO del estudiante.
Se crea la dimensión ESTUDIANTE - tabla D_Estudiante a partir de la consulta a la tabla de
hecho H_INSCRIPTOS que devuelva los valores distintos (DISTINCT) de la columna
DOCUMENTO.

PREDICADO DISTINCT
Para listar los valores únicos, sin repetidos, de la columna Documento se usa el predicado
DISTINCT que se escribe después del SELECT y antes de las lista de columnas
SELECT DISTINCT columna FROM tabla;
Consulta los valores únicos, sin repetidos, de la columna DOCUMENTO de la tabla
H_Inscriptos
SELECT DISTINCT documento FROM H_Inscriptos;
SQL - Subconsulta con EXISTS
En la fase de EXTRACCION se debe controlar/Verificar consistencia de datos/valores
Controlar que los valores de cada dimensión en la tabla de Hecho exista en la tabla de la
Dimension correspondiente cargadas desde la hoja DIM_dimension
Por ejemplo los valores cargados en la columna CARRERA de la tabla H_INSCRIPTOS
deben existir en la tabla de la dimension D_CARRERA.
Para controlar/Verificar consistencia de datos vamos a construir Consulta SQL que
contiene
-Subconsulta
-Condición EXISTS

SUBCONSULTA:
Es un comando SELECT dentro de otro SELECT (consulta principal) en la cláusula WHERE
o en el FROM de la consulta principal.
Cuando se ejecuta una consulta con subconsulta, la subconsulta se ejecuta para cada
registro de la consulta principal.

EXISTS: Es un operador de CONDICION que se usa en el WHERE y está asociado a una


subconsulta
EXISTS (Subconsulta)
Devuelve Verdadero
cuando la subconsulta SI devuelve registro
Devuelve Falso
cuando NO devuelve ningún registro

NO EXISTS: Es la negación de EXISTS,


NOT EXISTS (Subconsulta)
Devuelve Verdadero
cuando la subconsulta NO devuelve registro
Devuelve Falso
cuando la consulta SI devuelve registro.
SQL - Vista - Consulta Almacenada
Con el objetivo de almacenar en la BD la Consulta de Control de la Dimensión CARRERA
se utiliza en SQL el tipo de objeto VISTA.
VISTA: Almacenar la consulta en la BD
Para almacenar una consulta en la BD se usa el tipo de objeto llamado VISTA.
La Vista nos permite guardar en la BD una consulta para:
- Usarla cada vez que sea necesario, es de uso común para todos los desarrolladores
- Hacer Mantenimiento centralizado de de la consulta en un único lugar
Comando para crear una Vista
CREATE OR REPLACE VIEW Vista_nombre
AS
SELECT columnas
FROM tablas
WHERE condiciones
;
La vista no puede contener ORDER BY

PERMISO PARA CREAR VISTAS


Al usuario UNIVERSIDAD se le debe asignar permiso para crear vistas (CREATE VIEW).
Para asignar el permiso debe:
- Conectarse con usuario Administrador (DBA) SYSTEM
- Asignar el permiso (GRANT) para crear vistas (CREATE VIEW) al usuario
UNIVERSIDAD (TO UNIVERSIDAD)
con el siguiente comando:
GRANT CREATE VIEW TO UNIVERSIDAD;
Casos de Inconsistencias en la FUENTE
Caso 1-En la tabla Hecho hay una valor de la Dimension que NO existe en la tabla
dimensión

Causa a - Falto registrar ese valor de la dimension en la tabla D_dimension


Solución a: Modificar el archivo fuentes xls Hoja dimension
Cargar nuevamente la dimensión modificada
- Borrar tabla de DIMENSION
- Importar datos nuevamente a la tabla DIMENSION

Causa b - Dimensión mal escrita en Hecho, por ejemplo: Leche en lugar de Lechería
Solución b: Modificar archivo fuentes xls Hoja Hecho
Cargar nuevamente el hecho modificado
- Borrar tabla de HECHO
- Importar datos nuevamente a la tabla de
Caso 2- Existe un valor de la Dimension sin acento que existe en la tabla dimensión con
acento
Ejemplo: Lecheria en lugar de Lechería

Solución: Se arregla la inconsistencia en la siguiente Fase 2- Transformación, donde se


va a recodificar valores de la dimension con el fin de unificar los valores de la dimensión en
el hecho.

Para asegurar calidad de los datos y evitar inconsistencias en las fuentes se debe acordar
con el Cliente
- Estandarización de las fuentes. Se usa programación de macros de control de datos
en las planillas xls para evitar inconsistencias
- Cumplimiento de las reglas de negocio en los archivos fuentes.

Complemento
SQL - Construir GENERADOR de comando DESCRIBE
El Catalogo/Diccionario de Datos es el conjunto de tablas que contienen los METADATOS
(información) de los objetos de la Base de Datos
TABLA Diccionario CONTIENE Informacion de
all_users Usuarios de la BD
user_tables Tablas del usuario
all_tables Tablas de la BD
user_indexes Índices del usuario
all_indexes Índices de la BD
user_constraints Restricciones del usuario
all_constraints Restricciones de la BD

Se puede construir comando SELECT para GENERAR AUTOMATICAMENTE


comandos, por ejemplo, el comando que, para todas las tablas del usuario, describe la
estructura de cada tabla
DESCRIBE tabla;
Sin necesidad de escribir MANUALMENTE el comando DESCRIBE para cada tabla.
En este caso usamos la tabla user_tables del Catalogo/Diccionario de Datos
Extraccion - Control de cantidad
Controlar/Verificar que la cantidad de registros importados/cargados en cada tabla
fuente coincide con la cantidad de filas en la planilla Fuente.

Por ejemplo, contar la cantidad de registros cargados en la tabla H_INSCRIPTOS

SELECT COUNT(*) H_INSCRIPTOS


FROM H_INSCRIPTOS;

y controlar/verificar que coincida con la cantidad de filas en la planilla


Fuente.

SQL - Generar comandos SELECT COUNT(*)


SANTIAGO DUARTE COR 

Área personal  Mis cursos  2021  2021-2S  Licenciatura en Tecnologías de la Información  Base de datos
corporativas__2021-2S - SEGUNDO SEMESTRE Grupo FBA  Semana 1  Tema 1 - Cuestionario

Comenzado el sábado, 30 de octubre de 2021, 02:11


Estado Finalizado
Finalizado en sábado, 30 de octubre de 2021, 02:15
Tiempo empleado 4 minutos 19 segundos
Calificación 5,00 de 5,00 (100%)


Pregunta 1 Correcta Puntúa 1,00 sobre 1,00

BDC-T-EM-008
Seleccione Verdadero o Falso para las siguientes afirmaciones sobre modelo dimensional

El modelo dimensional es una adaptación del modelo relacional para el almacén de datos VERDADERO
de BI, orientado a consultas

FALSO
El modelo dimensional NO usa Cubos/Consultas OLAP

En el Modelo dimensional los datos están desnormalizados para realizar consultas de alto VERDADERO
rendimiento

Modelo DIMENSIONAL compuesto por una tabla “de hechos” (fact) y un conjunto de tablas VERDADERO
llamadas “dimensiones“

Respuesta correcta
La respuesta correcta es: El modelo dimensional es una adaptación del modelo relacional para el almacén
de datos de BI, orientado a consultas → VERDADERO, El modelo dimensional NO usa Cubos/Consultas
OLAP → FALSO, En el Modelo dimensional los datos están desnormalizados para realizar consultas de alto
rendimiento → VERDADERO, Modelo DIMENSIONAL compuesto por una tabla “de hechos” (fact) y un
conjunto de tablas llamadas “dimensiones“ → VERDADERO


Pregunta 2 Correcta Puntúa 1,00 sobre 1,00

BDC-T-EM-005
Seleccione la respuesta que corresponde 

Herramienta de BI Pentaho

Procesamiento analítico en línea OLAP

Proceso de Carga/Integración de Datos ETL

Almacén de Datos – Base Datos Corporativa DWH-DataWareHouse

Procesamiento de Transacciones en Línea OLTP

Respuesta correcta
La respuesta correcta es: Herramienta de BI → Pentaho, Procesamiento analítico en línea → OLAP, Proceso
de Carga/Integración de Datos → ETL, Almacén de Datos – Base Datos Corporativa → DWH-
DataWareHouse, Procesamiento de Transacciones en Línea → OLTP


Pregunta 3 Correcta Puntúa 1,00 sobre 1,00

BDC-T-EM-007
Para cada figura seleccione el Tipo de modelo dimensional que corresponde
Figura A

Figura B

Figura C


Modelo Estrella (Star) Figura A

Modelo 3FN Figura C

Modelo Copo de Nieve (Snowflake) Figura B

Respuesta correcta
La respuesta correcta es: Modelo Estrella (Star) → Figura A, Modelo 3FN → Figura C, Modelo Copo de Nieve
(Snowflake) → Figura B

Pregunta 4 Correcta Puntúa 1,00 sobre 1,00

BDC-T-EM-004
Seleccione Verdadero o Falso

VERDADERO
BI -Business Intelligence - Inteligencia de negocio usa Cubos de información

Base de Datos Corporativa se usa para la toma decisiones y análisis/inteligencia del VERDADERO
negocio

VERDADERO
Modelo Dimensional se construye con dimensiones que agrupan los hechos a analizar

FALSO
Base de datos corporativa tiene un Modelo de datos orientado a transacciones

Respuesta correcta
La respuesta correcta es: BI -Business Intelligence - Inteligencia de negocio usa Cubos de información →
VERDADERO, Base de Datos Corporativa se usa para la toma decisiones y análisis/inteligencia del negocio
→ VERDADERO, Modelo Dimensional se construye con dimensiones que agrupan los hechos a analizar →
VERDADERO, Base de datos corporativa tiene un Modelo de datos orientado a transacciones → FALSO


Pregunta 5 Correcta Puntúa 1,00 sobre 1,00

BDC-T-EM-006
Seleccione, para cada característica, cual corresponde a OLTP y cual a OLAP

Predomina la Consulta OLAP

BD Normalizada OLTP

Dato Histórico OLAP

Estructura Multidimensional OLAP

Actividad operativa OLTP

Respuesta correcta
La respuesta correcta es: Predomina la Consulta → OLAP, BD Normalizada → OLTP, Dato Histórico → OLAP,
Estructura Multidimensional → OLAP, Actividad operativa → OLTP

◄ Tema 3 - Complemento

Ir a...
Tema 2 - Cuestionario ►


SANTIAGO DUARTE COR 

Área personal  Mis cursos  2021  2021-2S  Licenciatura en Tecnologías de la Información  Base de datos
corporativas__2021-2S - SEGUNDO SEMESTRE Grupo FBA  Semana 1  Tema 2 - Cuestionario

Comenzado el sábado, 30 de octubre de 2021, 02:15


Estado Finalizado
Finalizado en sábado, 30 de octubre de 2021, 02:17
Tiempo empleado 1 minutos 51 segundos
Calificación 5,00 de 5,00 (100%)

Pregunta 1 Correcta Puntúa 1,00 sobre 1,00

Para el reporte analítico se identifican los siguientes items:

Seleccione una:
a. Que se analiza?  Como se mide? Cuantos grupos de información? Que contiene cada Grupo? 

b. Cómo se analiza?  Que se mide? Cuantos grupos de información? Que contiene cada Grupo? 

c. Que se analiza?  Que se mide? Como se agrupa la información? Que contiene cada Grupo? 

d. Como se analiza?  Como se mide? Como se agrupa la información? 

Respuesta correcta
La respuesta correcta es: Que se analiza?  Que se mide? Como se agrupa la información? Que contiene
cada Grupo?
Pregunta 2 Correcta Puntúa 1,00 sobre 1,00

En un Reporte Analítico, los hechos determinan que se analiza y que se mide.

Seleccione una:
Verdadero
Falso

La respuesta correcta es 'Verdadero'

Pregunta 3 Correcta Puntúa 1,00 sobre 1,00

La clave subrogada (SK) es el identificador INTERNO que se usa para identificar de forma única los
registros de la dimensión.

Seleccione una:
Verdadero
Falso

La respuesta correcta es 'Verdadero'

Pregunta 4 Correcta Puntúa 1,00 sobre 1,00

La Clave Primaria de la tabla dimension es la clave de negocio.

Seleccione una:
Verdadero
Falso

No es la clave de negocio, lo correcto es que es la clave subrogada

La respuesta correcta es 'Falso'


Pregunta 5 Correcta Puntúa 0,50 sobre 0,50

La tabla dimensión está conformada por 4 campos, y tiene un campo PK y otro FK.

Seleccione una:
Verdadero
Falso

Está formada por 3 campos y no tiene FK

La respuesta correcta es 'Falso'

Pregunta 6 Correcta Puntúa 0,50 sobre 0,50

La tabla HECHOS está conformada por una columna por cada dimensión y otra por cada métrica.

Seleccione una:
Verdadero
Falso

La respuesta correcta es 'Verdadero'

◄ Tema 1 - Cuestionario

Ir a...
Tarea Obligatoria ►
Tema 4 - Transformaciones
Transformación de Dimensión en ODS

Tecnaldgica

En la Fase 2 del proceso ETL

se crean las tablas ODS a

partir de las

TRANSFORMACIONES a las

Tablas Fuentes en ODS

EXTRACCION

H_INSCRIPTO

DCARRERA

D_GENERACION

D SEMESTRE

D ESTUDIANTE

Tablas ODS

TRANSFORMACION

ODS H_INSCRIPTO

ODS_D CARRERA

ODS D GENERACION

ODS D_SEMESTRE

ODS D_ESTUDIANTE

Fuente

Inscriptos.xls

Hoja DIM_Carrera

Hoja DIM_Generacion

Hoja DIM_Semestre

Select

tablas Fuentes importadas


desde planilla xls Distinct

Para cada DIMENSION se carga desde Tabla Fuente Para la Dimensión ESTUDIANTE, se carga

D_DIMENSION a la Tabla ODS D_DIMENSION D_ESTUDIANTE

ODS D ESTUDIANTE

De Tabla Fuente

De Columna DIMENSION a Tabla

a columna DIMENSION_PK

De Columna

De Columna DOCUMENTO

DESCRIPCION ESTUDIANTE_PK

La dimensión ESTUDIANTE no tiene una

a columna

a Columna DIMENSION_DESC

Para Dimension CARRERA desde Tabla Fuente D_CARRERA

a Tabla ODS_D CARRERA

a columna CARRERA_PK

a Columna CARRERA DESC

Columna de DESCRIPCION

Clave de Negocio ESTUDIANTE_PK debe ser

UNICA para garantizar que no se repita la

lave

De Columna CARRERA

De Columna DESCRIPCION

Clave de Negocio CARRERA_PK debe ser UNICA para garantizar

D ESTUDIANTE ODS D ESTUDIANTE

que no se repita la clave D CARRERA D ODS D CARRERA

DOCUMENTO ESTUDIANTE PK

CARRERA

DESCRPOON
CARRERAPK

CARRERA DESC

DIMENSIONES-Transformaciones

-Normalizar los valores de la Clave de Negocio pasando a Mayús cula (UPPER) los valores.

Tabla Columna

D_dimension

H_hecho

dimension

dimension, dimension, .

-Eliminar posibles espacios en blanco al inicio y fin de los textos con la función TRIM(columna)

UTEC Transformación del Hecho en ODS

La tabla HECHO se carga, con las mismas columnas

desde TablaFuente H_INSCRIPTOS

ODS_H_INSCRIPTOS

HINSCRIPTOS D ODS H_INSCRIPTOS

CARRERA

GENERACION

SEMESTRE

SEMESTRE FECHA

0OCUMENTO

CARRERA

GENERACION

SEMESTRE

SEMESTRE FECHA

DOCUMENTO

а Tabla

Donde la columna SEMESTRE_FECHA

se transforma de FECHA (DATE) a


H_INSCRIPTOS

NUMERO (INTEGER)

ODS_H_INSCRIPTO en las tablas

HECHOS-Transformaciones

-Unificar codificación de una dimensión cuando el Hecho tiene diferente codificación

Por ejemplo dimensión CARRERA con el nombre de la carrera escrita con y sin acento

LECHERÍA

MECATRÓNICA

con acento

con acento

LECHERIA sin acento y

MECATRONICA sin acento y

En este caso hay que modificar

LECHERIA LECHERÍA

MECATRÓNICA

-Eliminar espacios en blanco al inicio y fin de los textos con la función TRIM(texto)

MECATRONICA a

-Transformar la fecha a numero:

La columna semestre_fecha en la tabla ODS_H_INSCRIPTOS es de tipo INTEGER

y se le asigna el numero yyyymmdd (añomesdia)

Por ejemplo para la fecha 20/10/2014 se asigna el numero 20141020

La columna semestre_fecha, en la carga a DWH, va a estar relacionada con la dimensión TIEMPO.

La tabla DT_tiempo se crea en la Fase 3 del ETL- carga DWH, con clave SK numérico

que NO es autoincremental

UTEC SQL Funciones: TRIM, RTRIM y LTRIM

Transformación: Eliminar espacios en blanco al inicio y fin de los textos

FUNCIONES para eliminar espacios en Blanco


RTRIM(texto)

Eliminar espacios en blanco a la derecha del texto, o sea, al final

LTRIM(texto)

Eliminar espacios en blanco a la izquierda del texto, o sea, al inicio

TRIM(texto)

Eliminar espacios en blanco al inicio y final de un texto

EJEMPLO:

Consulta SQL Resultado:

SELECT <A > |l'-B’ T

FROM DUAL

UNION

1 A > -B

SELECT RTRIM (' <A > ') Il'-B' T

A >-B

FROM DUAL

3 A > -B

UNION 4

CA >-B

SELECT LTRIM (' <A > ') Il'-B' T

FROM DUAL

UNION

SELECT TRIM (' <A > ') Il'-B' T

FROM DUAL

UTEC

Transformación DIMENSION a tabla ODS

veridad Telgia

2)Insertar registros en ODS D CARRERA desde D_CARRERA

con la siguiente Transformación:


-Normalizar valores de Clave de Negocio pasando su valor a

Mayúscula (UPPER) y eliminando espacios en blanco

TRANSFORMACION de DIMENSIONES

Transformación de tabla Fuente D_CARRERA a

tabla ODS_D_CARRERA

1)Crear tabla ODS_D_CARRERA

Clave de Negocio CARRERA_PK con valor UNICO

para asegurar que no se repita la clave

CREATE TABLE ODS D CARRERA

( CARRERA PK

CARRERA DESC

)3;

TRIM

INSERT INTO ODS_D_CARRERA

( CARRERA PK,

SELECT UPPER(TRIM(CARRERA), DESCRIPCION

CARRERA DESC)

VARCHAR2(50) UNIQUE,

VARCHAR2(100) FROM D_CARRERA

Consulta Restricciones de la tabla ODS_D_CARRERA

SELECT t.table_name tabla,

constraint_type clave,

column_name columna

user_constraints

user_cons_columns

WHERE t.constraint_name = c.constraint_name

TABLA CLAVE I COLUMNA

FROM t, ODS D_CARRERA U CARRERA_PK

AND t.table_name = 'ODS_D_CARRERA' order by 1,2


Datos en tabla Fuente D_CARRERA Datos Transformados en tabla ODS_D_CARRERA

SELECT * FROM ODS_D_CARRERA ORDER BY 1; SELECT * FROMD CARRERA ORDER


BY 1;

CARRERA DESCRIPCION I CARRERA_PK I CARRERA DESC

Alimenton Licenciatura en Análisie Alinentario ALIMENTOS Licenciatura en Análisis Alinentario

Energias Tecnólogo en Energias Renovables ENERGIAS Tecnólogo en Energias Renovables

Lecheria Licenciatura en Leche y Productos Lácteos LECHERIA Licenciatura en Leche y Productos Lácteca

Mecatzonica Iecnólogo en Mecatzonica MECATRONICA Tecnblogo en Mecatrónica

Prod Lechera Iecnólogo en Manejo de Sistenas de Producción Lechera PROD_LECHERA Tecnólogo en


Manejo de Sistenas de Producción Lechera

Tecnicatura en Tecnologias de la Información Tecnicatura en Tecnologias de la Información

UTEC PLSQL - Lenguaje de Programación

niversidad Te gia

Para cargar datos a las tablas de dimensiones ODS Lenguaje de programación en las

diferentes BD

ODS D_Dimension

crearemos un programa/procedimiento almacenado en

la Base de Datos que va a ejecutar las transformaciones

necesarias para la dimensión.

El programa queda grabado en la BD para

-ejecutarse cada vez que se carguen los datos

-hacer su mantenimiento en forma centralizada

ORACLE

SQL Server Potgresa

PUSa Transact sa

MysQ

stored procedures

Para Oracle, el lenguaje de programación es PL/SQL - Procedural Language/Structured Query Language


PL/SQL-es un lenguaje de programación de Tercera Generación (3GL) de la base de datos de Oracle,

que contiene:

-Estructuras de programación (datos y control) “clásicas" de los lenguajes de 3GL como C++, Java,
PHP,etc

-Extensión procedural SQL que permite ejecutar comandos SQLen los programas PL/SQL interactuando

directamente con la BD

Para crear un programa/procedimiento se usa el siguiente comando

CREATE OR REPLACE PROCEDURE

Sintaxis BASICA para crear un procedimiento en PL/SQL

CREATE OR REPLACE PROCEDURE nombre_procedimiento

IS

BEGIN /* Comienzo del programa */

comando 1;

comando 2;

END nombre_procedimiento /* Fin programa */

ТЕC PLSQL – Procedimiento almacenado

idad ligi

Ejemplo de programa/procedimiento

CREATE OR REPLACE PROCEDURE ejemplo

IS

/* Comienzo del programa */

--Comando Nulo = NO se ejecuta nada

BEGIN

NULL;

END ejemplo /* Fin programa */

Hoja de Trabajo

18 CREATE OR REPLACE PROCEDURE ejemplo

Generador de Consultas
IS

BEGIN

MULL:

* Consenzo del prograna /

--Comando lulo - 0 se ejecuta nada 4.

ED ejemplo * Fin prograna /

Salida de Script DResultado de la Consulta

Tarea terminada en 0,154 s segundos

PROCEDURE EJEPLO compilado

Consultar/ver en el navegador de objetos el procedimiento EJEMPLO

I EJEMPLO d enIVERSIDAD~1

Código Dependencias Detalles Referencias Perfiles Errores Perm

Conexiones

Procedinientos

1 EJEMPLO

Q Buscar

reate or replace PROCEDURE ejemplo

IS

* Comienao del prograna /

--Comando Mulo- NO se ejecuta nada

BEGIN

ULLI

END ejenplo Fin programa /

TEC PLSQL – Compilación

Antes de EJECUTAR un programa PLSQL, al momento de

su creación / modificación, se COMPILA

COMPILAR: Es el proceso para revisar

Sintaxis de los comandos.


Cumplimiento de las reglas de escritura de un progra ma PLSQL.

Existencia de los objetos (tablas) que se usan en el programa.

Si el PLSQL fue creado en SQLDEVELOPER desde la Hoja de SQL

se RECOMIENDA

Ir al Navegador/Explorador de la izquierda de SQLDeveloper

Verificar el estado del PLSQL

En caso que el PLSQL este marcado en ROJO

debe COMPILAR el PLSQL desde el Navegador

con click derecho como se muestra en la imagen.

1 EEMPLO

System

UNIVERSDAD

Tablas (Fitrado)

Vistas

ndices

Paquetes

Código Permisos Detales IDependencias Errores Referencies P Si en SQLDEVELOPER, después


de

compilado el PLSQL en el Navegador,

sigue el ERROR se debe revisar su

QBuscar

1 B create or replace PROC ejemplo

IS

EGI Conenas del prograna

Procedimiento UNIVERSIDAD.EJEMPLO@UNIVERSIDAD

O Error(3,7): PLS-00103: Se ha encontrado el símbolo -

LLS ejecuta nada

ED ejenple Tia prograna

Procedimientos
Editar.

Exportar.

dos los Informes

Informes de Diccionario de

-nformes Definidos por el u

Infrermas de Modaiatr do

Depurar.

Compilar Cts-FB

UTEC

PLSQL – Error de compilación

ddligica

Caso de ERROR en la Compilacion

CREATE OR REPLACE PROCEDURE pruebaError oa de Trabeajo Generador de Consutas

IS

CREATE OR REPLACE PROCEDOE proebatrror

BEGIN MOLL O Faita el

D pruebatrror NULL --ERROR: Falta el

END pruebaError

Salida de Script

*BATarea terminada en 0,083 segundos

PROCEDURE PROEBAERROR complado

Errora: check compsler log

Para ver error de compilación del programa PLSQL al ejecutar el CREATE OR REPLACE PROCEDURE

Se ejecuta el comando

ERRORS

SHOW ERRORS;

Salida de Script
*BA Tarea terminada en 0,038 segundos

5/1 PLS-00103: Se ha encontrado el sinbolo "END" cuando se esperaba uno de los siguientes:

El mensaje de error de compilación indica

Numero de la línea con error 5/1 indica que el numero de la línea con error es 5

Texto del mensaje.de error PLS-nnnnn Se ha encontrado .

Importante: En el mensaje de error el numero de la línea indica el lugar de referencia para buscar el

problema. El error puede estar en esa línea o en la línea anterior..

Por ejemplo en este caso el mensaje indica la línea 5 y el problema esta en la línea 4

donde falta el ; en el comando NULL;

UTEC PLSQL – Carga Dimensión

Vamos a crear programa/procedimiento almacenado en la BD

para cargar la dimensión Carrera

Primero se acuerda la regla para el Nombre de procedimiento:

Después de compilado y grabado el

procedimiento en la BD, se puede ejecutar

el procedimiento

DESDE SQLDeveloper

EXECUTE P_ODS_D_CARRERA;

Iniciar con

CON despues

y al final nombre dimension a cargar D DIMENSION

ODS

Hoja de Trabajo Generador d

Nombre del Procedimiento P ODS D_CARRERA

Salida de Scrpt

*BA Tarea termi

bloque anónino tecainado

DESDE Otro programa (PL/SQL, Java, ..) CON


P ODS D_CARRERA;

P_ODS D_CARRERA

CREATE OR REPLACE PROCEDURE P ODS D_CARRERA

Crear Procedimiento

IS

-- Inicio del programa

/* Borrar los datos en ODS antes de cargar*/

DELETE FROM ODS_D_CARRERA;

/* Cargar Dimension Carrera */

INSERT INTO ODS_D_CARRERA

CARRERA PK,

CARRERA DESC

BEGIN

CALL P ODS D_CARRERA;

Consultar programas/procedimientos

del usuario (us er_procedures)

almacenados en la BD

SELECT OBJECT_NAME PROGRAMA

FROM USER PROCEDURES

ORDER BY 1; DResultado de la Consulta

SQL I Tode

SELECT UPPER(TRIM(CARRERA)),

DESCRIPCION

FROM D CARRERA PROGRAMA

1P ODS_D_CARRERA

COMMIT; -- Grabar registros

END P ODS_D_CARRERA; /* Fin del programa */


UTEC

Transformación HECHO a tabla ODS

edd a

HECHO Fuente-Planilla Inscriptos.xls HECHO Fuente en ODS -Tabla H_INSCRIPTOS

CARRERA I GENERACIONI SEMESTRE SEMESTRE FECHA DOCUMENTO

31/07/15

B.

Carrera Generacion Semestre Semestre Fecha Documento G1S S1 123456

G15 51 31/07/15 8234567

31/07/2015

31/07/2015

03/03/2013

TTI G15 51 123456

51 31/07/15 378923

G15 8234567 Lecheria G13 51 03/03/13 456789

Lecheria G13 s1 345678 Lecheria s2 10/07/13 4567e9

10/07/2013

03/03/2013

Lecheria G13 52 345678 Lecheria G13 53 05/03/14 456789

Mecatrónica G13 S1 3123456

Mecatrónica 10/07/2013 3123456 HECHO

en ODS - Tabla ODS_H_INSCRIPTOS G13 52

Carrera Generacion Semestre Semestre Fecha Documento

TTI G15 S1 20150731 123456

LECHERIA G13 S1 20130303 456789

LECHERIA G13 52 20130710 456789

LECHERIA G13 53 20140305 456789

MECATRONICA G13 S1 20130303 3123456

MECATRÓNICA
MECATRÓNICA

G13 52 20130710 3123456

G13 53 20140305 3123456

Transformaciones a realizar en la Tabla ODS_H_INSCRIPTOS

-Unificar codificación de la dimensión CARRERA con el nombre de la carrera con y sin acento

Transformar - Modificar CARRERA con acento

LECHERÍA

MECATRÓNICA

ENERGÍA

LECHERIA a

MECATRONICA a

ENERGIA a

-Transformar la columna semestre_fecha de tipo DATE a NUMERO para que contenga el numero
yyyymmdd

(añomesdia).

La columna semestre_fecha cuando se cargue a a DWH va a estar relacionada con la dimensión TIEMPO.

La tabla para la dimensión tiempo se va a crear en la Fase 3 del ETL al cargar el DWH.

JTEC SQL - CASE |

dT

TRANSFORMACIONES para ODS_H_INSCRIPTOS

1)Modificar la CARRERA para que se usen los

2) Transformar SEMESTRE_FECHA a NUMERO

yyyymmdd (añomesdia)

Se utiliza la funciones acentos

LECHERÍA

MECATRÓNICA

ENERGÍA

LECHERIA a
TO CHAR(fecha,formato) Convierte a TEXTO una fecha

TO NUMBER(texto)

La transformacion es:

MECATRONICA a

ENERGIA a Convierte a Numero un texto

Para esta modificación vamos a usar

TO NUMBER

(TO_CHAR(SEMESTRE_FECHA,'YYYYMMDD'))

el comando CASE.

CASE: Analiza casos según la condición del caso y cuando se

cumple la condición del caso, entonces devuelve el valor

correspondiente EJEMPLO

CASE es similar a usar varios "if",

por cada valor a devolver existe un "when... Then"

SI se cumple la condición en algún "where"

se ejecuta el "then"

si NO se cumple ninguna condición se ejecuta el "else".

CASE - SINTAXIS

SELECT syadate Hoy,

CASE

MEN syadate >- to_date ('01/01/2000', "dd/m/yyy')

THEN "Sigio 21

*Siglo 20 ELSE

D Siglo

FRCH DUAL :

esultado de la Consulta

CASE

SQL I Todas las Filas Recuperadas: 1 en 0,001 segundos

WHEN condicion 1 THEN DevuelveValor1 caso 1


HOY SIGLO

WHEN condicion 2 THEN DevuelveValor2 caso 2 1 07/03/16 Sigio 21

ELSE Devuelve valor Cualquier otro caso

END nombre_columna

UTEC SQL -

CASE

Para modificar la CARRERA, para que se usen los acentos,

H_INSCRIPTOS

ODS_H_INSCRIPTOS

de

usamos el siguiente comando CASE

CASE

WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

ELSE UPPER(TRIM(CARRERA))

"LECHERÍA'

"MECATRÓNICA

"ENERGÍA

= 'LECHERIA THEN

= 'MECATRONICA' THEN

= 'ENERGIA THEN

END CARRERA

La consulta con las dos transformaciones

Transformar CARRERA a mayúscula y con acento

Transformar la columna semestre_fecha a NUMERO yyyymmdd (añomesdia).

SELECT

CASE
UPPER(TRI M(CARRERA)) = 'LECHERIA

UPPER(TRI M(CARRERA)) = 'MECATRONICA THEN 'MECATRÓNICA'

UPPER(TRI M(CARRERA)) = 'ENERGIA'

UPPER(TRI M(CARRERA))

WHEN THEN 'LECHERÍA

WHEN

WHEN THEN 'ENERGÍA"

ELSE

END CARRERA,

UPPER(TRIM(GENERACION)),

UPPER(TRIM(SEMESTRE)),

TO NUMBER (TO CHAR(SEMESTRE FECHA,YYYYMMDD')) SEMESTRE_FECHA,

UPPER(TRIM(DOCUMENTO)) Carrera Generacion Semestre Semestre_Fecha Documento

FROM H_INSCRIPTOS; 20150731 2015 123456

LECHERIA 2013 20130303 456789

LECHERIA 2013 2. 20130710 456789

LECHERIA 2013 20140305 456789

MECATRONICA

MECATRÓNICA

2013 20130303 3123456

2013 20130710

20140305

3123456

MECATRONICA 2013 3123456

UTEC

PLSQL – Procedimiento para cargar Hecho

Crear procedimiento P ODS_H_INSCRIPTOS para cargar datos desde Fuente

H_INS CRIPTOS
CREATE OR REPLACE PROCEDURE P ODS H_INSCRIPTOS

IS

* Inicio del programa */

Crear tabla ODS_H_INSCRIPTOS

CREATE TABLE ODS H_INSCRIPTOS

BEGIN

/* Borrar los datos en ODS antes de cargar*/

DELETE FROM ODS_H_INSCRIPTOS;

* Comando IN SERT */

INSERT INTO ODS H_INSCRIPTOS

CARRERA VARCHAR2(20),

VARCHAR2(5),

VARCHAR2(5),

SEMESTRE_FECHA INTEGER,

VARCHAR2(20)

GENERACION

SEMESTRE

DOCUMENTO SELECT

CASE

THEN 'LECHERÍA' WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'

WHEN UPPER(TRIM(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA,

UPPER (TRIM(GENERACION)),

UPPER (TRIM(SEMESTRE)),

TO NUMBER (TO_CHAR(SEMESTRE_FECHA, 'YYYYMMDD'))

THEN 'ENERGÍA'

SEMESTRE_FECHA,
UPPER (TRIM(DOCUMENTO)

FROM H_INSCRIPTOS;

* Fin del programa */

END P_ODS_H_INSCRIPTOS;

Salida de Script x

*BA Tarea terminada en 0,327

PROCEDURE P_ODS_H_INSCRIPTOS coapilado

UTEC

PLSQL – Procedimiento para cargar Hecho

Crear procedimiento P ODS_H_INSCRIPTOS para cargar datos desde Fuente

H_INS CRIPTOS

CREATE OR REPLACE PROCEDURE P ODS H_INSCRIPTOS

IS

* Inicio del programa */

Crear tabla ODS_H_INSCRIPTOS

CREATE TABLE ODS H_INSCRIPTOS

BEGIN

/* Borrar los datos en ODS antes de cargar*/

DELETE FROM ODS_H_INSCRIPTOS;

* Comando IN SERT */

INSERT INTO ODS H_INSCRIPTOS

CARRERA VARCHAR2(20),

VARCHAR2(5),

VARCHAR2(5),

SEMESTRE_FECHA INTEGER,

VARCHAR2(20)

GENERACION

SEMESTRE
DOCUMENTO SELECT

CASE

THEN 'LECHERÍA' WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'

WHEN UPPER(TRIM(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA,

UPPER (TRIM(GENERACION)),

UPPER (TRIM(SEMESTRE)),

TO NUMBER (TO_CHAR(SEMESTRE_FECHA, 'YYYYMMDD'))

THEN 'ENERGÍA'

SEMESTRE_FECHA,

UPPER (TRIM(DOCUMENTO)

FROM H_INSCRIPTOS;

* Fin del programa */

END P_ODS_H_INSCRIPTOS;

Salida de Script x

*BA Tarea terminada en 0,327

PROCEDURE P_ODS_H_INSCRIPTOS coapilado

UTEC

Síntesis

eidad

DIMENSIONES-Transformaciones

-Normalizar los valores de la Clave de Negocio pasando a Mayúscula (UPPER) los valores.

Tabla Columna

D_dimension

H_hecho

dimension
dimension, dimension, ...

-Eliminar posibles espacios en blanco al inicio y fin de los textos con la función TRIM(columna)

HECHOS-Transformaciones

-Unificar codificación de una dimensión cuando el Hecho tiene diferente codificación

-Eliminar espacios en blanco al inicio y fin de los textos con la función TRIM(texto)

-Transformar la fecha a numero:

La columna semestre_fecha en la tabla ODS_H_INSCRIPTOS es de tipo INTEGER

y se le asigna el numero yyyymmdd (añomesdia)

CASE: Analiza casos, es similar a usar varios "if",

por cada valor a devolver existe un "when... Then"

SI se cumple la condición de en algún "where"

se ejecuta el "then" correspondiente

si NO se cumple ninguna condición

se ejecuta el "else".

Para crear un programa/procedimiento se usa el

siguiente comando

CREATE OR REPLACE PROCEDURE

Sintaxis BASICA para crear un procedimiento en PL/SQL

CREATE OR REPLACE PROCEDURE

nombre_procedimiento

IS CASE - SINTAXIS

BEGIN CASE

/* Comienzo del programa */

comando 1;

comando 2;

e caso 1

e caso 2

WHEN condicion 1 THEN Valor1

WHEN condicion 2 THEN Valor2


END nombre_procedimiento /* Fin programa */ ELSE Valor + Cualquier otro caso

END nombre_columna

Tema 4 – Complemento transformaciones


UTEC CASE en comando SELECT

Para CASE en comando SELECT hay dos formatos:

CASE de búsqueda

CASE WHEN condicion THEN resultado

CASE simple

CASE columna WHEN valor THEN resultado

CASE de busqueda

SELECT

CASE

WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'

WHEN UPPER(TRIM(CARRERA)) = 'MECATRONICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA

UPPER(TRIM(CARRERA))

THEN 'LECHERÍA

THEN 'MECATRÓNICA'

THEN 'ENERGÍA

ELSE

END CARRERA

FROM H_INSCRIPTOS;

CASE simple

SELECT

CASE UPPER(TRIM(CARRERA))

THEN 'LECHERÍA'

THEN 'MECATRÓNICA'
THEN 'ENERGÍA'

WHEN 'LECHERIA'

WHEN 'MECATRONICA

WHEN 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA

FROM H_INSCRIPTOS;

UTEC CASE en comando SELECT

Para CASE en comando SELECT hay dos formatos:

CASE de búsqueda

CASE WHEN condicion THEN resultado

CASE simple

CASE columna WHEN valor THEN resultado

CASE de busqueda

SELECT

CASE

WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'

WHEN UPPER(TRIM(CARRERA)) = 'MECATRONICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA

UPPER(TRIM(CARRERA))

THEN 'LECHERÍA

THEN 'MECATRÓNICA'

THEN 'ENERGÍA

ELSE

END CARRERA

FROM H_INSCRIPTOS;

CASE simple

SELECT
CASE UPPER(TRIM(CARRERA))

THEN 'LECHERÍA'

THEN 'MECATRÓNICA'

THEN 'ENERGÍA'

WHEN 'LECHERIA'

WHEN 'MECATRONICA

WHEN 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA

FROM H_INSCRIPTOS;

SQLDeveloper- Salida por Pantalla

--Para visualizar el valor de la variable texto se debe

--habilitar salida en pantalla para SQLDeveloper con:

SET SERVEROUTPUT ON;

--Ejecutar Procedimiento

EXECUTE P_Var_Case;

的名◆

Hoja de Trabajo

1 SET SERVEROUTPUT ON;

2 EXECUTE P_Var_Case:

Generador de Consultas

Salida de Script x

Tarea terminada en 0,054 segunde

Procedimiento PL/SOL terminado correctamente.

Primera Quincena

SQLDeveloper- Salida por Pantalla

--Para visualizar el valor de la variable texto se debe


--habilitar salida en pantalla para SQLDeveloper con:

SET SERVEROUTPUT ON;

--Ejecutar Procedimiento

EXECUTE P_Var_Case;

的名◆

Hoja de Trabajo

1 SET SERVEROUTPUT ON;

2 EXECUTE P_Var_Case:

Generador de Consultas

Salida de Script x

Tarea terminada en 0,054 segunde

Procedimiento PL/SOL terminado correctamente.

Primera Quincena

UTEC PROCEDIMIENTO en el NAVEGADOR

Paso 1- Crear Procedimiento

Ir en el Navegador a "Procedimientos"

Seleccionar "Nuevo Procedimiento"

eaUNIVERSIDAD

Tablas (Filtrado)

Hoja de Traba Crear Procedimiento

Vistas

indices Esquema: UNIVERSIDAD

Paquetes

Nombre: P_ODS_H_DNSCRIPTO

I Nuevo Procedimiento. Funciones

Paso 2- Escribir código PLSQL

I 2,005_H_INSCRPTO

Código Permisos Perfiles Dependencias Referencias Detalles Erro


CREATE OR REPLACE PROCEDURE P_ODs_H_INSCRIPIO AS

BEGIN

ULL:

END _ODS_H_INSCRIPTO:|

Paso 4 - Ejecutar procedimiento

I P_ODS H_INSCRIPTO

Código Permisos Perfiles Dependencia:

Paso 3 - Compilar 2.00S MLNSCRIPTO

Código Permisos Perfiles Dependencias | Refe

Compilar para Depuración

Compilar

ENDF_ODS_K_XRSCRIPIOF

e CREATE CEjecutar (Ctrl-F10)|

BEGIN

NULL:

END P_ODS_H_INSCRIPTO:|

ТЕC SQL - CASE

Para modificar la CARRERA, para que se usen los acentos,

H_INSCRIPTOS

ODS_H_INSCRIPTOS

de

usamos el siguiente comando CASE

CASE

"LECHERÍA WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

= 'LECHERIA THEN
= 'MECATRONICA' THEN 'MECATRÓNICA'

= 'ENERGIA' THEN 'ENERGÍA

ELSE UPPER(TRIM(CARRERA))

END CARRERA

La consulta con las dos transformaciones

Transformar CARRERA a mayúscula y con acento

Transformar la columna semestre_fecha a NUMERO yyyymmdd (añomes dia).

SELECT

CASE

WHEN UPPER(TRI M(CARRERA)) = 'LECHERIA' THEN 'LECHERÍA

WHEN UPPER(TRI M(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA

THEN 'ENERGÍA UPPER(TRI M(CARRERA)) = 'ENERGIA'

UPPER(TRI M(CARRERA))

WHEN

ELSE

END CARRERA,

UPPER(TRIM(GENERACION)),

UPPER(TRIM(SEMESTRE)),

TO NUMBER (TO CHAR(SEMESTRE_FECHA, YYYYMMDD')) SEMESTRE_FECHA,

UPPER(TRIM(DOCUMENTO)) Generacion Semestre Semestre_Fecha Documento

Carrera

FROM H_INSCRIPTOS; TT 2015 20150731 123456

LECHERIA 2013 20130303 456789

LECHERIA 2013 20130710 456789

LECHERIA

MECATRÓNICA

MECATRÓNICA

MECATRÓNICA
2013 20140305 456789

2013 20130303 3123456

2013 20130710 3123456

2013 20140305 3123456

UTEC PLSQL – Procedimiento para cargar Hecho

Crear procedimiento P_ODS_H_INSCRIPTOS para cargar datos desde Fuente

H_INS CRIPTOS

CREATE OR REPLACE PROCEDURE P_ODS_H_INSCRIPTOS

Crear tabla ODS_H_INSCRIPTOS

IS

CREATE TABLE ODS H_INSCRIPTOS

/* Inicio del programa */

BEGIN

VARCHAR2(20),

VARCHAR2(5),

VARCHAR2(5),

SEMESTRE_FECHA INTEGER,

VARCHAR2(20)

/* Borrar los datos en ODS antes de cargar*/

DELETE FROM ODS_H_INSCRIPTOS;

/* Comando INSERT */

INSERT INTO ODS_H_INSCRIPTOS

CARRERA

GENERACION

SEMESTRE

DOCUMENTO SELECT

CASE

THEN 'LECHERÍA' WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'


WHEN UPPER(TRIM(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA,

UPPER (TRIM(GENERACION)),

UPPER (TRIM(SEMESTRE)),

TO NUMBER (TO_CHAR(SEMESTRE_FECHA,'YYYYMMDD'))

THEN 'ENERGÍA'

SEMESTRE_FECHA,

UPPER (TRIM(DOCUMENTO))

FROM H_INSCRIPTOS;

/* Fin del programa */

END P_ODS_H_INSCRIPTOS;

Salida de Script x

*OBAE Tarea terminada en 0,327

PROCEDURE P_ODS_H_INSCRIPTOS compilado

UTEC H_INSCRIPTOS a ODS_H_INSCRIPTOS

iversidad Tecnalg

Ejecutar programa

Desde SQLDeveloper

Consulta codigo/contenido de un programa almacenado usando la tabla

del diccionario user_source

Renstado de la Consuta

Todes les Fles Recperades: 14 EXECUTE

P_ODS_H_INSCRIPTOS;

SELECT text Programa

Desde otro programa (PL/SQL, Java, .)

puede ser:
PROGRAMA

1 ROCEORE COs p.CARERA

2 15

3 E Inaete del prograne

4 Conande T Dnenion Carrers

FROM user_source

= 'P_ODS_D_CARRERA'

line

WHERE name

P ODS H_INSCRIPTOS;

CALL P ODS_H_INSCRIPTOS

ORDER BY

UTEC

Síntesis

idad Tealogia

DIMENSIONES-Transformaciones

-Normalizar los valores de la Clave de Negocio pasando a Mayúscula (UPPER) los valores.

Tabla Columna

D_dimension

H_hecho

dimension

dimension, dimension,..

-Eliminar posibles espacios en blanco al inicio y fin de los textos con la función TRIM(columna)

HECHOS-Transformaciones

-Unificar codificación de una dimensión cuando el Hecho tiene diferente codificación

-Eliminar espacios en blanco al inicio y fin de los textos con la función TRIM(texto)

-Transformar la fecha a numero:

La columna semestre_fecha en la tabla ODS_H_INSCRIPTOS es de tipo INTEGER


y se le asigna el numero yyyymmdd (añomesdia)

Para crear un programa/procedimiento se usa el

siguiente comando

CASE: Analiza casos, es similar a usar varios "if",

por cada valor a devolver existe un "when... Then"

SI se cumple la condición de en algún "where"

se ejecuta el "then" correspondiente

si NO se cumple ninguna condición

se ejecuta el "else".

CREATE OR REPLACE OCEDURE

Sintaxis BASICA para crear un procedimiento en PL/SQL

CREATE OR REPLACE PROCEDURE

nombre_procedimiento

IS CASE - SINTAXIS

BEGIN CASE

* Comienzo del programa */

comando 1;

comando 2;

E caso 1

+ caso 2

WHEN condicion 1 THEN Valor1

WHEN condicion 2 THEN Valor2

END nombre_procedimiento /* Fin programa */ ELSE Valor + Cualquier otro caso

END nombre_columna
Tema 5 - Carga Dimensiones DWH
UTEC Tablas DWH del Modelo Dimensional

En el Tema Modelo Dimensional quedaron creadas las tablas de dimensiones y hecho en DWH para

cargar los datos en la FASE 3 - Carga (Load) a DWH del proceso ETL

DT CARRERA

DT ESTUDIANTE SK.CARRERA

CARRERA PK

CARRERA DESC HT_INSCRIPTOS ESTUDIANTE

VESTUDIANTE PK

DT GENERACION

GENERACION

GENERACION PK

]GENERACION DESC

SK CARRERA

SK GENERACION

SK SEMESTRE

SKESTUDIANTE

SKFECHANSC

CANTIDAD

DT TIEMPO D

DT SEMESTRE

TIEMPO

SEMESTRE

SEMESTRE PK

SEMESTRE DESC

V FECHA

Tablas Fuentes en Tablas ODS

ODS Fase 2- Tablas DWH


Hecho/Dimension Fuente Inscriptos.xls Fase 1-EXTRACCION

Hoja INSCRIPTOS

Hoja DIM_Carrera

Fase 3- CARGA

HT INSCRIPTOS

DT CARRERA

TRANSFORMACION

INSCRIPTOS H_INSCRIPTOS

D_CARRERA

ODS_H_INSCRIPTOS

ODS D CARRERA CARRERA

Hoja DIM_Generacion

Hoja DIM Semestre

ODS D_GENERACION DT_GENERACION

ODS D SEMESTRE

ODS D_ESTUDIANTE

GENERACION D_GENERACION

DT SEMESTRE

DT ESTUDIANTE

SEMESTRE D_SEMESTRE

ESTUDIANTE D ESTUDIANTE

TIEMPO DT TIEMPO

UTEC Tablas DWH del Modelo Dimensional

En el Tema Modelo Dimensional quedaron creadas las tablas de dimensiones y hecho en DWH para

cargar los datos en la FASE 3 - Carga (Load) a DWH del proceso ETL

DT CARRERA

DT ESTUDIANTE SK.CARRERA

CARRERA PK
CARRERA DESC HT_INSCRIPTOS ESTUDIANTE

VESTUDIANTE PK

DT GENERACION

GENERACION

GENERACION PK

]GENERACION DESC

SK CARRERA

SK GENERACION

SK SEMESTRE

SKESTUDIANTE

SKFECHANSC

CANTIDAD

DT TIEMPO D

DT SEMESTRE

TIEMPO

SEMESTRE

SEMESTRE PK

SEMESTRE DESC

V FECHA

Tablas Fuentes en Tablas ODS

ODS Fase 2- Tablas DWH

Hecho/Dimension Fuente Inscriptos.xls Fase 1-EXTRACCION

Hoja INSCRIPTOS

Hoja DIM_Carrera

Fase 3- CARGA

HT INSCRIPTOS

DT CARRERA

TRANSFORMACION

INSCRIPTOS H_INSCRIPTOS
D_CARRERA

ODS_H_INSCRIPTOS

ODS D CARRERA CARRERA

Hoja DIM_Generacion

Hoja DIM Semestre

ODS D_GENERACION DT_GENERACION

ODS D SEMESTRE

ODS D_ESTUDIANTE

GENERACION D_GENERACION

DT SEMESTRE

DT ESTUDIANTE

SEMESTRE D_SEMESTRE

ESTUDIANTE D ESTUDIANTE

TIEMPO DT TIEMPO

UTEC Usar SECUENCIAS en las tablas de Dimensión

& UNIVERSIDAD UNIVERSIDAD

Hoja de Trabajo Generador de Con Hoja de Trabajo Generador de Consultas

CESCRIBE DI CARRERA: SELECT Table_nane Tablas

nOH USER_TABLES

CRDER BY 1:

Consulta

Consulta las tablas del usuario estructura

Salida de Script *

(columnas)

& sQL Todas las Filas de tabla

con comando

UNIVERSIDAD

Resultado de la Consulta Tarea terminada en 0,153


Usando la tabla del diccionario DESCRIBE

DT_CARRERA

Mombre user_tables Mulo Tipo TABLAS

1 D7_CARRERA DESCRIBE SK CARRERA NOT NULL NUMBER (38)

CARRERA PK NOT NULL VARCHAR2 (50)

CARRERA DESC NOI NULL VARCHAR2 (100)

2 D7_ESTUDIANTE

3 D7_GENERACION

4 DI_SEMESTRE

Para las siguientes tablas de DIMENSIONES

DT CARRERA

DT_GENERACION

DT SEMESTRE

DT ESTUDIANTE

antes comenzar a cargar/insertar datos desde

Comando para crear la secuencia

SEQ CARRERA

que se usa para asignar valores a la columna

SK_CARRERA

de la tabla DT_CARRERA ODS D_DIMENSION a DT_DIMENSION

se crea la SECUENCIA SEQDIMENSION para generar los

valores a asignar a la columna SK_DIMENSION de la

tabla DT_DIMENSION

Secuencias a crear

CREATE SEQUENCE SEQ CARRERA

START WITH 1

TABLA SECUENCIA

INCREMENT BY 1 DT CARRERA

DT GENERACION SEQ GENERACION


DT SEMESTRE

DT ESTUDIANTE

SEQ CARRERA

SEQ SEMESTRE

SEQ ESTUDIANTE

UTEC Usar SECUENCIAS en las tablas de Dimensión

& UNIVERSIDAD UNIVERSIDAD

Hoja de Trabajo Generador de Con Hoja de Trabajo Generador de Consultas

CESCRIBE DI CARRERA: SELECT Table_nane Tablas

nOH USER_TABLES

CRDER BY 1:

Consulta

Consulta las tablas del usuario estructura

Salida de Script *

(columnas)

& sQL Todas las Filas de tabla

con comando

UNIVERSIDAD

Resultado de la Consulta Tarea terminada en 0,153

Usando la tabla del diccionario DESCRIBE

DT_CARRERA

Mombre user_tables Mulo Tipo TABLAS

1 D7_CARRERA DESCRIBE SK CARRERA NOT NULL NUMBER (38)

CARRERA PK NOT NULL VARCHAR2 (50)

CARRERA DESC NOI NULL VARCHAR2 (100)

2 D7_ESTUDIANTE

3 D7_GENERACION

4 DI_SEMESTRE
Para las siguientes tablas de DIMENSIONES

DT CARRERA

DT_GENERACION

DT SEMESTRE

DT ESTUDIANTE

antes comenzar a cargar/insertar datos desde

Comando para crear la secuencia

SEQ CARRERA

que se usa para asignar valores a la columna

SK_CARRERA

de la tabla DT_CARRERA ODS D_DIMENSION a DT_DIMENSION

se crea la SECUENCIA SEQDIMENSION para generar los

valores a asignar a la columna SK_DIMENSION de la

tabla DT_DIMENSION

Secuencias a crear

CREATE SEQUENCE SEQ CARRERA

START WITH 1

TABLA SECUENCIA

INCREMENT BY 1 DT CARRERA

DT GENERACION SEQ GENERACION

DT SEMESTRE

DT ESTUDIANTE

SEQ CARRERA

SEQ SEMESTRE

SEQ ESTUDIANTE
JTEC PLSQL – TRIGGER para Secuencias

Para el TRIGGER T_CARRERA_SEQ se define

a)Tipo de triggers.

Sintaxis Básica del TRIGGER

CREATE OR REPLACE TRIGGER

Triggers de tabla

Se ejecuta/dispara cuando ocurre una acción (evento)

DML (INSERT, UPDATE y DELETE) sobre la tabla.

ON nombre_tabla. <nombre_trigger>

BEFORE|AFTER

DELETE|INSERT|UPDATE

ON <nombre_tabla> b)Evento

que da lugar a que se ejecute el trigger

FOR EACH ROW El

evento /acción que dispara al Trigger

puede ser

DECLARE

INSERT, UPDATE O DELETE

-- variables

c)Momento del evento en el que se ejecuta el trigger

BEGIN

Antes de ejecutar el evento

Después de ejecutar el evento

BEFORE

-- Comandos

AFTER

END <nombre_trigger>;

INSERT

VARIABLES ESPECIFICAS DE LOS TRIGGERS Before After


Para los TRIGGERS existen las Variables OLD y NEW, que se usan para

obtener los valores de las columnas del registro de la tabla antes del

evento (variable OLD) y los nuevos valores de las columnas del registro

durante el evento (variable NEW).

Con :OLD.nombre_columna referenciamos el valor de la columna

cold null null

Enew new new

UPDATE

Before After

old

new

antes del evento :old old

Tiene valor en UPDATE y DELETE

Con :NEW.nombre_columna referenciamos el nuevo valor de la columna

asignado por el evento

Tiene valor en UPDATE e INSERT

:new new

DELETE

Before After

old

null

:old old

Enew null

UTEC TRIGGER T_CARRERA_SEQ

DEFINICIONES para el TRIGGER

Objetivo:

Tipo

T CARRERA_SEQ
Manejar la secuencia SEQ_CARRERA

DT CARRERA Tabla ON

Evento: Insertar INSERT

Momento: Antes BEFORE

Ejecutar para cada registro

Codigo del trigger

FOR EACH Row

Asignar valor de la secuencia SEQ_CARRERA.NEXTVAL

a la columna SK CARRERA

Comando para crear TRIGGER T_CARRERA_SEQ

CREATE OR REPLACE TRIGGER T_CARRERA_SEQ--Nombre del Trigger

--Momento del Trigger, antes de insertar

--Tabla DT_CARRERA

--Ejecutar para cada registro

--Inicio comandos del trigger

--Seleccionar el siguiente valor de la secuencia

--Asignar el valor al nuevo valor de la columna CODIGO

--Usar la tabla virtual DUAL

BEFORE INSERT

ON DT CARRERA

FOR EACH ROW

BEGIN

SEQ CARRERA.NEXTVAL

:NEW.SK_CARRERA

DUAL;

SELECT

INTO

FROM

--Fin trigger END T CARRERA SEQ:


IMPORTANTE: En PLSQL el comando SELECT INTO es para asignar el resultado de la consulta a variable

PLSQL (NO se muestra en pantalla)

En el trigger T_CARRERA_SEQ la consulta SELECT INTO es:

--Buscar el siguiente valor de la secuencia

--Asignar(INTO) valor a la variable :NEW.SK_CARRERA

--Usar la tabla virtual DUAL para seleccionar

--valor de la secuencia

SELECT SEQ_CARRERA.NEXTVAL

INTO :NEW.SK_CARRERA

FROM DUAL;

ТЕC Manejo de TRIGGERS

Consulta la lista de TRIGGER del usuario con la tabla user_triggers del diccionario de

datos

SELECT

FROM user_triggers

TRIGGER NAME TRIGGER TYPE TRIGGERING_EVENT TABLE_OWNER BASE_OBJECT_TYPE


TABLE_NAME

DT CARRERA T_CARRERA_SEQ BEFORE EACH ROW INSERT UNIVERSIDAD


TABLE

Comandos para Manejar TRIGGERS

Borrar

DROP TRIGGER NombreTrigger;

Activar

ALTER TRIGGER NombreTrigger ENABLE;

Desactivar

ALTER TRIGGER NombreTrigger DISABLE;

Renombrar

ALTER TRIGGER Nombretrigger


RENAME TO NuevoNombre;

UTEC SQL - MERGE para cargar

Dimensión

dadlgia

Comando MERGE para cargar datos en las dimensiones DWH

MERGE permite en un mismo comando SQL "mezclar" INSERT y UPDATE, según exista o no el registro, a

partir de que se cumpla determinada condición.

MERGE se usa para:

MODIFICAR registro SI ya existe INSERTAR registro si NO existe

Se define condición del MERGE para saber si el registro existe o no en la tabla.

Si la condición del MERGE se cumple

se cumple

SI entonces se MODIFICA

NO entonces se INSERTA

MERGE-SINTAXIS

MERGE INTO Tabla_a_Cargar

USING Consulta con datos a cargar

ON Condición a cumplir por los registros

-Si se cumple la condicion, registro ya esta cargado

- se ejecuta comando UPDATE

WHEN MATCHED THEN

WHEN NOT MATCHED THEN --NO se cumple la condicion, registro es NUEVO

- se ejecuta comando INSERT

; --Fin MERGE con ;

UTEC MERGE INTO DT_CARRERA

iversidad Tenalgi

Para cargar/Insertar registros en DT_CARRERA desde ODS D_CARRERA,


se utiliza el comando MERGE: para INSERTAR registro nuevos

MODIFICAR los registros que ya exis ten

MERGE INTO DT CARRERA d --Tabla a cargar con alias d

USING -- Consulta con datos a cargar

CARRERA PK,CARRERA_DESC

ODS D CARRERA

(SELECT

FROM

ON (d.carrera_pk = o.carrera_pk) --Condición a cumplir por los registros

--Se cumple condicion, registro existe

o.CARRERA_DESC --Sin ; "punto y coma"

WHEN MATCHED THEN

UPDATE SET d.CARRERA_DESC

WHEN NOT MATCHED THEN --NO se cumple condición, registro NO existe

(CARRERA_PK,CARRERA_DESC)

(0.CARRERA_PK,o.CARRERA_DESC) --Sin ; "punto y coma"

INSERT

VALUES

Importante: El comando MERGE solo tiene ; al final.

No se usa ; en los comandos UPDATE e INSERT en el comando MERGE

En los comandos UPDATE e INSERT NO se especifica nombre tabla ya que el Nombre de

la tabla esta especificado al inicio del MERGE INTO Nombre Tabla

TEC

PROCEDIMIENTO P_DWH_DT_CARRERA

Para la carga de los registros en DWH de la Dimensión Carrera vamos a crear el

Procedimiento P_DWH_DT_CARRERA

Codigo del Procedimiento P_DWH_DT_CARRERA

CREATE OR REPLACE PROCEDURE P DWH_DT_CARRERA


IS

BEGIN /* Inicio del programa */

MERGE INTO DT_CARRERA d

USING

(SELECT CARRERA_PK,CARRERA_DESC

FROM ODS_D_CARRERA

(d.carrera_pk = 0.carrera_pk)

WHEN MATCHED THEN

UPDATE SET d.CARRERA DESC = 0.CARRERA DESC

WHEN NOT MATCHED THEN

INSERT (CARRERA_PK,CARRERA_DESC)

ON

VALUES

(o.CARRERA_PK,o.CARRERA_DESC)

; --Fin Merge

COMMIT; -- Grabar registros

END P DWH_DT_CARRERA; /* Fin del programa */

EJECUTAR PROCEDIMIENTO P_DWH_DT_CARRERA

Ejecutar P_DWH_DT_CARRERA

Después de compilado y grabado el procedimiento en la BD, se

puede ejecutar

DESDE CON

SQLDeveloper EXECUTE P DWH_DT_CARRERA;

PL/SQL P_DWH_DT_CARRERA;

Java CALL P DWH_DT_CARRERA;

UTEC Síntesis

TRIGGER
a)Tipo de triggers. MERGE

Triggers de tabla ON nombre_tabla.

Se ejecutan/disparan cuando ocurre una acción (evento)

DML (INSERT, UPDATE y DELETE) sobre una tabla.

b)Evento que da lugar a que se ejecute el trigger

SINTAXIS, forma de escribir el comando MERGE

MERGE INTO Tabla_a_Cargar

USING

El evento puede ser un INSERT, UPDATE o DELETE

c)Momento en que se ejecuta el trigger en relación al evento

Antes (BEFORE) de ejecutar el evento

Después (AFTER) de ejecutar el evento

(Consulta con datos a cargar

(Condición a cumplir por los registros) ON

WHEN MATCHED THEN

--Si se cumple la condicion = registro ya

esta cargado

Variables especificas de los TRIGGERS

Para los TRIGGERS existen las Variables OLD y NEW que se usan para

obtener los valores de las columnas del registro de la tabla antes del

evento (variable OLD) y los nuevos valores de las columnas del

registro durante el evento (variable NEW).

Con :OLD.nombre_columna referencia mos el valor de la columna

- se ejecuta comando UPDATE

WHEN NOT MATCHED THEN

--NO se cumple la condicion = registro

NUEVO

- se ejecuta comando INSERT

; -Fin MERGE
antes del evento

Con :NEW.nombre_columna referenciamos el nuevo valor de la

columna asignado por el evento

Sintaxis Básica del TRIGGER

CREATE [OR REPLACE] TRIGGER <nombre_trigger

BEFORE|AFTER

DELETE|INSERT|UPDATE

ON <nombre_tabla>

SELECT INTO para asignar el resultado de la

consulta a variable PLSQL (NO se muestra en

pantalla)

FOR EACH ROW En el trigger T_CARRERA_SEQ

DECLARE

- variables locales

SEQ CARRERA.NEXTVAL

INTO :NEW.SK_CARRERA

DUAL;

SELECT

BEGIN

- Comandos

END <nombre_trigger>; FROM

UTEC SQL –

CASE

veidad Telgi

TRANSFORMACIONES para ODS_H_INSCRIPTOS

1)Modificar la CARRERA para que se usen los

2) Transformar SEMESTRE_FECHA a NUMERO

yyyymmdd (añomesdia)
Se utiliza la funciones acentos

LECHERÍA

MECATRÓNICA

ENERGÍA

Para esta modificación vamos a usar

LECHERIA a

TO CHAR(fecha,formato) Convierte a TEXTO una fecha

TO NUMBER(texto)

La transformacion es:

TO NUMBER

(TO CHAR(SEMESTRE FECHA, 'YYYYMMDD'))

MECATRONICA a

ENERGIA Convierte a Numero un texto

el comando CASE.

CASE: Analiza casos según la condición del caso y cuando se

cumple la condición del caso, entonces devuelve el valor

correspondiente EJEMPLO

CASE es similar a usar varios "if",

por cada valor a devolver existe un "when.. Then"

SI se cumple la condición en algún "where"

se ejecuta el "then"

si NO se cumple ninguna condición se ejecuta el "else".

CASE - SINTAXIS

SELECT syadate Hoy,

CASE

MN syadate > to_date('01/01/2000, "dd/mm/YYYY')

THEN "Siglo 21

*Siglo 20 ELSE

END Siglo
FROH DUAL :

esultado de la Consulta

CASE

WHEN condicion 1

WHEN condicion 2

SQL I Todas las Filas Recuperadas: 1 en 0,001 segundos

10 SIGLO

THEN DevuelveValor1 caso 1

HOY

THEN DevuelveValor2 caso 2 1 07/03/16 Sigio 21

ELSE Devuelve valor Cualquier otro caso

END nombre_columna

UTEC SQL - CASE

idad algia

Para modificar la CARRERA, para que se usen los acentos,

H_INSCRIPTOS

ODS_H_INSCRIPTO

de

usamos el siguiente comando CASE

CASE

"LECHERÍA WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

ELSE UPPER(TRIM(CARRERA))

= 'LECHERIA THEN

'MECATRÓNICA'

'ENERGÍA'
= 'MECATRONICA' THEN

= 'ENERGIA' THEN

END CARRERA

La consulta con las dos transformaciones

Transformar CARRERA a mayúscula y con acento

Transformar la columna semestre_fecha a NUMERO yyyymmdd (añomes dia).

SELECT

CASE

WHEN UPPER(TRI M(CARRERA)) = 'LECHERIA' THEN 'LECHERÍA'

UPPER(TRI M(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA'

UPPER(TRI M(CARRERA)) = 'ENERGIA

UPPER(TRI M(CARRERA))

WHEN

WHEN THEN 'ENERGÍA'

ELSE

END CARRERA,

UPPER(TRIM(GENERACION)),

UPPER(TRIM(SEMESTRE)),

TO NUMBER (TO CHAR(SEMESTRE_FECHA,'YYYYMMDD')) SEMESTRE_FECHA,

UPPER(TRIM(DOCUMENTO)) Carrera Generacion Semestre Semestre Fecha Documento

FROM H_INSCRIPTOS; 2015 20150731 123456

LECHERIA 2013 20130303 456789

LECHERIA 2013 20130710 456789

LECHERIA 2013 20140305 456789

MECATRONICA

MECATRONICA

2013 20130303 3123456

2013 2. 20130710 3123456

MECATRONICA 2013 3. 20140305 3123456


UTEC PLSQL –

Procedimiento para cargar Hecho

veridad Teal

Crear procedimiento P ODS_H_INSCRIPTOS para cargar datos desde Fuente

H_INS CRIPTOS

CREATE OR REPLACE PROCEDURE P_ODS H_INSCRIPTOS

IS

/* Inicio del programa */

BEGIN

/* Borrar los datos en ODS antes de cargar*/

DELETE FROM ODS_H_INSCRIPTOS;

/* Comando IN SERT */

INSERT INTO ODS_H_INSCRIPTOS

Crear tabla ODS_H_INSCRIPTOS

CREATE TABLE ODS H_INSCRIPTOS

VARCHAR2(20),

VARCHAR2(5),

VARCHAR2(5),

CARRERA

GENERACION

SEMESTRE

SEMESTRE_FECHA INTEGER,

DOCUMENTO VARCHAR2(20) SELECT

CASE

THEN 'LECHERÍA' WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'

WHEN UPPER(TRIM(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA,
UPPER (TRIM(GENERACION)),

UPPER (TRIM(SEMESTRE)),

TO NUMBER (TO CHAR(SEMESTRE_FECHA,'YYYYMMDD'))

THEN 'ENERGÍA'

SEMESTRE_FECHA,

UPPER (TRIM(DOCUMENTO))

FROM H_INSCRIPTOS;

/* Fin del programa */

END P ODS H_INSCRIPTOS;

Salida de Script x

*OBE S Tarea terminada en 0,327

PROCEDURE P_ODs_H_INSCRIPTOS compilado

UTEC H_INSCRIPTOS a ODS_H_INSCRIPTOS

idd lg

Ejecutar programa

Desde SQLDeveloper

Consulta codigo/contenido de un programa almacenado usando la tabla

del diccionario user_source

Resultado de le Consulte

EXECUTE P_ODS_H_INSCRIPTOS; A so Todes les Fles Recuperadas: 14

SELECT text Programa PROGRAMA

Desde otro programa (PL/SQL, Java, ...)

puede ser:

1 PROCEDONE ODs_D_CARRERA

2 13

3 ESIN nicie del prograna

FROM

P ODS H_INSCRIPTOS;
CALL P_ODS_H_INSCRIPTOS

user_source

WHERE name = 'P_ODS D_CARRERA'

line

4/* Conando INSERT DInenaion Carrere

ORDER BY 5 ISERT INTO cos_R_CARRERA

UTEC

Síntesis

idad lgi

DIMENSIONES-Transformaciones

-Normalizar los valores de la Clave de Negocio pasando a Mayúscula (UPPER) los valores.

Tabla

D_dimension

H_hecho

Columna

dimension

dimension, dimension, .

-Eliminar posibles espacios en blanco al inicio y fin de los textos con la función TRIM(columna)

HECHOS-Transformaciones

-Unificar codificación de una dimensión cuando el Hecho tiene diferente codificación

-Eliminar espacios en blanco al inicio y fin de los textos con la función TRIM(texto)

-Transformar la fecha a numero:

La columna semestre_fecha en la tabla ODS_H_INSCRIPTOS es de tipo INTEGER

y se le asigna el numero yyyymmdd (añomesdia)

Para crear un programa/procedimiento se usa el

siguiente comando

CASE: Analiza casos, es similar a usar varios "if",

por cada valor a devolver existe un "when... Then"


SI se cumple la condición de en algún "where"

se ejecuta el "then" correspondiente

CREATE OR REPLACE PROCEDURE

Sintaxis BASICA para crear un procedimiento en PL/SQL

si NO se cumple ninguna condición

se ejecuta el "else".

CREATE OR REPLACE PROCEDURE

nombre_procedimiento

IS CASE - SINTAXIS

BEGIN CASE

* Comienzo del programa */

comando 1;

comando 2;

e caso 1

+ caso 2

WHEN condicion 1 THEN Valor1

WHEN condicion 2 THEN Valor2

END nombre_procedimiento /* Fin programa */ ELSE Valor + Cualquier otro caso

END nombre_columna
Tema 5 – Complemento Carga de dimensiones
UTEC PL/SQL: EDITAR- Compilar - Ejecutar

Para cada programa PLSQL se debe:

Escribir los comandos/contenido del programa

Crear el programa con su código fuente

1-Crear/Editar:

Comprobar sintaxis /semántica del programa

Crear el ejecutable del programa

2-Compilar :

3-Ejecutar: Proceso mediante el cual se ejecutan los comandos del programa

CREAR PROCEDIMIENTO

_UNIVERSIDAD

Tablas (Filtrado) Hoja

de T Crear Procedimiento

Vistas

| Indices Esquema: UNIVERSIDAD

Paquetes

Nombre: DWH DT CARRERA

INuevo Procedimiento. Funciones

I POWM_OT_CARRERA_

Código Referencias Perfiles Detalles Permisos Errores Dependencias

CREATE OR REPLAC PROCEDORE P_DH_DT_CARRERA_ AS

BEGIN

MULL:

ED P_DH_DT_CARaERA|

COMPILAR CON COMANDO SQL

COMPILAR TODOS LOS PLSQL del esquema/usuario UNIVERSIDAD con el comando:


DBMS UTILITY.COMPILE_SCHEMA (schema => 'UNIVERSIDAD'); EXECUTE

COMPILAR PROCEDIMIENTO

ALTER PROCEDURE P_DWH_DT_CARRERA COMPILE;

COMPILAR TRIGGER

ALTER TRIGGER T CARRERA_SEQ COMPILE;

Ejecutar PLSQL

DESDE COMANDO

SQLDeveloper EXECUTE P DWH_DT_CARRERA;

PL/SQL P_DWH_DT_CARRERA;

Java CALL P DWH_DT_CARRERA;

UTEC PL/SQL: Depurar código (debug)

Depurador de código (DEBUG) permite ejecutar un programa paso a paso para verificar/comprobar su

funcionamiento y hacer un seguimiento de los valores de las variables.

Configurar Depurador de código (DEBUG) para ejecutarlo paso a paso:

Ir al Menu HERRAMIENTAS / PREFERENCIAS

En DEPURADOR Marcar como Opcion de Inicio de depuracion

"Ir a la siguiente linea de codigo"

Preferencias

Depurador

See nd etn e

Salcter

Satr m Apda de

Vamos a Depurar el programa Trigger/disparador

T CARRERA_SEQ. Antes de ejecutar el DEPURADOR

(DEBUG), se debe compilar PL/SQL con depuración.

En el navegador se marca/señala

con icono verde que el disparador


T_CARRERA_SEQ

esta compilado

Disparadores

TAUD DT ESTUDIANTE

TCARRERA SEQ & T CARRERASEQ

Detalles Permisosl para DEBUG Codigo

Compilar para Depuración

UTEC Depurar T_CARRERA_SEQ

dad

Ejecutar DEPURAR el trigger El Depurador genera un programa PLSQL para ejecutar el INSERT que

T_CARRERA_SEQ "dispara" el trigger.a Depurar PL/SQL

Desgino

OT CARRERA

T CARRERA SEQ

Código Referencias Perfiles Detalles Permisos Er

Rerámetros:

Parámetro

SK CARRERA

CARRERA PK

CARRERA DESC

Tipo de Modo Valor de Entrada

NUMBER N 1

VARCHAR2 IN

VARCHAR2 N

NULL

NULL

1create or Depurar (Ctri-Mayus-F10)

Roque PLUSQL
-Tabla Dr

-Eyecutar

--Inicie co

SELECT SEOCARRERA.TAL

DT CARRERA DECLARE

MGEN

insert inte Dr CARRERA

4KCARRERA, CAREA_K, CARRERA DeSC)

S values

FOR EACH ROM

SGIN

INTO EN.SK.CARRERA

PH DUAL:

D LCARRERA SEO: rollbeck

ploque PL/SQL

1 DECLARE

Vamos a modificar INSERT

para asignar valor a

CARRERA_PK

2BEGIN

insert into DI CARRERA

4 (SK_CARRERA, CARRERA_PK, CARRERA DESC)

S values

e (1, "BIOMÉDICA', "Tecnólogo en Ingenieria Biomédica):

7 rollback:

e END:

'BIOMÉDICA'

CARRERA_DESC

'Tecnólogo en Ingeniería Biomédica


Boton ACEPTAR para iniciar la DEPURACION

Aceptar

El Depurador genera comando INSERT con los valores ingresados que

NO se graban en la BD, ya que se ejecuta después del INSERT el comando

ROLLBACK

UTEC

Depurar T_CARRERA_SEQ

La pantalla del Depurador/DEBUG

se divide en 2 partes

T CARRERA SEQ

Codigo Referencias Perfles Detales IPermisoslErrores Dependencias

1)Codigo del PLSQL

marcando la línea actual

1create or replace TRIGER T_CARRERA_SEO -ontee del Trigger

DEFORE DNSERT -nento del Trigger, antes de insertar

DCARRERA TEO a -

que se esta ejecutando

RY AERA AL r entealor de la ecuenca

ITO EN.SK CARRERA

TROM DOAL

D LCARRERA_SEO

Aaignar el valor al nuevo valor de la columa conro

-Osar la tabla virtual DUAL

-Fin trigger

2)Depurador

Boton "Siguiente linea" o F8

Para ir a la siguiente linea código

Depurand deconnectens ERSD Puntos de Ruptura Datos teligentes Datos Observaciones

Conectando a la base de datos NIVERSIDAD.


Ejecutando FL/SOL: ALTER SESSION SET PLSOL_DEBOG-TRUE

Ejecutando PL/Sot: CALL DEMS_ DEBO6_JDMP.CONECT_TCP 127.0.0.1, S7399)

E1 depurador ha aceptado la conexión de la base de datos en el puerto 57399.

Ir a Siguiente Línea de Código (F8)

Para finalizar/interrumpir el DEPURADOR usar "CONTROL CON F2"

ЕС PROCEDIMIENTO P_DWH_DT_CARRERA

Para la carga de los registros en DWH de la Dimensión Carrera vamos a crear el

Procedimiento P DWH_DT_CARRERA

Codigo del Procedimiento P_DWH_DT_CARRERA

CREATE OR REPLACE PROCEDURE P_DWH_DT_CARRERA

IS

BEGIN /* Inicio del programa */

MERGE INTO DT_CARRERA d

USING

(SELECT CARRERA_PK,CARRERA_DESC

FROM ODS D_CARRERA

ON (d.carrera_pk = o.carrera_pk)

WHEN MATCHED THEN

UPDATE SET d.CARRERA DESC = 0.CARRERA_DESC

WHEN NOT MATCHED THEN

INSERT (CARRERA_PK,CARRERA_DESC)

VALUES

(0.CARRERA_PK,0.CARRERA_DESC)

; --Fin Merge

COMMIT; -- Grabar registros

END P DWH_DT_CARRERA; /* Fin del programa */


Ejecutar P_DwH_DT_CARRERA

Después de compilado y grabado el procedimiento en la BD, se

puede ejecutar

DESDE CON

SQLDeveloper EXECUTE P_DWH_DT_CARRERA;

PL/SQL P_DWH_DT_CARRERA;

Java CALL P_DWH_DT_CARRERA;

ТЕС

Síntesis

TRIGGER

MERGE a)Tipo de triggers.

Triggers de tabla ON nombre_tabla.

Se ejecutan/disparan cuando ocurre una acción (evento)

DML (INSERT, UPDATE y DELETE) sobre una tabla.

b)Evento que da lugar a que se ejecute el trigger

SINTAXIS, forma de escribir el comando MERGE

MERGE INTO Tabla_a_Cargar

USING

El evento puede ser un INSERT, UPDATE O DELETE

c)Momento en que se ejecuta el trigger en relación al evento

Antes (BEFORE) de ejecutar el evento

Después (AFTER) de ejecutar el evento

(Consulta con datos a cargar

(Condición a cumplir por los registros) ON

WHEN MATCHED THEN

-Si se cumple la condicion = registro ya

esta cargado

Variables especificas de los TRIGGERS


Para los TRIGGERS existen las Variables OLD y NEW que se usan para

obtener los valores de las columnas del registro de la tabla antes del

evento (variable OLD) y los nuevos valores de las columnas del

registro durante el evento (variable NEW).

Con :OLD.nombre_columna referencia mos el valor de la columna

- se ejecuta comando UPDATE

WHEN NOT MATCHED THEN

--NO se cumple la condicion = registro

NUEVO

- se ejecuta comando INSERT

; -Fin MERGE

antes del evento

Con :NEW.nombre_columna referenciamos el nuevo valor de la

columna asignado por el evento

Sintaxis Básica del TRIGGER SELECT INTO para asignar el resultado de la

consulta a variable PLSQL (NO se muestra en

pantalla)

CREATE [OR REPLACE] TRIGGER <nombre_trigger>

BEFORE AFTER

DELETE|INSERT UPDATE

ON <nombre_tabla>

En el trigger T CARRERA_SEQ FOR EACH ROW

DECLARE

- variables locales

SELECT SEQ CARRERA.NEXTVAL

BEGIN

INTO :NEW.SK_CARRERA

DUAL;

- Comandos
END <nombre_trigger>; FROM

ТЕС

Síntesis

TRIGGER

MERGE a)Tipo de triggers.

Triggers de tabla ON nombre_tabla.

Se ejecutan/disparan cuando ocurre una acción (evento)

DML (INSERT, UPDATE y DELETE) sobre una tabla.

b)Evento que da lugar a que se ejecute el trigger

SINTAXIS, forma de escribir el comando MERGE

MERGE INTO Tabla_a_Cargar

USING

El evento puede ser un INSERT, UPDATE O DELETE

c)Momento en que se ejecuta el trigger en relación al evento

Antes (BEFORE) de ejecutar el evento

Después (AFTER) de ejecutar el evento

(Consulta con datos a cargar

(Condición a cumplir por los registros) ON

WHEN MATCHED THEN

-Si se cumple la condicion = registro ya

esta cargado

Variables especificas de los TRIGGERS

Para los TRIGGERS existen las Variables OLD y NEW que se usan para

obtener los valores de las columnas del registro de la tabla antes del

evento (variable OLD) y los nuevos valores de las columnas del

registro durante el evento (variable NEW).

Con :OLD.nombre_columna referencia mos el valor de la columna

- se ejecuta comando UPDATE


WHEN NOT MATCHED THEN

--NO se cumple la condicion = registro

NUEVO

- se ejecuta comando INSERT

; -Fin MERGE

antes del evento

Con :NEW.nombre_columna referenciamos el nuevo valor de la

columna asignado por el evento

Sintaxis Básica del TRIGGER SELECT INTO para asignar el resultado de la

consulta a variable PLSQL (NO se muestra en

pantalla)

CREATE [OR REPLACE] TRIGGER <nombre_trigger>

BEFORE AFTER

DELETE|INSERT UPDATE

ON <nombre_tabla>

En el trigger T CARRERA_SEQ FOR EACH ROW

DECLARE

- variables locales

SELECT SEQ CARRERA.NEXTVAL

BEGIN

INTO :NEW.SK_CARRERA

DUAL;

- Comandos

END <nombre_trigger>; FROM

UTEC SQL -

CASE

Para modificar la CARRERA, para que se usen los acentos,

H_INSCRIPTOS
ODS_H_INSCRIPTO

de

usamos el siguiente comando CASE

CASE

WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

WHEN UPPER(TRIM(CARRERA))

ELSE UPPER(TRIM(CARRERA))

"LECHERÍA

'MECATRÓNICA

"ENERGÍA

= 'LECHERIA' THEN

= 'MECATRONICA' THEN

= 'ENERGIA' THEN

END CARRERA

La consulta con las dos transformaciones

Transformar CARRERA a mayúscula y con acento

Transformar la columna semestre_fecha a NUMERO yvymmdd (añomesdia).

SELECT

CASE

THEN 'LECHERÍA'

UPPER(TRI M(CARRERA)) = 'MECATRONICA' THEN 'MECATRÓNICA

THEN 'ENERGÍA'

WHEN UPPER(TRI M(CARRERA)) = "LECHERIA'

WHEN

WHEN UPPER(TRI M(CARRERA)) = 'ENERGIA

ELSE UPPER(TRI M(CARRERA))

END CARRERA,
UPPER(TRIM(GENERACION)),

UPPER(TRIM(SEMESTRE)),

TO NUMBER (TO CHAR(SEMESTRE_FECHA,'YYYYMMDD')) SEMESTRE_FECHA,

UPPER(TRIM(DOCUMENTO)) Carrera Generacion Semestre Semestre Fecha Documento

FROM H_INSCRIPTOS; TT 2015 20150731 123456

456789 20130303

20130710

LECHERIA 2013

LECHERIA 2013 456789

LECHERIA 2013 20140305 456789

MECATRONICA 20130303

20130710

2013 3123456

MECATRÓNICA 2013 3123456

MECATRONICA 2013 20140305 3123456

UTEC PLSQL –

Procedimiento para cargar Hecho

iveridad Teliga

Crear procedimiento P_ODS_H_INSCRIPTOS para cargar datos desde Fuente

H_INS CRIPTOS

CREATE OR REPLACE PROCEDURE P_ODS_H_INSCRIPTOS

IS

* Inicio del programa */

Crear tabla ODS_H_INSCRIPTOS

CREATE TABLE ODS H_INSCRIPTOS

BEGIN

VARCHAR2(20),

VARCHAR2(5),
VARCHAR2(5),

SEMESTRE_FECHA INTEGER,

VARCHAR2(20)

/* Borrar los datos en ODS antes de cargar*/

DELETE FROM ODS H_INSCRIPTOS;

/* Comando IN SERT */

INSERT INTO OoDS_H_INSCRIPTOS

CARRERA

GENERACION

SEMESTRE

DOCUMENTO SELECT

CASE

WHEN UPPER(TRIM(CARRERA)) = 'LECHERIA'

WHEN UPPER(TRIM(CARRERA) = 'MECATRONICA' THEN 'MECATRÓNICA'

WHEN UPPER(TRIM(CARRERA)) = 'ENERGIA'

ELSE UPPER(TRIM(CARRERA))

END CARRERA,

UPPER (TRIM(GENERACION)),

UPPER (TRIM(SEMESTRE)),

TO NUMBER (TO_CHAR(SEMESTRE_FECHA, YYYYMMDD'))

THEN 'LECHERÍA'

THEN 'ENERGÍA'

SEMESTRE_FECHA,

UPPER (TRIM(DOCUMENTO))

FROM H_INSCRIPTOS;

* Fin del programa */

END P_ODS_H_INSCRIPTOS;

Salida de Script x

*OBEE Tarea terminada en 0,327


PROCEDURE P_ODS_H_INSCRIPTOS compilado

UTEC H_INSCRIPTOS a ODS_H_INSCRIPTOS

widad lga

Ejecutar programa

Desde SQLDeveloper

Consulta codigo/contenido de un programa almacenado usando la tabla

del diccionario user_source

Restade de le Cansute

&sa Todes les Fles Recuperades: 14 EXECUTE

P_ODS_H_INSCRIPTOS;

SELECT text Programa PROGRAMA

ROCEDORE P.COMD. CARRERA

2 25

3 E Insnte de progrene

Comando RT Denion Carrers

2NSERT D CRREA

Desde otro programa (PL/SQL, Java, .)

puede ser:

FROM user_source

= 'P_ODS_D_CARRERA'

line

WHERE name

P_ODS_H_INSCRIPTOS;

CALL P_ODS_H_INSCRIPTOS

ORDER BY
UTEC Síntesis

dad ligia

DIMENSIONES-Transformaciones

-Normalizar los valores de la Clave de Negocio pasando a Mayúscula (UPPER) los valores.

Tabla

D_dimension

H_hecho

-Eliminar posibles espacios en blanco al inicio y fin de los textos con la función TRIM(columna)

Columna

dimension

dimension, dimension,.

HECHOS-Transformaciones

-Unificar codificación de una dimensión cuando el Hecho tiene diferente codificación

-Eliminar espacios en blanco al inicio y fin de los textos con la función TRIM(texto)

-Transformar la fecha a numero:

La columna semestre_fecha en la tabla ODS_H_INSCRIPTOS es de tipo INTEGER

y se le asigna el numero yyyymmdd (añomesdia)

CASE: Analiza casos, es similar a usar varios "if",

por cada valor a devolver existe un "when... Then"

SI se cumple la condición de en algún "where"

se ejecuta el "then" correspondiente

Para crear un programa/procedimiento se usa el

siguiente comando

CREATE OR REPLACE PROCEDURE

Sintaxis BASICA para crear un procedimiento en PL/SQL

si NO se cumple ninguna condición

se ejecuta el "else".

CREATE OR REPLACE PROCEDURE

nombre_procedimiento
IS CASE - SINTAXIS

BEGIN CASE

/* Comienzo del programa */

comando 1;

comando 2;

WHEN condicion 1

WHEN condicion 2

THEN Valor1 E caso 1

+ caso 2 THEN Valor2

END nombre_procedimiento /* Fin programa */ ELSE Valor + Cualquier otro caso

END nombre_columna
Pregunta 1
Un ODS es un almacén de datos temporal en el cual se cargan en el cual se cargan los
datos desde las fuentes de información (datos operacionales, planillas, etc.).
Seleccione una:

Verdadero

Falso

Retroalimentación

La respuesta correcta es 'Verdadero'

Pregunta 2
Seleccione las caracteristicas que debe cumplir un Data Warehouse:
Seleccione una:

a.

Orientado a procesos, No volatil, Integrado, Historico

b.

Integrado e Historico

c.

Orientado a temas, No volatil, Integrado, Historico

d.

Orientado a temas, volatil, Integrado

Retroalimentación

Respuesta correcta
La respuesta correcta es: Orientado a temas, No volatil, Integrado, Historico
Pregunta 3

Enunciado de la pregunta

Selecione a que termino corresponde la definición:

Almacena los datos descriptivos, por lo general son tablas con Respuesta 1
un porcentaje muy bajo de filas en relación a las tablas de TABLA DE DIMENSIONES
hechos, pero pueden contener muchas mas columnas.
Respuesta 2
Almacena los indicadores del negocio tanto básicos como
calculados. TABLA DE HECHOS

Los atributos se organizan de esta forma, que son los niveles Respuesta 3
para analizar/agrupar la información en el cubo del modelo JERARQUIA
dimensional

Retroalimentación

Respuesta correcta
La respuesta correcta es: Almacena los datos descriptivos, por lo general son tablas con un
porcentaje muy bajo de filas en relación a las tablas de hechos, pero pueden contener
muchas mas columnas. → TABLA DE DIMENSIONES, Almacena los indicadores del negocio
tanto básicos como calculados. → TABLA DE HECHOS, Los atributos se organizan de esta
forma, que son los niveles para analizar/agrupar la información en el cubo del modelo
dimensional → JERARQUIA

Pregunta 4
Enunciado de la pregunta

Seleccione cuales son objetivos de un ODS:


Seleccione una o más de una:

a.

Normalizar los valores de la clave del negocio

b.

Mantener los datos cada vez que se hace una nueva carga
c.

Unificar la clave de negocio de aquellas dimensiones que se cargan desde distintas fuentes

d.

Asegurar la integridad y calidad de los datos en el proceso de carga ETL

e.

Almacenar los datos historicos finales

Retroalimentación

Respuesta correcta
Las respuestas correctas son: Asegurar la integridad y calidad de los datos en el proceso de
carga ETL, Unificar la clave de negocio de aquellas dimensiones que se cargan desde distintas
fuentes, Normalizar los valores de la clave del negocio

Pregunta 5
El órden del proceso ETL es el siguiente:
Seleccione una:

a.

Carga, Transformación y Extracción

b.

Extracción, Transformación y Carga

c.

Transformación, Extracción y Carga


d.

Extracción, Carga, Transformación

Retroalimentación

Respuesta correcta
La respuesta correcta es: Extracción, Transformación y Carga

Pregunta 6
En la fase de transformación del ETL se aplican las reglas de negocio o funciones
sobre los datos extraidos para convertirlos en datos que serán cargados al DWH
Seleccione una:

Verdadero

Falso

Retroalimentación

La respuesta correcta es 'Verdadero'

Pregunta 7
La fase de carga es el momento en el cual los datos que aún no fueron extraidos son
transformados luego que fueron cargados en el DWH
Seleccione una:

Verdadero

Falso

Retroalimentación

La respuesta correcta es 'Falso'

Pregunta 8
¿El predicado DISTINCT permite realizar en algunos casos lo mismo que la sentencia
GROUP BY?
Seleccione una:

Verdadero

Falso
Retroalimentación

La respuesta correcta es 'Verdadero'

Pregunta 9

Enunciado de la pregunta

Seleccione la opción correcta de acuerdo a la definición del predicado DISTINCT


Seleccione una:

a.

Permite listar los valores repetidos, escribiendose despues del SELECT y antes de la lista de
columnas

b.

Permite listar los valores unicos, sin repetidos, escribiendose al final de la consulta.

c.

Permite listar los valores unicos, sin repetidos, escribiendose despues del SELECT y despues
de la lista de columnas

d.

Permite listar los valores unicos, sin repetidos, escribiendose despues del SELECT y antes de la
lista de columnas

Retroalimentación

Respuesta correcta
La respuesta correcta es: Permite listar los valores unicos, sin repetidos, escribiendose
despues del SELECT y antes de la lista de columnas

Pregunta 10
El operador EXISTS:
Seleccione una:
a.

Es un operador de condición que se usa en el SELECT y está asociado a una subconsulta.


Devuelve verdadero cuando la subconsulta si devuelve registro y devuelve falso cuando no
devuelve ningun registro

b.

Es un operador de condición que se usa en el WHERE y está asociado a una subconsulta.


Devuelve verdadero cuando la subconsulta no devuelve registros y devuelve falso cuando si
devuelve registros

c.

Es un operador de condición que se usa en el WHERE y está asociado a una comparación por
un tipo de dato particcular. Devuelve verdadero cuando la subconsulta si devuelve registro y
devuelve falso cuando no devuelve ningun registro

d.

Es un operador de condición que se usa en el WHERE y está asociado a una subconsulta.


Devuelve verdadero cuando la subconsulta si devuelve registro y devuelve falso cuando no
devuelve ningun registro

Retroalimentación

Respuesta correcta
La respuesta correcta es: Es un operador de condición que se usa en el WHERE y está asociado
a una subconsulta. Devuelve verdadero cuando la subconsulta si devuelve registro y devuelve
falso cuando no devuelve ningun registro
Tema 6 - Dimensión Tiempo / Auditoría
ÚTEC Dimensión Tiempo y Auditoria
Contenido
Dimensión Tiempo: Jerarquía y Niveles
Tabla DT_TIEMPO en DWH
PLSQL – FUNCION
PROCEDIMIENTO CARGA Dimensión TIEMPO en DWH
AUDITORIA - Historial de Cambios
AUDITORIA a NIVEL de Registro - Tabla DT_CARRERA
AUDITORIA – Trigger T_AUD_DT_CARRERA

Dimensión Tiempo: Jerarquía y Niveles


La dimensión TIEMPO es una dimensión presente en
TODOS los modelos dimensionales de BI, ya que el
análisis de datos tiene como objetivo el estudio
HISTORICO de la organización (Empresa, Universidad, .) ...
Diferenciar el semestre Sem1
Sem1: Semestre 1
CALENDARIO del semestre S1.
s1: Semestre 1 ACADÉMICO.
Por ejemplo, para la Carrera TTI
Generación 2015: -el primer
semestre ACADÉMICO S1
comenzó en julio/2015, que
corresponde al -segundo
semestre Calendario Sem2
(julio-diciembre 2015).
Para el análisis de los estudiantes inscriptos/activos, agrupados por
año / semestre / carrera vamos a organizar la dimensión TIEMPO en
una jerarquía.
La jerarquía nos permiten agrupar/organizar una dimensión en varios
niveles.
La jerarquía para la dimensión tiempo en el DWH para el Análisis de
"Estudiantes Inscriptos" del Cliente "UNIVERSIDAD" va a tener 2
niveles: Año
Semestre
Para cada fecha de la dimensión tiempo
se carga el año y semestre CALENDARIO de la fecha La tabla para la dimension Tiempo
DT TIEMPO
tiene las siguientes
columnas
obligatorias (NOT NULL)
SK_TIEMPO INTEGER
Clave Primaria
FECHA DATE
ANIO INTEGER
SEMESTRE VARCHAR(4)
Valores posibles:
Sem1, Sem2
TABLA DT_TIEMPO EN DWH
Para la Dimension tiempo se va a crear

1)TABLA DT_TIEMPO

2)FUNCION F_SEMESTRE

3)PROCEDIMIENTO P_DWH_DT_TIEMPO

3) PROCEDIMIENTO P_DWH_DT_TIEMPO

Programa almacenado en la BD

P DWH DT TIEMPO

genera los valores de la dimensión tiempo para un rango de fechas.

Para la Universidad el rango de tiempo es:

Fecha Desde 01/01/2013 – Inicio actividad

Fecha Hasta 31/12/2020 – Hasta el 2020

1) TABLA DT_TIEMPO

CREATE TABLE DT_TIEMPO

SK TIEMPO INTEGER NOT NULL PRIMARY KEY,

FECHA DATE NOT NULL,

ANIO INTEGER NOT NULL,

SEMESTRE VARCHAR(4) NOT NULL

3) Programa/procedimiento de carga en DWH de

la Dimensión TIEMPO P_DWH_DT_TIEMPO

debe:

a)DECLARAR 2 Variables de tipo DATE

Fecha_Desde

Fecha_Hasta

b)Asignar valores las a las variables

Fecha Desde

Fecha Hasta
01/01/2013

31/12/2020

c)Repetir (ciclo/bucle LOOP)

desde Fecha Desde

hasta Fecha Hasta

INSERTAR registro en la tabla DT_Tiempo

con los siguientes valores para cada fecha

SK_tiempo Numero yyyymmdd

Fecha Fecha

Anio Numero yyyy

Semestre Función f_semestre

2)FUNCION F_SEMESTRE

NO existe el formato Semestre para tipo de dato DATE

(fecha), como si existe el formato Trimestre 'Q'

Se necesita crear la función almacenada

F_SEMESTRE, para una fecha devuelva semestre de la fecha

Por ejemplo

f_semestre(" 10/10/2015' ) devuelve Sem2

f_semestre(' 01/02/2016' ) devuelve Sem1


PLSQL – FUNCION F_SEMESTRE
FUNCION es un programa PL/SQL que recibe datos (argumento, parámetro)

devuelve un valor.

La FUNCION F SEMESTRE debe:

Recibir dato (argumento, parámetro) de tipo DATE

Devolver Texto 'Sem1' o 'Sem2'

Para analizar en que CASO (CASE) corresponde el texto Sem1 o Sem2

se usa comando CASE , con la condicion

De que si el mes es menor a julio la fecha es del Primer Semestre

De lo contrario la fecha es del Segundo Semestre

MES de la FECHA menor a julio

TO_CHAR(FECHA, 'MM') < ‘07’

Si se cumple la condicion entonces (THEN) devuelve 'Sem1'

Si NO (ELSE) se cumple devuelve 'Sem2'

El CASE es el siguiente:

CASE

WHEN TO_CHAR(FECHA ‘MM’) <’07’ -- Mes menor a julio

THEN ‘Sem1’ -- SI se cumple es Sem1

Else ‘Sem2’ -- NO se cumple es sem2


SINTAXIS de la FUNCION

CREATE [OR REPLACE] FUNCTION nombre_func

(argumento1 [modo] tipo_de_dato,

argumento2 [modo] tipo_de_dato,

...)

RETURN tipo_de_dato

IS | AS

bloque_PL/SQL;

Donde

Argumento/Parámetro

es el valor que recibe la función

RETURN

especifica el tipo de dato a devolver

Una función se puede usar/llamar en/desde

Columna de un SELECT.

Condiciones en cláusulas WHERE y HAVING.

ORDER BY y GROUP BY.

VALUES de un comando INSERT.

SET de un comando UPDATE.

Crear FUNCION F_SEMESTRE con el siguiente PLSQL

CREATE OR REPLACE FUNCTION --Crear Funcion

F_SEMESTRE

DATE) (FECHA

--Nombre de la Funcion

--Recibe FECHA

RETURN VARCHAR --Devuelve TEXTO

IS
BEGIN --Inicio Funcion

RETURN -- Valor a retornar

( --Inicio retornar

CASE --Inicio CASE

WHEN TO CHAR(FECHA, 'MM') <'07' --Condicion

"Sem1'

"Sem2'

THEN

ELSE

END -- Fin CASE

);

END F_SEMESTRE; --Fin Funcion

Ejecutar FUNCION F_SEMESTRE en la consulta

FECHA, SELECT SYSDATE

F SEMESTRE(SYSDATE) SEMESTRE FROM DUAL;


Crear Procedimiento P DWH_DT_TIEMPO para la carga de los
registros de la Dimensión TIEMPO en DWH
CREATE OR REPLACE PROCEDURE P_DWH_DT_TIEMPO

IS /* DECLARAR Variables de tipo DATE */

Fecha_Desde DATE;

Fecha_Hasta DATE;

BEGIN /* Inicio del programa */

/* ASIGNAR valores a las variables de fecha. En Oracle la ASIGNACION de valor es con := */

Fecha_Desde := TO_DATE('20130101','YYYYMMDD'); --Primera fecha a registrar

Fecha_Hasta := TO_DATE('20201231','YYYYMMDD'); --Ultima fecha a registrar

/* Mientras (WHILE) se cumpla condicion Fecha_Desde <= Fecha_Hasta se repite el ciclo (LOOP)

Cuando NO se cumpla condicion se termina ciclo (LOOP) y se continua despues del END LOOP

*/

WHILE FECHA_DESDE <= FECHA_HASTA WHILE --Condicion para que el Ciclo se repita

LOOP --Inicio Ciclo

INSERT INTO DT_TIEMPO --Insertar fecha INSERT INTO DT_TIEMPO

(SK_TIEMPO, FECHA, ANIO, SEMESTRE )

VALUES

(TO CHAR (FECHA_DESDE,'YYYYMMDD'),

FECHA DESDE,

TO CHAR (FECHA_DESDE,'YYYY'),

F_SEMESTRE

FECHA DESDE := FECHA_DESDE + 1; -Incrementa en 1 la fecha_desde/

(FECHA DESDE)) ;

END LOOP; -- Vuelve al inicio y verifica condicion (WHILE)

COMMIT; -- Grabar registros

END P_DWH_DT_TIEMPO; /* Fin del programa */


DIMENSION TIEMPO EN DWH
--Consulta Carga de datos en Dimension Tiempo Tabla DT TIEMPO

ALTER SESSION SET NLS DATE FORMAT = 'DD/MM/YYYY';

SELECT

MIN(FECHA) FEC_MIN,

МАX{FECHA) FEC_MAX,

COUNT(*) FEC_CANT

FROM DT TIEMPO;

--Ejecutar Procedimiento

EXECUTE P_DWH_DT_TIEMPO;
AUDITORIA – HISTORIAL DE CAMBIOS
La Auditoria de la Base de Datos tiene como objetivo registrar

el historial de los cambios realizados en la base de datos.

La Auditoria-Historial/cambios en la BD puede ser a Nivel de

Registro : Se registra en la misma tabla de datos,

creando columnas de auditoria:

quien (usuario) y cuando (fecha) registro el

alta y realizo la ultima modificación

Se crea una tabla de auditoria para la tabla a

auditar donde se guarda la historia de los

cambios, o sea, los registros antes de

modificar (Actualización y eliminación)

Base de Datos: Auditar toda la base de datos. En este

Tabla:

caso el administrador de la BD activa la

auditoría de la base de datos, configurando

los parámetro de auditoria

En Oracle se pueden consultar los parámetros de auditoria de

la BD con el siguiente comando

SHOW PARAMETERS AUDIT;

AUDITORIA A NIVEL DE REGISTRO

En el DWH para el Análisis de

"Estudiantes Inscriptos" del Cliente

"UNIVERSIDAD" vamos a utilizar la

auditoria a nivel de registro, creando las

siguientes columnas de auditoria, para

cada tabla de Dimension (DT_dimension) y


de Hecho (HT_Hecho)

ALTA_USUARIO VARCHAR(50)

ALTA_FECHA DATE

MOD_USUARIO VARCHAR(50)

MOD FECHA DATE

AUDITORIA a NIVEL de Registro - Tabla DT_CARRERA


AUDITORIA A NIVEL DE REGISTRO - Tabla

DT CARRERA

1)Modificar tabla DT_CARRERA para

adicionar las siguientes columnas de

auditoria:

ALTA_USUARIO VARCHAR(50)

ALTA_FECHA DATE

MOD_USUARIO VARCHAR(50)

MOD FECHA DATE

2) Crear trigger T_ AUD_BT_CARRERA

asociado a la tabla DT_CARRERA que se

"dispare" con los eventos INSERT y UPDATE


2) El trigger T AUD DT_CARRERA para la auditoria de la

tabla DT_CARRERA tiene las siguientes definiciones:

Nombre del Trigger -- T_AUD DT_CARRERA

Tipo: De tabla -- ON DT CARRERA

Momento: Antes -- BEFORE

Evento: Insertar o Modificar INSERT OR UPDATE

Nivel: De registro FOR EACH ROW

Las definiciones del trigger T AUD_DT_CARRERA son:

CREATE OR REPLACE TRIGGER T_AUD_DT_CARRERA --Nombre del Trigger

ON DT CARRERA --Tipо Tabla

BEFORE INSERT OR UPDATE --Momento: Antes

--Evento: -- INSERT UPDATE

FOR EACH ROW --Para cada registro

El trigger T AUD_DT_CARRERA puede ser ejecutado/disparado por mas de un evento:

INSERT y el UPDATE

Para identificar el evento y ejecutar los comandos

correspondientes, se usan las condiciones específicas de los

INSERTING, y UPDATING triggers:

Con la estructura de control IF se identificar el evento

IF INSERTING THEN

Ejecutar Comandos para INSERT

END IF;

IF UPDATING THEN

Ejecutar Comandos para UPDATE

END IF;

1)Modificar (ALTER ) tabla DT CARRERA

para adicionar (ADD) columnas de auditoria


ALTER TABLE DT_CARRERA

ADD (

ALTA_USUARIO VARCHAR(50)

ALTA_FECHA DATE

MOD_USUARIO VARCHAR(50)

MOD FECHA DATE

);

AUDITORIA – TRIGGER T_AUD_DT_CARRERA


Para el trigger T_ AUD_DT_CARRERA se

ejecutan los siguientes comandos, según el evento

Comandos a ejecutar con evento INSERT

IF INSERTING THEN

--Comandos para INSERT

SELECT USER,

SYSDATE

INTO :NEW.ALTA_USUARIO,

:NEW.ALTA_FECHA

FROM DUAL;

END IF;

Comandos a ejecutar con evento UPDATE

IF UPDATING THEN

--Comandos para UPDATE

SELECT USER,

SYSDATE

INTO :NEW.MOD_USUARIO,

:NEW.MOD_FECHA

FROM DUAL;
END IF;

PLSQL para crear trigger

T_AUD DT CARRERA son:

CREATE OR REPLACE TRIGGER

T_AUD DT_CARRERA

BEFORE INSERT OR UPDATE

ON DT CARRERA

FOR EACH ROW

BEGIN

IF INSERTING THEN

--Comandos para INSERT

SELECT USER,

SYSDATE

INTO :NEW.ALTA_USUARIO,

:NEW.ALTA_FECHA

FROM DUAL;

END IF;

IF UPDATING THEN

--Comandos para UPDATE

SELECT USER,

SYSDATE

INTO :NEW.MOD_USUARIO ,

:NEW.MOD_FECHA

FROM DUAL;

END IF;

END T_AUD DT_CARRERA;


AUDITORIA – TRIGGER T_AUD_DT_CARRERA
--Mostrar TEXTO/CODIGO del trigger consultando en el Diccionario de Datos la

tabla user_source

SELECT Text Auditoria_Carrera

FROM

WHER user_source 'T_AUD DT_CARRERA' name

ORDER BY line;
AUDITORIA – TRIGGER T_AUD_DT_CARRERA
Test de funcionamiento para el trigger T AUD DT_CARRERA

-Vamos a volver a cargar los registros en DWH para la dimensión CARRERA

TEST ALTA de registros

1)BORRAR los registros YA cargados

DELETE FROM DT_CARRERA;

2)CARGAR registros en DT CARRERA

EXECUTE P_DWH_DT_CARRERA;

Consulta Registros cargados:

SELECT * FROM DT_CARRERA

ORDER BY CARRERA_PK;

TEST MODIFICAR registros

Modificar la DESCRIPCION de la CARRERA ALIMENTOS

UPDATE DT_CARRERA

SET CARRERA_DESC = 'Licenciatura Análisis Alimentario'

WHERE CARRERA_PK = 'ALIMENTOS';


Tema 7 - Carga de Hechos en DWH
Carga HECHO en DWH – HT_INSCRIPTOS desde ODS
Para el Análisis "Estudiantes Inscriptos" la tabla de HECHOS en DWH es HT_INSCRIPTOS,

que se carga con los datos de la tabla ODS_H_INSCRIPTOS,

Donde

Dimensiones se registran con clave Subrogada SK (Surrogate Key)

que es un numero entero (INTEGER) y obligatoria (NOT NULL)

SK CARRERA

SK_GENERACION

SK SEMESTRE

SK FEC_INSCR
SK ESTUDIANTE

Medida/Métrica es Cantidad 1, ya que cada registro en HT INSCRIPTOS

representa 1 estudiante inscripto en la Carrera/Semestre

CREATE TABLE HT_INSCRIPTOS

( SK_CARRERA INTEGER NOT NULL,

SK_GENERACION INTEGER NOT NULL,

SK_SEMESTRE INTEGER NOT NULL,

SK_ESTUDIANTE INTEGER NOT NULL,

SK_FECHA_INSC INTEGER NOT NULL,

CANTIDAD INTEGER NOT NULL,

CONSTRAINT FK_INSC_CARRERA FOREIGN KEY(SK_CARRERA)

REFERENCES DT_CARRERA(SK_CARRERA),

CONSTRAINT FK_INSC_GENERACION FOREIGN KEY(SK_GENERACION)

REFERENCES DT_GENERACION(SK_CARRERA),

CONSTRAINT FK_INSC_Generacion FOREIGN KEY (SK_Generacion)

REFERENCES DT Generacion(SK_Generacion),

CONSTRAINT FK_INSC_Semestre FOREIGN KEY (SK_Semestre)


REFERENCES DT Semestre(SK_Semestre),

CONSTRAINT FK INSC Estudiante FOREIGN KEY (SK_Estudiante)

REFERENCES DT_Estudiante(SK_Estudiante),

CONSTRAINT FK_INSC_Fec_Insc FOREIGN KEY (SK_Fecha_Insc)

REFERENCES DT Tiempo(SK_Tiempo)

CONSULTA para cargar la tabla Hecho

HT INSCRIPTOS desde ODS_H_INSCRIPTOS

SELECT

C.SK CARRERA,

G.SK GENERACION,

S.SK SEMESTRE,

E.SK_ESTUDIANTE,

T.SK TIEMPO,

CANTIDAD

FROM ODS H_INSCRIPTOS

LEFT OUTER JOIN DT_CARRERA

ON C.CARRERA_PK = H.CARRERA

LEFT OUTER JOIN DT_GENERACION

ON G.GENERACION_PK = H.GENERACION

LEFT OUTER JOIN DT SEMESTRE

ON S.SEMESTRE_PK = H.SEMESTRE

LEFT OUTER JOIN DT ESTUDIANTE

ON E.ESTUDIANTE_PK = H.DOCUMENTO

LEFT OUTER JOIN DT_TIEMPO

ON T.SK_TIEMPO = H.SEMESTRE_FECHA
PERIODICIDAD/AUDITORIA Carga HECHO en DWH

Las cargas del HECHO al DWH

se hacen con determinada

periodicidad, acordada con el

cliente.

La periodicidad definida

puede ser

anual

semestral

trimestral

mensual

semanal

diaria

La periodicidad de la carga

del Hecho HT_INSCRIPTOS es

semestral

Para identificar el periodo de carga del HECHO se adiciona

a la tabla

la columna
HT_INSCRIPTOS

PERIODO_CARGA

PERIODO_CARGA contiene, para nuestro análisis de periodicidad

semestral, el año y semestre con el siguiente formato numérico

YYYYSS

por ejemplo Primer semestre del 2015 201501

Segundo semestre del 2015 201502

Si en una carga de HT_INSCRIPTOS se registran/cargan varios semestres,

se identifica la carga (periodo_carga) con el ultimo semestre, en nuestro

caso estamos cargando desde el 201301 al 201501 y la carga se

representa con periodo_carga=201501.

Vamos a adicionar a la tabla HT_INSCRIPTOS las

columnas para

Periodo de carga PERIODO CARGA

ALTA USUARIO

ALTA_FECHA.

Auditoria

Comando SQL

ALTER TABLE HT_INSCRIPTOS

ADD ( PERIODO_CARGA INTEGER,

ALTA_USUARIO VARCHAR(50),

ALTA_FECHA DATE

);
AUDITORIA Trigger T_AUD_HT_INSCRIPTOS
AUDITORIA A NIVEL DE REGISTRO

En el DWH para el Análisis de

"Estudiantes Inscriptos" del Cliente

"UNIVERSIDAD"

vamos a utilizar la auditoria a nivel de

registro, registrando información de

auditoria en las siguientes columnas

ALTA_USUARIO

ALTA_FECHA

PLSQL para crear trigger T AUD_HT_INSCRIPTOS

para registrar auditoria a nivel de registro

CREATE OR REPLACE TRIGGER T_AUD_HT_INSCRIPTOS


BEFORE INSERT

ON HT INSCRIPTOS

FOR EACH ROW

BEGIN

SELECT USER,

SYSDATE

INTO :NEW.ALTA_USUARIO

:NEW.ALTA_FECHA

DUAL; FROM

END T_AUD_HT_INSCRIPTOS ;
Procedimiento de Carga HECHO en DWH
Para un determinado PERIODO de CARGA

Si la carga es por primera vez,

solo se insertan los registros.

Si la carga es por segunda vez,

motivado por un error,

entonces se requiere

recargar TODOS los datos,

En este caso se debe

-Primero borrar TODOS los registros

del PERIODO de CARGA que se va a

cargar nuevamente

-Después INSERTAR los registros

La cargar de datos en los hechos

HT INSCRIPTOS

es solo con INSERT de datos,

ya que en caso que se deba modificar algún dato

se borra toda la carga realizada y se vuelve a

cargar todo el hecho.

Procedimiento de Carga Hecho HT_INSCRIPTOS

P_DWH_HT_INSCRIPTOS

El Procedimiento debe

1)Recibir como parametro/argumento

la periodicidad de la carga

2)Borrar los registros ya cargados para el


periodo a cargar

DELETE FROM HT_INSCRIPTOS

WHERE

PERIODO_CARGA = parametro

3)Insertar los registros del periodo


Procedimiento de Carga HECHO en
DWH
CREATE OR REPLACE PROCEDURE

P_DWH_HT_INSCRIPTOS

( p_periodo integer )/*parametro p_periodo */

IS

BEGIN /* Inicio del programa */

/* Borrar registros cargados para el periodo segun

valor de p_periodo

*/

DELETE FROM HT_INSCRIPTOS

WHERE

PERIODO_CARGA = p_periodo

/*Insertar Registros desde ODS_H_INSCRIPTOS */

INSERT INTO HT_INSCRIPTOS

SK CARRERA

SK_GENERACION

SK_SEMESTRE

SK_ESTUDIANTE

SK_FECHA_INSC

CANTIDAD

PERIODO_CARGA

SELECT
C.SK CARRERA,

G.SK_GENERACION,

S.SK SEMESTRE,

E.SK ESTUDIANTE,

T.SK_TIEMPO,

CANTIDAD,

P_PERIODO

ODS H_INSCRIPTOS

FROM H

LEFT OUTER JOIN DT CARRERA

ON C.CARRERA_PK = H.CARRERA

DT GENERACION

ON G.GENERACION_PK = H.GENERACION

DT SEMESTRE

LEFT OUTER JOIN G

LEFT OUTER JOIN

ON S.SEMESTRE_PK = H.SEMESTRE

DT ESTUDIANTE

ON E.ESTUDIANTE_PK = H.DOCUMENTO

DT TIEMPO

ON T.SK_TIEMPO = H.SEMESTRE_FECHA

LEFT OUTER JOIN E

LEFT OUTER JOIN

END P DWH HT_INSCRIPTOS;


HISTORICO de cargas de HECHO en DWH
Vamos a registrar el histórico de CARGAS de HECHOS en la Tabla HIST_CARGAS_HT que contiene

Nombre de la Tabla

Tabla_HT Nombre de la Tabla

Periodo Periodo cargado

Fecha_Carga Fecha de carga

Reg Borrados Cantidad de registros borrados

Reg_Insertados Cantidad de registros insertados

Ejemplo de registros en la Tabla HIST_CARGAS_HT

Tabla_HT Periodo Fecha_carga Reg Borrados Reg insertados

HT INSCRIPTOS 201501 03/04/16 0 24

HISTORICO DE CARGAS DE HECHOS EN DWH

Para registrar el histórico de CARGAS de HECHOS debemos modificar el

procedimiento de cada hecho, por ejemplo, modificar

P DWH_HT_INSCRIPTOS para
-Obtener la Cantidad de los registros Borrados

-Obtener la Cantidad de los registros insertados

-Insertar la información en la Tabla HIST_CARGAS_HT

En PLSQL se usa SQL%ROWCOUNT para obtener el número de registros

procesados por el último comando SQL:

UPDATE, DELETE INSERT,

La cantidad de registros Borrados, se obtiene del valor de

SQL%ROWCOUNT después del comando DELETE

La cantidad de registros Insertados, se obtiene del valor de

SQL%ROWCOUNT después del comando INSERT

SELECT INTO

2) Después del comando DELETE

se obtiene la cantidad de registros borrados Modificaciones al procedimiento

P DWH_HT_INSCRIPTOS

para registrar el histórico de CARGAS de HECHOS Reg_borrados:= SQL%ROWCOUNT;

1)Declarar variables 3) Después del comando INSERT

se obtiene la cantidad de registros insertados

v_Reg_borrados integer;

Reg_insertados:= SQL%ROWCOUNT;

v_Reg_insertados integer;

4)Insertar registro en tabla HIST_CARGAS_HT

HISTORICO en P_DWH_HT_INSCRIPTOS
Ejecutar procedimiento P DWH_HT_INSCRIPTOS para el periodo

Primer semestre del 2015,

donde parámetro p_periodo es 201501


Execute P_DWH_HT_INSCRIPTOS ( 201501);
Cuestionario 1

BDC-T-EM-006
Seleccione, para cada característica, cual corresponde a OLTP y cual a OLAP
OLAP
Predomina la Consulta
Respuesta 1
OLAP
Dato Histórico
Respuesta 2 OLTP

Actividad operativa Respuesta 3 OLTP

BD Normalizada Respuesta 4 OLAP

Respuesta 5
Estructura Multidimensional

Retroalimentación
Respuesta correcta
La respuesta correcta es: Predomina la Consulta → OLAP, Dato Histórico → OLAP, Actividad operativa → OLTP, BD Normalizada → O
Estructura Multidimensional → OLAP

Pregunta 2
Parcialmente correcta
Puntúa 0,60 sobre 1,00

Marcar pregunta
Enunciado de la pregunta

BDC-T-EM-005
Seleccione la respuesta que corresponde
ETL
Proceso de Carga/Integración de Datos
Respuesta 1
Pentaho
Procesamiento analítico en línea Respuesta 2
DWH-DataWareHouse

Almacén de Datos – Base Datos Corporativa Respuesta 3


OLAP
Respuesta 4
Herramienta de BI
OLTP
Respuesta 5
Procesamiento de Transacciones en Línea
Marcar pregunta

Enunciado de la pregunta

Retroalimentación
Respuesta parcialmente correcta.
Ha seleccionado correctamente 3.
La respuesta correcta es: Proceso de Carga/Integración de Datos → ETL, Procesamiento analítico en línea → OLAP, Almacén de Datos
Datos Corporativa → DWH-DataWareHouse, Herramienta de BI → Pentaho, Procesamiento de Transacciones en Línea → OLTP

Pregunta 3
Correcta
Puntúa 1,00 sobre 1,00
BDC-T-EM-008
Seleccione Verdadero o Falso para las siguientes afirmaciones sobre modelo
dimensional En el Modelo dimensional los datos están desnormalizados Respuesta 1
para realizar consultas de alto rendimiento VERDADERO

Respuesta 2
El modelo dimensional NO usa Cubos/Consultas OLAP
FALSO

Modelo DIMENSIONAL compuesto por una tabla “de hechos” (fact) Respuesta 3
y un conjunto de tablas llamadas “dimensiones“ VERDADERO

El modelo dimensional es una adaptación del modelo relacional para el Respuesta 4


almacén de datos de BI, orientado a consultas VERDADERO

Retroalimentación
Respuesta correcta
La respuesta correcta es: En el Modelo dimensional los datos están desnormalizados para realizar consultas de alto rendimiento →
VERDADERO, El modelo dimensional NO usa Cubos/Consultas OLAP → FALSO, Modelo DIMENSIONAL compuesto por una tabla “de h
(fact) y un conjunto de tablas llamadas “dimensiones“ → VERDADERO, El modelo dimensional es una adaptación del modelo relacion
almacén de datos de BI, orientado a consultas → VERDADERO

Pregunta 4
Correcta
Puntúa 1,00 sobre 1,00

Marcar pregunta
Enunciado de la pregunta

BDC-T-EM-007
Para cada figura seleccione el Tipo de modelo dimensional que corresponde

Modelo Estrella (Star) Figura A


Respuesta 1

Figura C
Respuesta 2

Figura B
Respuesta 3
Modelo 3FN

Modelo Copo de Nieve (Snowflake)


→ →

BDC-T-EM-004
Seleccione Verdadero o Falso
Respuesta 1
BI -Business Intelligence - Inteligencia de negocio usa Cubos de
VERDADERO
información
Respuesta 2
VERDADERO
Modelo Dimensional se construye con dimensiones que agrupan los
hechos a analizar Respuesta 3
FALSO

Base de datos corporativa tiene un Modelo de datos orientado a Respuesta 4


transacciones
VERDADERO

Base de Datos Corporativa se usa para la toma decisiones y


análisis/inteligencia del negocio

Retroalimentación

Respuesta correcta
La respuesta correcta es: BI -Business Intelligence - Inteligencia de negocio usa Cubos de información →
VERDADERO, Modelo Dimensional se construye con dimensiones que agrupan los hechos a analizar →
VERDADERO, Base de datos corporativa tiene un Modelo de datos orientado a transacciones → FALSO, Base de
Datos Corporativa se usa para la toma decisiones y análisis/inteligencia del negocio → VERDADERO
Cuestionario 2

Para el reporte analítico se identifican los siguientes items:


Seleccione una:

a.
Que se analiza? Que se mide? Como se agrupa la información? Que contiene cada Grupo?

b.
Cómo se analiza? Que se mide? Cuantos grupos de información? Que contiene cada Grupo?

c.
Como se analiza? Como se mide? Como se agrupa la información?

d.
Que se analiza? Como se mide? Cuantos grupos de información? Que contiene cada Grupo?

Retroalimentación

Respuesta correcta
En un Reporte Analítico, los hechos determinan que se analiza y que se mide.
La clave subrogada (SK) es el identificador INTERNO que se usa para identificar de forma única los
registros de la dimensión.

La Clave Primaria de la tabla dimension es la clave de negocio.


Seleccione una:

Verdadero
La tabla dimensión está conformada por 4 campos, y tiene un campo PK y otro FK.

La tabla HECHOS está conformada por una columna por cada dimensión y otra por cada métrica.
Cuestionario 3

Un ODS es un almacén de datos temporal en el cual se cargan en el cual se cargan los datos desde las
fuentes de información (datos operacionales, planillas, etc.).
Seleccione una:

Verdadero

Seleccione las caracteristicas que debe cumplir un Data Warehouse:


Seleccione una:

a.
Integrado e Historico

b.
Orientado a temas, No volatil, Integrado, Historico

c.
Orientado a procesos, No volatil, Integrado, Historico

d.
Orientado a temas, volatil, Integrado
Retroalimentación
Respuesta correcta
La respuesta correcta es: Orientado a temas, No volatil, Integrado, Historico

Pregunta 3

a.
Mantener los datos cada vez que se hace una nueva carga

b.
Unificar la clave de negocio de aquellas dimensiones que se cargan desde distintas fuentes

c.
Almacenar los datos historicos finales

d.
e.
Normalizar los valores de la clave del negocio
Asegurar la integridad y calidad de los datos en el proceso de carga ETL

a.
Carga, Transformación y Extracción

b.
Extracción, Carga, Transformación

c.
Transformación, Extracción y Carga

d.
Extracción, Transformación y Carga
En la fase de transformación del ETL se aplican las reglas de negocio o funciones sobre los datos
extraidos para convertirlos en datos que serán cargados al DWH Seleccione una:

Verdadero

Falso

Retroalimentación
La respuesta correcta es 'Verdadero'

Pregunta 7
Correcta
Puntúa 0,50 sobre 0,50

Marcar pregunta
Enunciado de la pregunta

La fase de carga es el momento en el cual los datos que aún no fueron extraidos son transformados
luego que fueron cargados en el DWH
¿El predicado DISTINCT permite realizar en algunos casos lo mismo que la sentencia GROUP BY?
Seleccione una:

Retroalimentación

La respuesta correcta es 'Verdadero'

Pregunta 9
Correcta
Puntúa 0,50 sobre 0,50
Seleccione la opción correcta de acuerdo a la definición del predicado
DISTINCT Seleccione una:

a.
Permite listar los valores unicos, sin repetidos, escribiendose despues del SELECT y antes de la lista de columnas

b.
Permite listar los valores unicos, sin repetidos, escribiendose al final de la consulta.

c.
Permite listar los valores repetidos, escribiendose despues del SELECT y antes de la lista de columnas
Marcar pregunta

Enunciado de la pregunta

d.
Permite listar los valores unicos, sin repetidos, escribiendose despues del SELECT y despues de la lista de columnas

a.
Es un operador de condición que se usa en el SELECT y está asociado a una subconsulta. Devuelve verdadero
cuando la subconsulta si devuelve registro y devuelve falso cuando no devuelve ningun registro

b.
Es un operador de condición que se usa en el WHERE y está asociado a una subconsulta. Devuelve verdadero cuando la subconsulta s
devuelve registro y devuelve falso cuando no devuelve ningun registro

c.
Es un operador de condición que se usa en el WHERE y está asociado a una subconsulta. Devuelve verdadero
cuando la subconsulta no devuelve registros y devuelve falso cuando si devuelve registros

d.
Es un operador de condición que se usa en el WHERE y está asociado a una comparación por un tipo de dato
particcular.
Devuelve verdadero cuando la subconsulta si devuelve registro y devuelve falso cuando no devuelve ningun
registro
Retroalimentación

Respuesta correcta
La respuesta correcta es: Es un operador de condición que se usa en el WHERE y está asociado a una subconsulta.
Devuelve verdadero cuando la subconsulta si devuelve registro y devuelve falso cuando no devuelve ningun
registro

Cuestionario 4

En el proceso de transformación de una dimensión en ODS, la Clave de Negocio, por ejemplo


CARRERA_PK debe ser UNICA para garantizar que no se repita la clave.
Seleccione una:

Verdadero

Falso

Retroalimentación
La respuesta correcta es 'Verdadero'

Pregunta 2
Correcta
Puntúa 1,00 sobre 1,00

Marcar pregunta
Enunciado de la pregunta

Para eliminar espacios en blanco en el extremo derecho de la cadena de caracteres utilizamos la función
LTRIM Seleccione una:

Verdadero
Falso

Retroalimentación
RTRIM: es la función para quitar espacios en blanco de extremo derecho La respuesta
correcta es 'Falso'
Una de las ventajas de crear procedimientos (PROCEDURES) en PL/SQL es tener un conjunto de
comandos SQL almacenados para poderlos ejecutar todos juntos en forma repetida.

COMPILAR: Es el proceso para revisar la lógica de ejecución de los comandos de un programa PL/SQL
La función TO_NUMBER(texto) nos permite convertir un valor númerico en una cadena de caracteres.
Seleccione una:

Verdadero
Identificador interno que se usa para identificar de forma única los
registros de la dimensión se llama:
Respuesta 1
Clave Subrogada

Para eliminar los espacios en blanco en ambos extremos de una cadena Respuesta 2
de caracteres utilizamos la función: TRIM

Para crear un programa PL/SQL se usa el siguiente comando


Respuesta 3
CREATE OR REPLACE
PROCEDURE

Lenguaje de programación cuyo nombre es Procedural


Language/Structured Query Language
Respuesta 4
PL/SQL

Clave que el cliente reconoce en su negocio se le llama:

Respuesta 5
Clave de Negocio

Retroalimentación

Respuesta correcta
La respuesta correcta es: Identificador interno que se usa para identificar de forma única los registros de la
dimensión se llama: → Clave Subrogada, Para eliminar los espacios en blanco en ambos extremos de una cadena
de caracteres utilizamos la función: → TRIM, Para crear un programa PL/SQL se usa el siguiente comando →
CREATE OR REPLACE PROCEDURE, Lenguaje de programación cuyo nombre es Procedural Language/Structured
Query Language → PL/SQL, Clave que el cliente reconoce en su negocio se le llama: → Clave de Negocio

Cuestionario 5

La fase 3 de carga es la ultima fase del proceso ETL, donde se cargan los datos al almacén de datos
corporativos DWH, a partir del cual después, usando herramientas de BI se forman los Cubos de
Información OLAP para los reportes de análisis y cuadros/tableros de mando.
Seleccione una:

Verdadero

Seleccione las estructuras que se manejaron a lo largo del proceso ETL para la dimensión CARRERA
(según la nomenclatura propuesta en el material de estudio):
Seleccione una:
a.
Fase 1: Extracción: D_CARRERA
Fase 2:
Transformación:
DT_CARRERA Fase
3: Carga:
ODS_D_CARRERA

b.
Fase 1: Extracción: ODS_D_CARRERA
Fase 2:
Transformación:
D_CARRERA Fase
3: Carga:
DT_CARRERA

c.
Fase 1: Extracción: DT_CARRERA
Fase 2: Transformación: ODS_D_CARRERA
Fase 3: Carga: D_CARRERA

Fase 1: Extracción: D_CARRERA


Seleccione las estructuras que se manejaron a lo largo del proceso ETL para el Hecho INSCRIPTOS (según
la nomenclatura propuesta en el material de estudio):
Seleccione una:

a.
Fase 1: Extracción: ODS_H_INSCRIPTOS
Fase 2:
Transformación:
H_INSCRIPTOS Fase
3: Carga:
HT_INSCRIPTOS

b.
Fase 1: Extracción: H_INSCRIPTOS
Fase 2: Transformación:
HT_H_INSCRIPTOS Fase
3: Carga:
ODS_H_INSCRIPTOS

c.
Fase 1: Extracción: H_INSCRIPTOS
Fase 2: Transformación: ODS_H_INSCRIPTOS
Fase 3: Carga: HT_INSCRIPTOS
Puntúa 0,50 sobre 0,50

Marcar pregunta

d.
Fase 1: Extracción: HT_INSCRIPTOS
Fase 2: Transformación: ODS_H_INSCRIPTOS
Fase 3: Carga: H_INSCRIPTOS
Retroalimentación
Respuesta correcta
La respuesta correcta es: Fase 1: Extracción: H_INSCRIPTOS
Fase 2: Transformación: ODS_H_INSCRIPTOS
Fase 3: Carga: HT_INSCRIPTOS

Pregunta 4
Correcta
Enunciado de la pregunta

Para conocer la estructura interna de una tabla (columnas, obligatoriedad y tipo de dato) se utiliza la
sentencia:
Seleccione una:

a.
SHOW COLUMNS

b.
USER_TABLES

c.
DESCRIBE
Determine si la siguiente afirmación es VERDADERA o FALSA:
TRIGGER – DISPARADOR es un tipo de objeto de la BD que contiene código PLSQL para ejecutarse en
forma automática cuando se realiza una determinada acción o evento en la base de datos.
Por ejemplo podemos programar un trigger que se ejecuta (dispara) cuando se adiciona (INSERT) o
modifica (UPDATE) o elimina (DELETE) un registro de determinada tabla.

Retroalimentación
La respuesta correcta es 'Verdadero'

Pregunta 6
Correcta
Seleccione una:
Enunciado de la pregunta

Determine la sintaxis básica para crear un Trigger en la BD:


Seleccione una:

a.
CREATE OR REPLACE TRIGGER <nombre_trigger>
BEFORE|AFTER
SELECT
ON <nombre_tabla>
Puntúa 0,50 sobre 0,50

Marcar pregunta
FOR EACH ROW
DECLARE
-- variables
BEGIN
-- Comandos
END <nombre_trigger>;

b.
CREATE OR REPLACE TRIGGER <nombre_trigger>
BEFORE|AFTER
DELETE|INSERT|UPDATE
ON <nombre_tabla>
FOR EACH ROW
DECLARE
-- variables
BEGIN
-- Comandos
END <nombre_trigger>;

c.
CREATE OR REPLACE TRIGGER <nombre_trigger>
DELETE|INSERT|UPDATE
ON <nombre_tabla>
FOR EACH ROW
DECLARE
-- variables
BEGIN
-- Comandos
END <nombre_trigger>;

d.
CREATE OR REPLACE TRIGGER <nombre_trigger>
BEFORE|AFTER
DELETE|INSERT|UPDATE
ON <nombre_tabla>
FOR EACH ROW
DECLARE
-- variables

Determine si la siguiente afirmación es VERDADERA o FALSA:


Para los TRIGGERS existen las Variables PRE y POS, que se usan para obtener los valores de las columnas
del registro de la tabla antes del evento (variable PRE) y los nuevos valores de las columnas del registro
durante el evento (variable POS).
Seleccione una:

Verdadero

Falso
Marcar pregunta

Enunciado de la pregunta

Retroalimentación
La afirmación es falsa. La afirmación correcta es:
Para los TRIGGERS existen las Variables OLD y NEW , que se usan para obtener los valores de las columnas del registro de la tabla ante
evento (variable OLD) y los nuevos valores de las columnas del registro durante el evento (variable NEW).
La respuesta correcta es 'Falso'

Pregunta 8
Correcta
Puntúa 0,50 sobre 0,50
Seleccione la opción correcta y mas completa que describe el funcionamiento de las VARIABLES
ESPECIFICAS DE LOS TRIGGERS:
Seleccione una:

a.
Con :OLD.nombre_columna referenciamos el valor de la columna despues del evento. Tiene valor en UPDATE y
DELETE
Con :NEW.nombre_columna referenciamos el valor de la columna asignado antes del evento. Tiene valor en
INSERT y DELETE

b.
Con :OLD.nombre_columna referenciamos el valor de la columna antes del evento. Tiene valor en UPDATE y DELETE
Con :NEW.nombre_columna referenciamos el nuevo valor de la columna asignado por el evento. Tiene valor en UPDATE e
INSERT

c.
Con :OLD.nombre_columna referenciamos el valor de la columna antes del evento. Tiene valor en INSERT y
DELETE
Con :NEW.nombre_columna referenciamos el nuevo valor de la columna asignado por el evento. Tiene valor en
UPDATE y DELETE

d.
Con :OLD.nombre_columna referenciamos el valor de la columna antes del evento. Tiene valor en UPDATE y
DELETE
Con :NEW.nombre_columna referenciamos el nuevo valor de la columna asignado por el evento. Tiene valor en
INSERT
Seleccione la sintaxis correcta para cada uno de los comandos que se utilizan para manipular TRIGGERS:
Seleccione una:

a.
Activar: ALTER TRIGGER NombreTrigger ENABLE;

Borrar: DROP TRIGGER NombreTrigger;


Desactivar: ALTER TRIGGER NombreTrigger DISABLE;
Renombrar: RENAME TRIGGER Nombretrigger TO NuevoNombre;

b.
Activar: ALTER TRIGGER NombreTrigger ENABLE;
Borrar: DROP TRIGGER NombreTrigger;
Desactivar: DISABLED TRIGGER NombreTrigger DISABLE;
Renombrar: ALTER TRIGGER Nombretrigger RENAME TO NuevoNombre;

c.
Activar: ALTER TRIGGER NombreTrigger ENABLE;
Borrar: DROP TRIGGER NombreTrigger;
Desactivar: ALTER TRIGGER NombreTrigger DISABLE;
Renombrar: ALTER TRIGGER Nombretrigger RENAME TO NuevoNombre;
d.
Activar: ALTER TRIGGER NombreTrigger;
Borrar: DROP TRIGGER NombreTrigger;
Desactivar: ALTER TRIGGER NombreTrigger;
Renombrar: ALTER TRIGGER Nombretrigger RENAME TO NuevoNombre;

Seleccione la sintaxis correcta y completa del comando MERGE:


Seleccione una:

a.
MERGE INTO Tabla_a_Cargar
USING
(Consulta con datos a cargar )
ON (Condición a cumplir por los registros)
WHEN MATCHED THEN
--Si se cumple la condicion = registro ya esta cargado
-- se ejecuta comando UPDATE
; --Fin MERGE

b.
MERGE INTO Tabla_a_Cargar
USE
(Consulta con datos a cargar )
ON (Condición a cumplir por los registros)
WHEN MATCHED
--Si se cumple la condicion = registro ya esta cargado
-- se ejecuta comando UPDATE
WHEN NOT MATCHED
--NO se cumple la condicion = registro NUEVO
-- se ejecuta comando INSERT
; --Fin MERGE

c.
MERGE INTO Tabla_a_Cargar
USING
(Consulta con datos a cargar )
ON (Condición a cumplir por los registros)
WHEN NOT MATCHED THEN
--NO se cumple la condicion = registro NUEVO
-- se ejecuta comando INSERT
; --Fin MERGE

d.
MERGE INTO Tabla_a_Cargar
USING
(Consulta con datos a cargar )
ON (Condición a cumplir por los registros)
WHEN MATCHED THEN
--Si se cumple la condicion = registro ya esta cargado
-- se ejecuta comando UPDATE
WHEN NOT MATCHED THEN
--NO se cumple la condicion = registro NUEVO
-- se ejecuta comando INSERT
; --Fin MERGE
Retroalimentación
Respuesta correcta
La respuesta correcta es: MERGE INTO Tabla_a_Cargar
USING
(Consulta con datos a cargar )
ON (Condición a cumplir por los registros)
WHEN MATCHED THEN
--Si se cumple la condicion = registro ya esta cargado
-- se ejecuta comando UPDATE
WHEN NOT MATCHED THEN
--NO se cumple la condicion = registro NUEVO
-- se ejecuta comando INSERT
; --Fin MERGE
Cuestionario 6 n una tabla de
dimensión que utilidad tiene definir
JERARQUIAS?
Seleccione una:

a.
Permiten agrupar/organizar una dimensión en varios niveles.

b.
Permites organizar los campos de las dimensiones en subniveles

c.
Permite organizar los hechos para calcular en subniveles
Para la dimensión TIEMPO, que utilidad tiene definir una función
SEMESTRE Seleccione una:

a.
Dada una fecha calcule el semestre al que pertenece
b.
Devuelve una cadena de caracteres cualquiera a partir de una fecha

c.
Dada una fecha calcule una fecha del semestre al que pertenece

d.
Dada una cadena de caracteres calcule el semestre al que pertenece
Retroalimentación
Respuesta correcta
La respuesta correcta es: Dada una fecha calcule el semestre al que pertenece

Pregunta 3
Correcta
Puntúa 0,50 sobre 0,50

Marcar pregunta
Enunciado de la pregunta

Que utilidad tienen los parámetros en una función:


Seleccione una:

a.
Permite ejecutar una función repetidamente con los mismos valores que se ingresan en los parámetros

b.
Permite calcular un valor de salida a partir de los parámetros para una función

c.
Permite ingresar un único valor a una función para que se ejecute con diferentes valores en la misma ejecución
Marcar pregunta

Enunciado de la pregunta

d.
Permite ejecutar la misma función con diferentes valores cada vez que se lo llama

Retroalimentación
Respuesta correcta
La respuesta correcta es: Permite ejecutar la misma función con diferentes valores cada vez que se lo llama

Pregunta 4
Parcialmente correcta
Puntúa 0,40 sobre 0,50
Una función se puede usar/llamar en/desde:
Elije las opciones (pueden ser más de una)
correctas Seleccione una o más de una:

a.
Columna de un SELECT.

b.
En el comando CREATE TABLE

c.
VALUES de un comando INSERT.

d.
En el comando ALTER TRIGGER

e.
ORDER BY y GROUP BY.

f.
SET de un comando UPDATE.
g.
Condiciones en cláusulas WHERE y HAVING.

Retroalimentación

Respuesta parcialmente correcta.


Ha seleccionado correctamente 4.
Las respuestas correctas son: Columna de un SELECT., Condiciones en cláusulas WHERE y HAVING., ORDER BY y GROUP BY., VALUES d
comando INSERT., SET de un comando UPDATE.

Pregunta 5
Correcta
Puntúa 0,50 sobre 0,50
Marcar pregunta

Enunciado de la pregunta

CREATE OR PROCEDURE P_DWH_DT_TIEMPO_W (p_desde DATE, p_hasta DATE)


IS -- Parametros tipo fecha p_desde y p_hasta
DEFINED FECHA DATE;
BEGIN
FECHA := P_DESDE;
WHILE FECHA <= P_HASTA --Condicion para que el
Ciclo se repita LOOP
INSERT DT_TIEMPO SK_TIEMPO, FECHA, ANIO, SEMESTRE
VALUES (TO_CHAR (FECHA,'YYYYMMDD'), FECHA, TO_CHAR
(FECHA,'YYYY'), F_SEMESTRE(FECHA)) ;
END LOOP; -- Vuelve al inicio y verifica condicion (WHILE)
COMMIT;
END P_DWH_DT_TIEMPO_W;
Seleccione una o más de una:

a.
Falta incremento/decremento de la variable que condiciona el LOOP

c.
Mal el formato del WHILE

d.
Encabezado del procedure incorrecto

e.
Pasaje de parámetros en el procedure incorrecta

f.
Formato del INSERT incorrecta
b.
Definición de variable incorrecta

CREATE OR REPLACE TRIGGER T_AUD_DT_CARRERA


BEFORE UPDATE
ON DT_CARRERA
FOR EACH ROW
BEGIN
IF UPDATING THEN SELECT USER, SYSDATE
INTO
:OLD.MOD_USUARIO, :OLD.MOD_FECHA
FROM DUAL;
END IF;
END T_AUD_DT_CARRERA;
Seleccione una:

a.
Almacena en la tabla DT_Carrera antes de modificar un registros, con los nuevos valores de usuario y fecha.

b.
Almacena en la tabla DT_Carrera después de modificar un registros, con los nuevos valores de usuario y fecha.

c.
Almacena en la tabla DT_Carrera los valores actuales de usuario y fecha antes de modificar un registros
d.
Almacena en la tabla DT_Carrera después de modificar un registros, los valores de usuario y fecha anteriores a ser
modificados

Para crear la función que, dada un Fecha, devuelva a que Semestre pertenece, realicé:
Seleccione una:

a.
CREATE OR REPLACE PROCEDURE F_SEMESTRE (FECHA DATE)
RETURN VARCHAR
IS
BEGIN
RETURN (CASE
WHEN TO_CHAR(FECHA, 'MM') < '07' THEN 'Sem1'
ELSE 'Sem2'
END
);
END F_SEMESTRE;

b.
CREATE OR REPLACE FUNCTION F_SEMESTRE (FECHA DATE)
RETURN VARCHAR
IS
BEGIN
RETURN (CASE
WHEN TO_DATE(FECHA, 'MM') < '06' THEN 'Sem1'
ELSE 'Sem2'
END
);
END F_SEMESTRE;

c.
CREATE OR REPLACE FUNCTION F_SEMESTRE (FECHA DATE)
RETURN VARCHAR
IS
BEGIN
CASE
WHEN TO_CHAR(FECHA, 'MM') < '07' THEN 'Sem1'
ELSE 'Sem2'
END
;
END F_SEMESTRE;

d.
CREATE OR REPLACE FUNCTION F_SEMESTRE (FECHA DATE)
RETURN VARCHAR
IS
BEGIN
RETURN (CASE
WHEN TO_CHAR(FECHA, 'MM') < '07' THEN 'Sem1'
ELSE 'Sem2'
END
);
END F_SEMESTRE;

Retroalimentación
Respuesta correcta
La respuesta correcta es: CREATE OR REPLACE FUNCTION F_SEMESTRE (FECHA DATE) RETURN VARCHAR
IS
BEGIN
RETURN (CASE
WHEN TO_CHAR(FECHA, 'MM') < '07' THEN 'Sem1'
ELSE 'Sem2'
END
);
END F_SEMESTRE;
Cuestionario 7

Respecto la periodicidad de la carga del hecho en el DWH:


Seleccione una:

a.
La misma es definida por el sistema

b.
No es algo que afecte a la utilización del DWH, por lo cual es irrelevante.

c.
La misma se debe acordar con el cliente

d.
La misma queda a criterio del DBA o Analista de BI
Retroalimentación
Respuesta correcta
La respuesta correcta es: La misma se debe acordar con el cliente

Pregunta 2
Correcta
Puntúa 0,60 sobre 0,60
Marcar pregunta
Enunciado de la pregunta

En PLSQL se usa SQL%ROWCOUNT para obtener el número de registros procesados por el último
comando SQL del/los tipos:

Seleccione una:

a.
Todas las opciones mencionadas son válidas

b.
DELETE

c.
INSERT y UPDATE

Indique si la siguiente afirmación es V/F:


La carga de datos en los hechos HT_ENCUESTA es solo con UPDATE de datos, ya que en caso que se
deba modificar algún dato se modifica el valor necesario.
Seleccione una:

Verdadero

Falso

Retroalimentación
La respuesta correcta es 'Falso'

Pregunta 4
Correcta
Puntúa 0,80 sobre 0,80

Marcar pregunta
Enunciado de la pregunta

En el Diccionario de Datos existe la tabla/vista USER_OBJECTS para consultar los OBJETOS del Usuario, lo
cual permite mostrar la siguiente información:
Seleccione una:

a.
OBJECT_TYPE, OBJECT_NAME, MODIFICATED, LAST_DDL_TIME, STATUS

b.
OBJECT_TYPE, OBJECT_NAME, CREATED, LAST_DDL_TIME, STATUS
c.
OBJECT_FILE, OBJECT_NAME, CREATED, LAST_DDL_TIME, STATUS

d.
OBJECT_TYPE, OBJECT_NAME, CREATED, FIRST_DDL_TIME, STATUS
Seleccione los tipos de objetos posibles que se almacenan en la tabla (de las opciones correctas
seleccione la mas completa): Seleccione una:

a.
PROCEDURE USER TABLE INDEX SEQUENCE FUNCTION TRIGGER

b.
PROCEDURE VIEW TABLE INDEX SEQUENCE FUNCTION TRIGGER

c.
VIEW TABLE INDEX SEQUENCE PROCEDURE TRIGGER

d.
PROCEDURE VIEW TABLE INDEX SEQUENCE FUNCTION TRIGGER COLUMN
Cuando un PLSQL (....) está asociado a una tabla, depende de la tabla?
Seleccione una:

Verdadero

Falso

Retroalimentación
La respuesta correcta es 'Verdadero'

Pregunta 7
Incorrecta
Puntúa 0,00 sobre 0,60

Marcar pregunta
Enunciado de la pregunta

Un PLSQL puede quedar invalidado (descompilado) si:


Seleccione una:

a.
Ninguna de las anteriores

b.
Se eliminan registros de la tabla de la que depende
c.
Se borra la tabla y se vuelve a crear
Se modifica la estructura de la tabla de la que depende.

d.
Se cargan nuevos datos en la estructura
Se modifica la estructura de la tabla de la que depende.

Retroalimentación
Respuesta incorrecta.
La respuesta correcta es: Se borra la tabla y se vuelve a crear Se modifica
la estructura de la tabla de la que depende.

Pregunta 8
Correcta
Puntúa 0,60 sobre 0,60
En las Base de Datos para el ANALISIS, los datos personales son necesarios para el análisis en si, no
necesitandose para relacionar información.
S

e
l
e
c
c
i
o
n
e
u
n
a
:
V
e
r
d
a
d
e
Marcar pregunta

Enunciado de la pregunta

r
o

Falso

Retroalimentación
La respuesta correcta es 'Falso'

Cuestionario 8
Las tablas de dimensión transformadas se cargan:
Seleccione una:

a.
En tablas ODS_D_xxxxx

b.
En tablas D_xxxxx

c.
En tablas D_ODS_xxxxx
La clave de negocio de la dimensión Estudiante se carga desde los HECHOS debido a:
Seleccione una:

a.
Que se extraen desde los inscriptos eliminando valores repetidos

b.
Que se combinan más de un campo

c.
Que se extraen desde los inscriptos dejando valores repetidos
Dentro del Proceso ETL, las transformaciones se realizan a los efectos de:
Seleccione una:

a.
Unificar valores de los campos de las tablas de dimensión y de hechos

b.
Unificar únicamente valores de las claves de negocio en la fase 1

c.
Unificar todos los campos de la tabla de hechos

d.
Unificar únicamente valores de las claves subrogadas
Retroalimentación

Respuesta correcta
La respuesta correcta es: Unificar valores de los campos de las tablas de dimensión y de hechos

Pregunta 4
Correcta
Puntúa 0,50 sobre 0,50
La documentación del DWH se genera con el fin de:
Seleccione una:
Marcar pregunta

Enunciado de la pregunta

a.
Conocer todos los índices y restricciones de nuestro DWH

b.
Conocer todas las claves de referencia de nuestro DWH

c.
Conocer todo los datos cargados en nuestras tablas de dimensión y hechos

d.
Conocer el resumen de todos los elementos que conforman nuestro DWH

Para el ejemplo del material de clases, uno de los usos de los Triggers es:
Seleccione una:

a.
Cargar el período de carga de la tabla de hechos

b.
Cargar todos los datos de las tablas de dimensiones
c.
Cargar las claves subrogadas de las tablas de dimensión y de hechos

d.
Cargar la auditoría de nuestro DWH

a.
Controlar las claves de negocio de las dimensiones

b.
Controlar las claves subrogadas y de negocio de nuestro DWH

c.
Controlar la integridad referencial de nuestro DWH

d.
Controlar las claves subrogadas de las dimensiones
a.
Ser los valores que conoce la tabla de hechos y que relacionan las tablas de dimensión
b.
La tabla de hecho define la codificación de los valores de nuestro DWH

c.
Que la dimension de TIEMPO definen la codificación de los valores de nuestro DWH

d.
Ser los valores que conoce el negocio y codifica los valores a ser utilizados en nuestro DWH

a.
Está conformada por todas las claves subrogadas y de forma que identifiquen cada registro de la tabla de hechos

b.
Es necesario evitar duplicados en la tabla de dimension

c.
Está conformada por todas las claves de negocio

d.
Es necesario definir unicidad en la clave de negocio
Retroalimentación

Respuesta correcta
La respuesta correcta es: Está conformada por todas las claves subrogadas y de forma que identifiquen cada registro de la tabla de he

Pregunta 9
Correcta
Puntúa 1,00 sobre 1,00
En las tablas de dimensión (DT_xxxxxx) generalmente
se definen Seleccione una:
Marcar pregunta

Enunciado de la pregunta

a.
Cuatro campos: la clave primaria, la clave subrogada, la fecha y la descripcion

b.
Cuatro campos: la clave primaria, la clave secundaria, la clave de negocio y la descripción

c.
Tres campos: la clave sugrogada, la clave de negocio y la descripción

d.
Tres campos: la clave primaria, la clave subrogada y la clave de negocio

Retroalimentación

Respuesta correcta
La respuesta correcta es: Tres campos: la clave sugrogada, la clave de negocio y la descripción

También podría gustarte