Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Mismas dimensiones, múltiples tablas de hechos, diferentes medidas, millones de filas

Hola

He estado creando / actualizando / mejorando informes durante años, incluso jugué un poco con el modelado dimensional en casos muy simples (hasta 10k filas), pero en términos de modelado dimensional real con muchas filas ... Soy un novato completo. He revisado varios foros, he intentado hacer un rápido repaso de la Teoría, pero... Estoy un poco presionado por el tiempo y espero obtener algunos consejos de calidad / valiosos de aquellos que enfrentan tales casos a diario.

Mi caso :

- dos tablas de hechos diferentes, con las mismas dimensiones, pero diferente número de medidas en cada una, digamos 10 FK cada una (incluida la dimensión de fecha) y respectivamente 10 y 15 medidas

- 10 dimensiones comunes

- Habrá datos de 2 años, datos del año actual y del año anterior basados en el período fiscal, donde

- La Tabla de hechos A tendrá aproximadamente 5-6 millones de filas / período

- La Tabla de hechos B tendrá aproximadamente 7-8 millones de filas / período

- Con 24 períodos al final del año y la única opción de usar archivos *.csv como entrada para Power BI, estoy un poco desesperado por una solución óptima. No hace falta decir que la calidad de los datos es la prioridad número uno y el rendimiento número dos.

- La buena noticia es que tengo una herramienta ETL, que puede ayudarme con cualquier procesamiento de datos que tenga que hacer

Requisito:

Ser capaz de combinar datos de ambas tablas de hechos en un solo visual y calcular nuevas medidas basadas en ambas tablas de hechos.

Desde mi punto de vista, hay dos opciones:

1) Cargue las tablas de 10 dimensiones + 2 hechos en Power BI y cree el esquema en estrella. Lo que no tengo claro es la forma correcta de crear el esquema, es decir,

- Lo que haría es conectar las dos tablas de hechos con las 10 dimensiones, pero... No estoy seguro de que esto sea correcto.

- algo me dice que no 😞 es

2) Lo que hizo mi predecesor es unir los dos hechos por los 10 FK y crear una sola tabla de hechos. Ahora, esto funcionaba antes, ya que la carga de datos esperada era de alrededor de 15-20 millones de filas durante 2 años por tabla de hechos. Sin embargo, los requisitos han cambiado recientemente y ahora me enfrento potencialmente a 180-200 millones o filas durante 2 años por tabla de hechos.

Por último, la pregunta: ¿qué sugiere que debo hacer? ¿Debería

1) Continuar con la creación de 1 tabla de hechos

o

2) mantener las 2 tablas de hechos separadas y confiar en el modelado de Power BI ? Si este es el camino a seguir, ¿cómo deberían vincular las tablas?

Saludos

Paul

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hola Ben,
¡Gracias por su ayuda! Las confirmaciones tuyas y de Adamboer son lo que esperaba.

Esperemos que funcione 🙂

Saludos

Paul

Syndicate_Admin
Administrator
Administrator

Dados sus requisitos, hay algunos enfoques potenciales a considerar.

Opción 1: Crear un esquema de estrella con ambas tablas de hechos

Crear un esquema en estrella con tablas de hechos y dimensiones compartidas es un enfoque válido. Debe conectar las tablas de hechos a cada dimensión, creando una tabla puente cuando sea necesario. Este enfoque puede ser más flexible que unir las tablas de hechos, lo que le permite analizar cada tabla de hechos por separado y combinarlas según sea necesario.

También podría considerar la posibilidad de particionar las tablas de hechos por fecha para mejorar el rendimiento de las consultas. Esto le permitiría consultar solo las particiones relevantes durante un período de tiempo determinado, en lugar de escanear toda la tabla.

Opción 2: Unir las tablas de hechos en una sola tabla

Unir las tablas de hechos en una sola tabla también es un enfoque válido, pero puede que no sea la opción más eficiente para su volumen de datos. La combinación de las tablas dará como resultado una tabla más grande, que puede ser más lenta para consultar y consumir más memoria.

Si decide unir las tablas, debe considerar detenidamente las condiciones de unión y asegurarse de que la tabla resultante sigue estando en el nivel adecuado de granularidad para el análisis.

Recomendación

Dado el gran volumen de datos con el que está tratando, le recomendamos crear un esquema en estrella con tablas de hechos y dimensiones compartidas. Este enfoque le permite analizar cada tabla de hechos por separado y combinarlas según sea necesario. También debe considerar la posibilidad de particionar las tablas de hechos por fecha para mejorar el rendimiento de las consultas.

