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.


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber