Análisis combinatorio usando Power Query en LuckyTemplates

Quiero profundizar en algo llamado análisis combinatorio. Esto se puede definir como la elección y disposición de elementos de conjuntos de acuerdo con reglas prescritas. Puede sonar esotérico, pero en realidad tiene algunos casos de uso muy prácticos. Puede ver el video completo de este tutorial en la parte inferior de este blog.

En este tutorial, le mostraré cómo hacer esto usando Power Query en LuckyTemplates.

Tabla de contenido

Caso de ejemplo de análisis combinatorio

En este análisis combinatorio de ejemplo, la tarea era que teníamos una lista de seis almacenes y necesitábamos generar cada conjunto único de tres. Suena como un problema bastante sencillo, pero este es uno de esos casos en los que el idioma realmente importa.

La respuesta correcta aquí es 216, 120, 56 o 20. Entonces, dependiendo de cómo definas ese conjunto único y las reglas que prescribiste, podrías equivocarte por un factor de 10 si no obtienes el conjunto correctamente.

Análisis combinatorio usando Power Query en LuckyTemplates

Y entonces, hay dos dimensiones que importan aquí. La primera es "¿ importa el orden ?" Entonces, cuando hablamos de tres conjuntos de tres, ¿ABC es equivalente a BCA? Entonces, ¿importa el orden? Y si el orden importa , estamos hablando de permutaciones .

Un buen ejemplo de permutaciones donde el orden podría ser importante es (estamos hablando de un contexto de almacén) en el caso del tiempo de viaje. Es muy posible que si visita el almacén A, luego el almacén B y luego el almacén C, el tiempo de viaje debido al flujo de tráfico con tráfico contra tráfico, la hora en que llegó a cada almacén, podría ser bastante diferente según el pedido. en que los visitas.

La otra cara de esto es que " el orden no importa ", en cuyo caso estamos hablando de combinaciones , no de permutaciones. El caso de uso aquí que es común es la distancia. Por ejemplo, en línea recta, la distancia de A a B a C no va a ser diferente de la distancia de B a C a A. Esos van a ser considerados en un contexto de combinación.

Las combinaciones se consideran duplicados entre sí. Mientras que, en un contexto de permutación, se considerarán únicos.

Entonces, como puede ver, un candado de combinación realmente debería ser un candado de permutación porque en ese caso, el orden sí importa, por lo que es una permutación, no una combinación.

La segunda pregunta o dimensión que importa es " una vez que se elige un artículo, ¿se puede volver a elegir ?" Por ejemplo, si elegimos A como nuestro primer almacén, ¿podemos volver a elegir A o tenemos que elegir elementos únicos cada vez?

El término que usamos aquí es " con reemplazo " o " sin reemplazo ". Entonces, si un artículo se puede elegir nuevamente, eso es con reemplazo, lo que significa que usted lo elige. Y, en cierto sentido, vuelve al contenedor de selección y se vuelve a seleccionar. Si la respuesta es no, es sin reemplazo.

Y así, puede ver en esta solución que las permutaciones con reemplazo son las menos restrictivas. Así que ese es el que nos da 216 conjuntos únicos. Y las combinaciones sin reposición es la más restrictiva dándonos 20.

Análisis combinatorio usando Power Query en LuckyTemplates

Solo vamos a usar estas fórmulas como una forma de verificar nuestros resultados de Power Query . Así que recordaremos 216, 120, 56 y 20. Ahora saltemos a Power Query y veamos cómo se desarrolla todo este análisis combinatorio.

Análisis combinatorio: permutaciones en Power Query

En Power Query, tengo aquí un caso muy simple con seis almacenes con nombre.

Análisis combinatorio usando Power Query en LuckyTemplates

Y he desarrollado esta función de Power Query M, que he usado para procesar combinaciones y permutaciones.

Análisis combinatorio usando Power Query en LuckyTemplates

Primero, voy a desarrollar ese primer caso de uso, que es permutaciones con reemplazo , el menos restrictivo del grupo. La forma de hacerlo en Power Query es tomar esta tabla de almacenes y hacer referencia a ella (en DAX, usamos CROSSJOIN ).

Análisis combinatorio usando Power Query en LuckyTemplates

Llamaré a esto, Per w Rep (permutaciones con reemplazo).

Análisis combinatorio usando Power Query en LuckyTemplates

Hay varias formas de realizar una unión cruzada en Power Query. La forma más fácil que he encontrado es simplemente ir Agregar columna , luego Columna personalizada . En la fórmula de la columna personalizada, haga referencia a la tabla Almacenes .

Análisis combinatorio usando Power Query en LuckyTemplates

Y lo que encontraremos cuando hagamos clic en Aceptar es que genera una tabla anidada.

Análisis combinatorio usando Power Query en LuckyTemplates

Luego, expandimos eso y desmarcamos Usar el nombre de las columnas originales como prefijo .

Análisis combinatorio usando Power Query en LuckyTemplates

Y obtenemos esta Location.1 , que es cada combinación posible de dos. Entonces toma las primeras seis referencias contra las otras seis combinaciones. El segundo seis hace lo mismo hasta que tenemos 36 conjuntos diferentes.

Análisis combinatorio usando Power Query en LuckyTemplates

Podemos hacer el tercero haciendo esto de nuevo. Así que vamos Agregar columna, luego una columna personalizada y luego Almacenes.

