Qué es uno mismo en Python: ejemplos del mundo real
Qué es uno mismo en Python: ejemplos del mundo real
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).
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.
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 .
Nuestra tabla de transacciones solo tiene tres campos: un número de cuenta , fecha de factura y cantidad de ventas .
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 .
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.
Echemos un vistazo al resultado y ampliémoslo.
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.
Simplemente cambiaremos la columna a un tipo de texto. Ahora, tenemos una de nuestras dos dimensiones configuradas en la tabla de hechos.
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.
Simplemente cambiemos esto a un tipo de datos de fecha y luego movamos la columna al frente.
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 .
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.
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 .
Nuevamente, usaremos Todos los datos para el nuevo nombre de columna y Todas las filas para la operación.
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.
Luego ampliamos Todos los datos y eliminamos Número de cuenta .
Una vez que ampliemos esto, tendremos los días mínimos intermedios para los números de cuenta.
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 .
Quitar las columnas innecesarias
Como ahora tenemos muchas columnas de apoyo, hagamos clic en Elegir columnas y eliminemos las que no necesitamos.
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 .
En lugar de mantenerlos en la tabla de hechos, dupliquemos esta tabla.
Llamaremos a la tabla duplicada Account Flags .
Volvamos a la tabla Transacciones y eliminemos los campos Tipo de cliente y Horario del cliente .
Ahora tenemos la tabla de hechos original y la tabla Indicadores de cuenta.
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.
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 .
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.
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
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.
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.
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.
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.
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.
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.
Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.
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