yupeichen
Hola, tengo problemas para escribir un código DAX elegante para hacer lo que quiero.
Tengo una lista de grupos de clientes. Quiero contar la cantidad de veces que tienen valores (Time2Auth/Time2Recieve/TotalTime) dentro de rangos establecidos (0-1, 1-2, 2-4, 4-8 y 8+), todo en un tabla nueva
Sé que puedo agregar columnas adicionales con 1/0 para identificar si pertenecen a cada grupo, pero estoy buscando aprender a usar mejor DAX.
Ejemplo de producto final:
grupo de clientes | 0-1 | 1-2 | 2-4 | 4-8 | 8+ |
BARQ | 10 | 20 | 24 | 13 | 1 |
Muestras de control | 40 | 13 | 0 | 0 | 0 |
Programa ECAT | 0 | 2 | 50 | 75 | 200 |
Planta FCC | 46 | 22 | 1 | 0 | 0 |
v-xjiin-msft
En respuesta a yupeichen
Hola @YupeiChen,
Mira esto:
Nueva tabla calculada con SUMMARIZE():
Recieve table = SUMMARIZE ( TestTable, TestTable[Customer Group], "0-1", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 0 && TestTable[Time2Recieve] <= 1 ) ), "1-2", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 1 && TestTable[Time2Recieve] <= 2 ) ), "2-4", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 2 && TestTable[Time2Recieve] <= 4 ) ), "4-8", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 4 && TestTable[Time2Recieve] <= 8 ) ), "8+", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 8 ) ) )
Lo mismo autorizar tabla.
Gracias,
Xi Jin.
v-xjiin-msft
Hola @YupeiChen,
=> Quiero contar la cantidad de veces que tienen valores (Time2Auth/Time2Recieve/TotalTime) dentro de rangos establecidos (0-1, 1-2, 2-4, 4-8 y 8+), todo en un tabla nueva
¿Cuál es la lógica para definir los rangos? Por ejemplo, veamos que el grupo de clientes es BARQ. ¿Por qué 10 está por debajo del rango 0-1 y 13 está por debajo del 4-8 y así sucesivamente? ¿Cuáles son estas lógicas?
¿Podría compartirnos algunos datos de muestra que podamos copiar y pegar directamente? Y su correspondiente resultado esperado. Para que podamos obtener una dirección correcta y hacer algunas pruebas adecuadas. Con la información actual, es difícil para nosotros entender su requerimiento.
Gracias,
Xi Jin.
yupeichen
En respuesta a v-xjiin-msft
Hola @v-xjiin-msft
Inventaré algunos datos de muestra por ahora y los complementaré con datos reales cuando regrese al trabajo.
Time2Recieve se calcula por la marca de tiempo recibida – marca de tiempo de inicio de sesión (no se muestra).
Time2Auth se calcula mediante la marca de tiempo autorizada – marca de tiempo recibida (no se muestra).
Esencialmente, estamos tratando de rastrear cuánto tiempo le toma a un operador de planta traer una muestra al laboratorio (Time2Recieve), y luego cuánto tiempo les toma a los técnicos de laboratorio procesar la muestra (Time2Auth).
Para 0-1, la lógica es 0
Para 1-2, la lógica es 1
Para 2-4, la lógica es 2
Para 4-8, la lógica es 4
Para 8+, la lógica es 8
Muestra de datos de entrada:
Ejemplo de identificacion | grupo de clientes | Tiempo2Recibir | Hora2Auth |
111111 | BARQ | 8.1 | 1.1 |
111112 | Programa ECAT | 0.9 | 20 |
111113 | Planta FCC | 1.9 | 1.9 |
111114 | Planta HPC | 0.1 | 6 |
111115 | Planta VESPA | 0.9 | 1.1 |
111116 | Planta VESPA | 7 | 20 |
Tabla de muestra para rastrear cuánto tiempo lleva recibir muestras de grupos de clientes, según los datos anteriores
grupo de clientes | 0-1 | 1-2 | 2-4 | 4-8 | 8+ |
BARQ | 1 | ||||
ECAT | 1 | ||||
Planta FCC | 1 | ||||
Planta HPC | 1 | ||||
Planta VESPA | 1 | 1 |
Tabla de muestra para rastrear cuánto tiempo lleva autorizar muestras de grupos de clientes, según los datos anteriores
grupo de clientes | 0-1 | 1-2 | 2-4 | 4-8 | 8+ |
BARQ | 1 | ||||
ECAT | 1 | ||||
Planta FCC | 1 | ||||
Planta HPC | 1 | ||||
Planta VESPA | 1 | 1 |
v-xjiin-msft
En respuesta a yupeichen
Hola @YupeiChen,
Mira esto:
Nueva tabla calculada con SUMMARIZE():
Recieve table = SUMMARIZE ( TestTable, TestTable[Customer Group], "0-1", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 0 && TestTable[Time2Recieve] <= 1 ) ), "1-2", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 1 && TestTable[Time2Recieve] <= 2 ) ), "2-4", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 2 && TestTable[Time2Recieve] <= 4 ) ), "4-8", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 4 && TestTable[Time2Recieve] <= 8 ) ), "8+", CALCULATE ( COUNT ( TestTable[Time2Recieve] ), FILTER ( TestTable, TestTable[Time2Recieve] > 8 ) ) )
Lo mismo autorizar tabla.
Gracias,
Xi Jin.
yupeichen
En respuesta a v-xjiin-msft
@v-xjiin-msft
¡Brillante!
¡Muchas gracias, ver la forma en que organizas el código fue muy informativo!
Anteriormente sabía calcular, contar, filtrar y cómo hacer una tabla con columnas, pero no podía juntarlo todo correctamente con la sintaxis.