Debe probar ambos enfoques en un pequeño subconjunto de los datos para evaluar el rendimiento y asegurarse de que el esquema resultante satisface sus necesidades de informes. Además, debe trabajar con un experto en modelado de datos para asegurarse de que el esquema está diseñado y optimizado correctamente para sus requisitos específicos.

Syndicate_Admin
Administrator
Administrator

¡Creo que tienes exactamente la idea correcta! Pruébalo. Cada modelo de datos es diferente, pero, por ejemplo, un patrón normal que utilizo en educación tiene una serie de tablas de hechos que compartirán dimensiones:

bcdobbs_0-1682932412260.png

¡A menudo usamos medidas que requieren cálculos de más de una tabla!

Syndicate_Admin
Administrator
Administrator

Bueno, mi objetivo principal es tener solo algunos conocimientos teóricos (énfasis en algunos) sin experiencia práctica con tales volúmenes. Y esta es la primera vez que estoy tratando de combinar tablas de hechos en una sola (en este momento estoy tratando de arreglar el diseño de otra persona y me gustaría evitar empeorar las cosas que antes).

Además de hacerlo por 1ª vez y la cantidad de datos, la principal preocupación es si las columnas calculadas basadas en medidas de ambas tablas de hechos funcionarán correctamente (supongo que esta es la razón por la que la persona antes que yo eligió unir las dos tablas)
Por ejemplo-
Calcular (suma( Entrega de hechos[Medida 1] - Suma ( Factura de hechos[Medida 17])

KEEPFILTERS('DimClient'[Nombre del cliente]='MI cliente'),
KEEPFILTERS('DimDate
'[Período]=5))
Syndicate_Admin
Administrator
Administrator

El diagrama que proporciona con las dos tablas de hechos y 3 dimensiones es exactamente el camino a seguir. Ciertamente trate de evitar los copos de nieve.

¿Qué te preocupa por no trabajar en esa configuración?

Syndicate_Admin
Administrator
Administrator

Hola Ben,

¡Gracias por su ayuda!

Las tablas de hechos contienen datos sobre lo que se entregó y lo que se facturó, respectivamente. Los datos están en el cliente, el producto y el nivel diario.

Es posible que pueda reducir el número de dimensiones conformadas mediante el uso del esquema de copo de nieve, pero me gustaría evitarlo ya que

(1) Vi varios artículos que explicaban que Power BI es más favorable en cuanto al rendimiento de Star que al esquema de Snowflake,

(2) las dimensiones pueden no estar tan conformadas como parecen (por ejemplo, un cliente puede haber recibido sus bienes en el día X, pero se facturará el día X + Y, y detalles tan pequeños que en la diferencia crean).

(3) También la mayoría de las dimensiones son en realidad copos de nieve de la dimensión cliente. Así que prefiero mantener los FK de los copos de nieve como dimensiones separadas y tratar de compensar con el ETL cuando / si es posible en lugar de confiar en cuán actualizadas podrían estar las dimensiones de un posible cliente (las tablas de hechos provienen de dos cubos diferentes, por lo que incluso si las dimensiones están conformadas y son las mismas, Nunca puedo estar seguro de que ambos estén sincronizados al mismo tiempo)

Si dibujo un esquema simplificado general, ¿lo que supongo que debería elegir es algo como esto?

pmarinov_0-1682924643086.png

Por supuesto, en un momento posterior, podría parecer que incluso si las dimensiones en las dos tablas / cubos de hechos son las mismas, se mantienen de manera diferente, y por lo tanto necesito mantener dos conjuntos de las mismas dimensiones. Sin embargo, hoy, la suposición es que son lo mismo, por lo que lo que tengo actualmente es una tabla de hechos muy grande (que me gustaría desmantelar)

pmarinov_2-1682925145249.png

La herramienta ETL tarda 30 minutos Hoy en hacer la unión de las dos tablas de hechos y será más de 1,5 horas cuando tenga 24 períodos en lugar de 8.

Cualquier consejo adicional que pueda tener será muy apreciado.

Saludos

Paul

Syndicate_Admin
Administrator
Administrator

Si las dos tablas de hechos contienen "hechos" diferentes, entonces los mantendría separados y los vincularía a sus dimensiones comunes (conformadas) exactamente como usted describe. Sin embargo, sería útil si describiera lo que está contenido en las dos tablas de hechos. Esto a veces se llama esquema de galaxia, pero prefiero pensar en él como un esquema de estrella múltiple. Mientras las dimensiones sean comunes, funcionará perfectamente.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.