Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Tengo una mesa (tabla)
FechaTime | identificación | Status_A | entrada | salida |
25/10/2020 14:25 | 1001 | A | ||
29/10/2020 14:25 | 1001 | 1 | 0 | |
1/12/2020 15:30 | 1002 | 1 | 0 | |
5/02/2021 12:00 | 1001 | 0 | 1 | |
15/04/2021 21:45 | 1002 | 0 | 1 |
La tabla registra los cambios de estado de varios tipos por DateTime.
Quiero calcular el número (recuento distinto de clientes) que han salido (exit = 1) donde el cliente ha tenido previamente un Status_A (Status_A = 1)
Algo así como:
Measure =
VAR select_id = SELECTEDVALUE('Table'[ID])
VAR temp_table = FILTER('Table', 'Table'[Status_A] = "A")
RETURN
IF(
CONTAINS(temp_table, 'Table'[ID], select_id),
CALCULATE(
DISTINCTCOUNT('Table'[ID]),
'Table'[Exit] = 1),
BLANK()
)
Hay 1 cliente (ID=1001) que ha salido (Exit = 1) y que anteriormente tenía un Estado A (Status_A = "A") así que espero Medida = 1.
Sin embargo, medir = BLANK
Curiosamente, cuando creo una tabla con ID y Mido los datos se ve correcto, excepto para el Total
¿Por qué el total no es 1? Supongo que es el tipo de datos.
¿Hay una manera correcta de estructurar la instrucción IF en mi medida para devolver un valor que se puede totalizar/promediar, etc.?
He examinado la documentación de Microsoft, pero no puedo encontrar una manera de strucutre la instrucción IF para devolver un número que se puede calcular en un total.
Solved! Go to Solution.
No @moosepng,
Pruebe la siguiente fórmula:
Measure =
var exit_value =
CALCULATE(
MAX('Table'[Exit]),
FILTER(
ALL('Table'),
'Table'[ID] = MAX('Table'[ID])
)
)
return
CALCULATE(
DISTINCTCOUNT('Table'[ID]),
FILTER(
'Table',
exit_value = 1
&& 'Table'[Status_A] = "A"
)
)
Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.
Saludos
Winniz
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Eso funciona :), pero no es ideal.
Tengo que crear una serie de medidas con esta lógica y esto duplicaría el número de medidas de mi informe.
¿Sabes cuál es la diferencia?
Si incluyo su solución en la medida orignal tiene el mismo problema.. ¿Es un error?
Measure test fix 2 =
VAR select_id = SELECTEDVALUE('Table'[ID])
VAR temp_table = FILTER('Table', 'Table'[Status_A] = "A")
RETURN
IF(
CONTAINS(temp_table, 'Table'[ID], select_id),
SUMX( VALUES('Table'[ID]),
CALCULATE(
DISTINCTCOUNT('Table'[ID]),
'Table'[Exit] = 1)
),
BLANK()
)
No @moosepng,
Pruebe la siguiente fórmula:
Measure =
var exit_value =
CALCULATE(
MAX('Table'[Exit]),
FILTER(
ALL('Table'),
'Table'[ID] = MAX('Table'[ID])
)
)
return
CALCULATE(
DISTINCTCOUNT('Table'[ID]),
FILTER(
'Table',
exit_value = 1
&& 'Table'[Status_A] = "A"
)
)
Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.
Saludos
Winniz
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
¿Cómo funcionaría con los valores de texto en 'Table'[Exit]?
FechaTime | identificación | Status_A | entrada | salida |
25/10/2020 14:25 | 1001 | A | ||
29/10/2020 14:25 | 1001 | Sí | No | |
1/12/2020 15:30 | 1002 | Sí | No | |
5/02/2021 12:00 | 1001 | No | Sí | |
15/04/2021 21:45 | 1002 | No | Sí |
No @moosepng,
Si sólo hay dos textos: "Sí" y"No", entonces simplemente cambie "1" a "Sí" en lafórmula.
Porque al comparar "Sí" y "No", se basará en el orden de la primera letra, es decir, "Sí" > "No".
Measure =
var exit_value =
CALCULATE(
MAX('Table'[Exit]),
FILTER(
ALL('Table'),
'Table'[ID] = MAX('Table'[ID])
)
)
return
CALCULATE(
DISTINCTCOUNT('Table'[ID]),
FILTER(
'Table',
exit_value = "Yes"
&& 'Table'[Status_A] = "A"
)
)
Saludos
Winniz
Sí, parece que da el resultado correcto.
gracias
Ahí, @moosepng
Por favor, pruebe lo siguiente.
Hola, mi nombre es Jihwan Kim.
Si este post ayuda, entonces considere aceptarlo como la solución para ayudar a otros miembros a encontrarlo más rápido, y dar un gran pulgar hacia arriba.
Linkedin: linkedin.com/in/jihwankim1975/
Twitter: twitter.com/Jihwan_JHKIM