Ruben Pertusa Miguel Egea RPertusa Miguel Egea Tecnicas
Ruben Pertusa Miguel Egea @RPertusa @Miguel. Egea Tecnicas avanzadas de modelado # 904
Sponsors
Rubén Pertusa Lopez Miguel Egea Gómez @rpertusa www. rpertusa. com rpertusalopez@Gmail. com @miguelegea www. portalsql. es megea@solidq. com Microsoft MVP Data Platform BI Big. Data Lead Architect & Global BI Manager @DUFRI www. sqlpass. es , Sql Saturday Madrid/Barcelona Founder EX Microsoft MVP Data Platform Mentor & technical advisor at Solid. Q Trying to help Ruben at much as posible both in Madrid and Barcelona #904 Madrid 2019
Modelo • …… sin modelo no hay vida …. . • Dimensions, hechos, cubos. . Ralph Kimball Tipos de hechos, problemas y sus soluciones • Tablas de hechos sin hechos • Ejemlo Posts Stack. Overflow • Ejemplo Stock • Distinct Count • Simple distinct count • Distinct Count complejo • Otro distinct count complejo • Bonus track: Snapshot • Convirtiendo tablas snapshot a deltas. #904 Madrid 2019
# 904 Tratar con datos No es necesario cambiar. La supervivencia no es obligatoria. W. Edwards Deming #904 Madrid 2019
Modelado dimensional Es la implementación de un modelo lógico en una base de datos relacional Estructura los datos en una forma comprensible para los usuarios de negocio Se usa para la implementación de DWH o DM Da información sobre • Cómo las entidades se relacionan entre sí • Cardinalidad, restriciones, rendimiento #904 Madrid 2019 # 904
Trabajando con tablas de hechos Tablas de hechos sin hechos Algunas tablas no tienen metricas Hechos Snapshot periódicos Tablas de Hechos Tablas que contienen o son el origen de las métricas, habitualmente el centro de los esquemas en estrella Han de implementarse como hechos semiaditivos y eso complica algo el asunto Hechos transaccionales Son los más communes, simplemente suman y restan Formas híbridas transaccionales y snapshot Una mezcla entre sistemas transacionales y mecanismos de snapshot #904 Madrid 2019 # 904
Retos trabajando con tablas de hechos # 904 Solutions Usar Lastnonempty Lastnonblank Last. Date Convertir Medidas semiaditivas en Aditivas cuando sea posible Usar Distinct count functions Convertir Distinct count en Count + distinct count Cuando sea posible Usar Baja granularity Expandir tablas netgativas Convertir Hechos en delta Positivos en fechas de inicio Negativos al final Medidas semi-aditivas Normalmente no aditivas con la dim tiempo Distinct-count No aditivas en absoluto Fact-less complicated scenarios Como calculo de negativos … #904 Madrid 2019
# 904 Modelo • …… sin modelo no hay vida …. . • Dimensions, hechos, cubos. . Ralph Kimball Tipos de hechos, problemas y sus soluciones • Tablas de hechos sin hechos • Stock basado en Deltas • Metricas History To Date • Optimizaciones HTD • Distinct Count • Simple distinct count • Distinct Count complejo • Otro distinct count complejo • Snapshot • Convirtiendo tablas snapshot a deltas. #904 Madrid 2019
# 904 Problemas desde-hasta En la base de datos stackoverflow queremos saber cuantas preguntas hay sin responder #904 Madrid 2019
# 904 Retos para responder No hay preguntas y respuestas • La estructura de hechos es un árbol • Afortunadamente podemos aplanar ese árbol Relación con el tiempo • No nos basta con saber cuantas preguntas hay sin responder ahora, necesitamos saber cuantas había en cualquier momento del tiempo #904 Madrid 2019
# 904 Diseño de la tabla de hechos SELECT p. [Id], p. [Accepted. Answer. Id], p. Owner. User. Id, p. [Answer. Count], p. [Creation. Date] From. Date, COALESCE(Post. Left. Creation. Date, ‘ 20220517') To. Date FROM [dbo]. [Posts] p LEFT JOIN dbo. Posts Post. Left ON p. Accepted. Answer. Id = Post. Left. id; #904 Madrid 2019
# 904 Solución Snapshots Transaccional Capturar en cada momento del tiempo todas las preguntas sin responder Crear campos desde- hasta Granularidad… usuario-mes Situar hasta lejano en el tiempo cuando sea nulo Contar tablas usando medidas semiaditivas Sumar desde el principio de los tiempos hasta el momento actual #904 Madrid 2019
Demo. Desde-Hasta Demo. Snapshot #904 Madrid 2019
# 904 Planificación de soluciones Las instantáneas son sencillas a nivel de DWH. ¿y a nivel de Queries? Deltas sk. Venta sk. Prod 1 1 sk. Venta 11 2 21 1 #904 Madrid 2019 sk. Fecha Importe uds 2/01/19 € 3 Uds sk. Prod sk. Fecha 100 Importe € 3€ 3 1 2/01/19 100 200 1 2/01/19 3/01/19 SUM*FA 200 € 50€ 3 2 50 € 2 150 50 € 5 250 Dto Deteccion fa Dto 2/01/19 1 1 10 € 4/01/19 -1 5€ 5€ 4/01/19 3/01/19 1 1
DEMO STOCK #904 Madrid 2019
# 904 Modelo • …… sin modelo no hay vida …. . • Dimensions, hechos, cubos. . Ralph Kimball Tipos de hechos, problemas y sus soluciones • Tablas de hechos sin hechos • Stock basado en Deltas • Metricas History To Date • Optimizaciones HTD • Distinct Count • Simple distinct count • Distinct Count complejo • Otro distinct count complejo • Snapshot • Convirtiendo tablas snapshot a deltas. #904 Madrid 2019
# 904 Opciones para Distinct count No aditiva No tan buen rendimiento Mucha memoria ocupada Mucha lectura Distinct Count puro N • • Distinct-count tuneado • • Distinct- count vs Mx. N #904 Madrid 2019 Crea un atributo que indique si el pedido tiene más de una linea Crea una table con solo los ids de cabecera y ese atributo Si no se usa ningun atributo específico del detalle… usa count Usa distinctcount solo filtrando por las cabeceras de mas de 1 linea Compresión de relaciónes Mx. N
# 904 #904 Madrid 2019
Demo distinct count #904 Madrid 2019
#904 Madrid 2019
- Slides: 21