Dimensión basura: qué es y por qué es cualquier cosa menos basura

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Hoy, quiero hablar sobre un concepto de modelado de datos llamado dimensión basura . Por su nombre, pensarías que es una técnica despectiva y algo que querrías evitar, pero en realidad es un enfoque útil.

De hecho, trabajé en una pregunta del y una dimensión basura fue la solución perfecta. Una vez que lo vea y lo comprenda, encontrará muchas aplicaciones en su propio trabajo. Puedes ver el video completo de este tutorial en la parte inferior de este blog.

Tabla de contenido

¿Qué son las dimensiones basura?

The Data Warehouse Toolkit de Kimball y Ross , una de las biblias del modelado dimensional, lo define como la agrupación de banderas e indicadores de cardinalidad típicamente baja . Baja cardinalidad significa un pequeño número de observaciones únicas dentro de un campo dado.

En nuestro ejemplo, tenemos un modelo de datos para nuestro negocio de construir PC personalizadas. El modelo de datos se refiere a pedidos y facturas. También tenemos una serie de banderas donde podemos capturar el tipo de procesador , el tipo de configuración de la torre (Compacto o Completo) y el propósito (Juego o Estación de trabajo).

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Definición de las dimensiones de la basura utilizando la analogía del cajón de basura de la cocina

Si observa cada uno de estos campos, solo hay dos observaciones únicas en cada campo. Esto es a lo que Kimball se referiría como una bandera de baja cardinalidad . Él dice que al crear una dimensión abstracta, eliminamos las banderas de la tabla de hechos mientras las colocamos en un marco dimensional útil.

La analogía del cajón de basura de la cocina para una dimensión de basura es buena. Todo el mundo tiene un cajón lleno de gomas, grapas, pilas, velas de cumpleaños, etcétera. No es importante que ninguna de estas cosas justifique tener su propio cajón, pero debe tener un lugar para colocarlas.

Mantenerlos puede hacer que la tabla de hechos aumente de tamaño. Digamos que tenemos una tabla de hechos con un millón de registros. Construimos muchas computadoras, y para cada computadora que construimos, tenemos que marcar el procesador, la torre y el propósito. Esto significa que por un millón de filas de PC que se han pedido, también tenemos 3 millones de indicadores en la tabla de hechos.

Reduciendo el tamaño de la tabla de hechos

Podríamos moverlos a una tabla de dimensiones y vincularlos solo en el ID del modelo para eliminar los 3 millones de indicadores de la tabla de hechos. Para hacer esto, podemos hacer una tabla separada para cada una de estas banderas y funcionará. Pero este proceso complicará el modelo de datos, donde normalmente desea evitar las tablas de una sola columna.

La solución ideal es usar una dimensión basura , donde tiene un montón de banderas de baja cardinalidad que están relacionadas de manera general. Todos estos están relacionados con los atributos de las computadoras que estamos construyendo, pero no de una manera realmente directa como normalmente tendría para una tabla de dimensiones específica.

Revisión del problema del miembro del foro

Echemos un vistazo a la aplicación específica que se publicó en el foro. El miembro quería crear dos campos diferentes, uno para Stalled y otro para Active . Si el cliente realizó una transacción en los últimos 45 días, se marca como activa; de lo contrario, se marca como estancado.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

El miembro también quería otra tabla de dimensiones para el tipo de cliente, que es de pedidos múltiples o de un solo pedido. Si la cuenta tuvo dos o más transacciones en cualquier momento del historial utilizando un solo número de cuenta, se consideraría un cliente de pedidos múltiples. Y si solo tuvieran un pedido para un número de cuenta determinado, sería un cliente de un solo pedido.

Esas son las dos banderas que queremos desarrollar. Pasemos a LuckyTemplates y descubramos cómo hacerlo.

Modelado de datos para la dimensión basura

Echemos un vistazo al modelo de datos. Es un modelo de datos realmente simple. Tenemos nuestra tabla de Fechas extendida y la tabla de Transacciones .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Nuestra tabla de transacciones solo tiene tres campos: un número de cuenta , fecha de factura y cantidad de ventas .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Generalmente, si podemos llevar la transformación más cerca de la fuente, lo haremos. Esto no es dinámico en el transcurso de una sesión de informes, por lo que no es necesario hacerlo en DAX .

Deberíamos hacerlo en Power Query o Data Warehouse/SQL si tenemos esa opción. Pero por ahora, supongamos que no lo hacemos y que solo lo estamos haciendo en Power Query .

Identificación del tipo de cliente para la dimensión basura