Análisis combinatorio usando Power Query en LuckyTemplates

Y tendremos las 216 filas como permutaciones con reemplazo.

Análisis combinatorio usando Power Query en LuckyTemplates

Y pueden ver desde aquí abajo, 3 columnas, 216 filas.

Análisis combinatorio usando Power Query en LuckyTemplates

El siguiente caso de uso son las permutaciones sin reemplazo . Lo que estamos pensando aquí es básicamente todo lo que tiene un elemento repetido. Entonces, en esta tabla, vamos a ver desde la fila 1 hasta la fila 8.

Análisis combinatorio usando Power Query en LuckyTemplates

Para ello, echaremos un vistazo a esta función, fxSortAndIsDistinct .

Análisis combinatorio usando Power Query en LuckyTemplates

En el Editor avanzado, puede ver que esto básicamente solicita una tabla y luego hace un SortLocs . Pero la parte importante aquí para "con reemplazo" o "sin reemplazo" es que esta es una función IsDistinct . Lo que esto hace es básicamente tomar una lista de elementos y determinar verdadero o falso, si es distinto o si tiene duplicados en la lista de elementos.

Análisis combinatorio usando Power Query en LuckyTemplates

Así que vamos aquí, seleccionamos Perm w Rep y presionamos Invocar .

Análisis combinatorio usando Power Query en LuckyTemplates

Esto nos dará estas dos nuevas columnas, SortLocs e IsDistinct . Ahora, recuerde que los primeros ocho registros tenían duplicados y el noveno registro fue la primera vez que vimos los distintos . Es por eso que la novena fila aquí es la primera que aparece como verdadera.

Análisis combinatorio usando Power Query en LuckyTemplates

Si recordamos los números que teníamos en los cálculos factoriales, esperamos 120 registros si eliminamos los registros no distintos. Entonces, intentemos filtrar aquí y sacar el FALSO.

Análisis combinatorio usando Power Query en LuckyTemplates

Mientras hacemos eso, obtenemos aquí abajo exactamente las 120 filas que estamos esperando. Ahora cambiemos el nombre de esto como Perm wo Rep (permutación sin reemplazo).

Análisis combinatorio usando Power Query en LuckyTemplates

Análisis Combinatorio: Combinaciones en Power Query

Ahora haremos las combinaciones con reemplazo . Para hacer eso, simplemente hacemos el proceso nuevamente y repetimos el paso (Función Invocada). Así que está bien que tengamos duplicados, pero no queremos conjuntos que tengan los mismos elementos , pero en un orden diferente.

Análisis combinatorio usando Power Query en LuckyTemplates

En este caso, cuando hablamos de combinaciones. Si recuerda que ABC es igual a BCA es igual a CAB, todos se consideran duplicados entre sí. Y la forma en que determinamos eso es a través de la función Ordenar ( fxSortAndIsDistinct ).

Si volvemos a la función en el Editor avanzado, veremos en esa segunda columna que hemos tomado esa lista y la hemos ordenado alfabéticamente. Luego, extrajimos los valores delimitados por comas de esa lista. Ahora tenemos cada conjunto ordenado alfabéticamente. Hemos normalizado el orden para que sea más fácil encontrar duplicados.

Análisis combinatorio usando Power Query en LuckyTemplates

Ahora, si volvemos a esta función invocada, recuerde que estamos buscando 56 registros aquí. Así que tomamos este tipo de ubicación ( SortLocs ) y eliminamos nuestros duplicados .

Análisis combinatorio usando Power Query en LuckyTemplates

Con eso, obtenemos 56 filas.

Análisis combinatorio usando Power Query en LuckyTemplates

Y así, este es nuestro tercer caso de uso. Cambiemos el nombre de esto como CC w Rep (combinaciones con reemplazo).

Análisis combinatorio usando Power Query en LuckyTemplates

Terminemos esto tomando nuevamente la tabla de permutaciones con reemplazo (Perm w Rep) y hagamos el mismo patrón (invoke). Luego, vamos a eliminar los duplicados (columna SortLocs) porque esta es una combinación y el orden no importa. No tiene reemplazo, por lo que también queremos solo la lista distinta . Entonces, hacemos clic en FALSO en la columna IsDistinct.

Análisis combinatorio usando Power Query en LuckyTemplates

Con esto, obtenemos 20 registros. Y ahora tenemos nuestros cuatro casos de uso.

Análisis combinatorio usando Power Query en LuckyTemplates


Clasificación de las columnas de la tabla de fechas en LuckyTemplates
Guía para principiantes del código M en LuckyTemplates
Convierta la función de tabla de fechas en una consulta de tabla en LuckyTemplates

Conclusión

Así que ahora tenemos nuestros cuatro casos de uso. Puede ver realmente cuán poderoso es esto en términos de desarrollar ese análisis combinatorio que le brinda control sobre el reemplazo y los elementos distintos.

Esto es incluso aplicable en algunos casos más complejos en los que tiene un reemplazo parcial, o tal vez selecciona un elemento duplicado para el primero, pero no la segunda vez. Todavía puede manejar eso muy bien dentro de Power Query .

Espero que hayas encontrado esto útil. Echa un vistazo a los enlaces a continuación para obtener más contenido. También puede ver el video completo de este tutorial a continuación.

¡Mis mejores deseos!

Leave a Comment

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.