Lo primero que haremos será averiguar el tipo de cliente, ya sea una transacción de un solo pedido o de varios pedidos. Usaremos Group By , Count y Count Rows .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Luego agregue todos los datos y haga que sea una operación de Todas las filas para que no devolvamos la tabla agregada, sino la tabla inicial con ese recuento de filas en cada fila.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Echemos un vistazo al resultado y ampliémoslo.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Podemos agregar una columna personalizada y nombrarla Tipo de cliente y luego crear una declaración IF. La declaración es si Count es igual a 1, entonces es una sola orden; de lo contrario, es de orden múltiple.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Simplemente cambiaremos la columna a un tipo de texto. Ahora, tenemos una de nuestras dos dimensiones configuradas en la tabla de hechos.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Hagamos la tabla de la segunda dimensión. Para este, si el pedido más reciente es de 45 días o menos a partir de la fecha de hoy, entonces el cliente se considera activo. Si no hay ningún pedido dentro de los 45 días a partir de hoy, entonces el cliente está inactivo.

Agregaremos una columna personalizada y le daremos el nombre Hoy . Luego agregue DateTime.LocalNow para darnos la fecha y la hora actuales, luego Date.From para darnos solo la parte de la fecha.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Simplemente cambiemos esto a un tipo de datos de fecha y luego movamos la columna al frente.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Hay una manera simple de crear una resta entre la columna de dos fechas. Simplemente resalte esas dos fechas, haga clic en Fechas en la cinta y luego haga clic en Restar días .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Esto le dará la diferencia entre esas dos fechas en términos de número de días. Llamemos a esta nueva columna Días antes de hoy.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

El siguiente paso es encontrar los días mínimos anteriores a hoy, lo que significa el pedido más reciente para cada número de cuenta. Si ese número es menor o igual a 45, está activo.

Hagamos otro Agrupar por , luego Avanzado , luego Número de cuenta .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Nuevamente, usaremos Todos los datos para el nuevo nombre de columna y Todas las filas para la operación.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Esta vez, agregaremos Días intermedios mínimos con Mínimo como su operación y Días anteriores a hoy como su columna. Esto nos dará el pedido más reciente.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Luego ampliamos Todos los datos y eliminamos Número de cuenta .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Una vez que ampliemos esto, tendremos los días mínimos intermedios para los números de cuenta.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Por último, agregaremos otra columna personalizada y la llamaremos Temporización del cliente . Pondremos un parámetro hipotético en el que si nuestro Min Days Between es menor o igual a 45, entonces está activo o estancado .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Quitar las columnas innecesarias

Como ahora tenemos muchas columnas de apoyo, hagamos clic en Elegir columnas y eliminemos las que no necesitamos.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Eliminaremos las columnas Count , Today , Days Before to Today y Min Days Between . Ahora solo tenemos la tabla de hechos original, además de las columnas Tipo de cliente y Momento del cliente .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

En lugar de mantenerlos en la tabla de hechos, dupliquemos esta tabla.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Llamaremos a la tabla duplicada Account Flags .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Volvamos a la tabla Transacciones y eliminemos los campos Tipo de cliente y Horario del cliente .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Ahora tenemos la tabla de hechos original y la tabla Indicadores de cuenta.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Para la tabla Account Flags, no necesitamos los campos Client Type y Client Timing , por lo que los eliminamos. Simplemente resaltamos todos estos campos, eliminamos filas y eliminamos duplicados.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Ahora tenemos nuestra tabla de dimensiones basura. Todo lo que queda es presionar Cerrar y aplicar . El próximo paso es conectar el Número de cuenta de nuestra tabla Indicadores de cuenta al Número de cuenta en nuestra tabla Transacciones .

Dimensión basura: qué es y por qué es cualquier cosa menos basura

Tenemos una relación de uno a muchos entre la tabla Transacciones (que es nuestra tabla de hechos) y la tabla Indicadores de cuentas (que es nuestra tabla de dimensiones basura).


Creación de relaciones de modelos de datos en LuckyTemplates
Modelado de datos en LuckyTemplates: consejos y prácticas recomendadas

Conclusión

Coloquemos las dimensiones Tiempo del cliente y Tipo de cliente en nuestro lienzo y convirtámoslas en segmentaciones. Ahora podemos hacer exactamente lo que el miembro quería hacer inicialmente, que es dividir en función de estos atributos.

Si hacemos clic en Pedido múltiple, nos dejará solo los que tienen múltiples pedidos y si hacemos Pedido único, nos dejará con los que tienen una sola compra.

Dimensión basura: qué es y por qué es cualquier cosa menos basura

En resumen, esto es básicamente lo que es una dimensión basura y cómo puedes crearla. Esta es una técnica muy útil si tiene un montón de indicadores variados de cardinalidad baja que desea incorporar en su modelo de datos de manera eficiente.

La técnica de agrupar por todas las filas es extremadamente útil para crear estas dimensiones basura. Espero que hayas encontrado esto útil y como siempre.


Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.