Forum Discussion
Problema con el DAX
requisito:
El visual del lado izquierdo es lo que obtenemos de forma predeterminada en PBI
lo que necesito es un objeto visual del lado derecho, pero los valores de todas las regiones no deben ser 0,31 sino
APAC - 1
Europa - 0,5
la - 0.5
afracia - 1
Australia - 1
en - 1
Emiratos Árabes Unidos - 0
Solo APAC, Europa y LA tienen numerador y denominador, por lo que debe dar valores respectivos
Los Emiratos Árabes Unidos solo tienen denominador, por lo que es 0 (0 / cualquier cosa)
rest regions no tiene datos, por lo que debe dar el valor como 1
-----------------------------------------------------------------------------------------------------------------------
Dax:
| Mk | región | Bandera de inclusión | éxito |
| 1 | APAC | y | 95 |
| 1 | Europa | n | 85 |
| 1 | la | y | 91 |
| 1 | en | n | 97 |
| 1 | África | n | 88 |
| 1 | Australia | n | 95 |
| 1 | APAC | y | 93 |
| 2 | Europa | y | 94 |
| 2 | la | n | 89 |
| 2 | en | n | 88 |
| 2 | África | n | 99 |
| 2 | Australia | n | 80 |
| 2 | Uae | n | 90 |
región
| región |
| APAC |
| Europa |
| la |
| en |
| África |
| Australia |
| Uae |
mes
| Mk | m |
| 1 | Nov |
| 2 | dic |
9 Replies
- Syndicate_Admin
Administrator
Hola, @animebuff
¿Puede aclarar su escenario, lo que espera, es mejor con algún ejemplo?
- Syndicate_Admin
Administrator
como dije anteriormente, el eje x tiene 2 campos, el 1er mes y luego la 2ra región
mi dax predeterminado es CALCULATE(COUNT('S rate'[success]),'S rate'[inclusion flag]="Y")/COUNT('S rate'[success])
Por lo tanto, de forma predeterminada, los datos se dividirán por mes en el primer nivel y se dividirán por región en el segundo nivel
Y ahora mi negocio tiene un requisito por encima de esta lógica,
Quieren ver todas las regiones disponibles para todos los meses
para. Por ejemplo, el mes de noviembre tiene datos solo para la región APAC, Australia y LA
También necesitan ver otra región si el numerador y el denominador no están disponibles (o están en blanco), entonces deberían mostrar 100% o 1 y si el numerador no está disponible, debería mostrar 0 (0 por cualquier cosa es 0)
este es el resultado que necesito obtener
Emiratos Árabes Unidos - 0
APAC - 1
Europa - 0,5
la - 0.5
afracia - 1
Australia - 1
en - 1
-----------------------------------------------------------------------------------------------------------------------
DAX modificado = CALCULATE(CALCULATE(COUNT('S rate'[success]),'S rate'[inclusion flag]="Y")/COUNT('S rate'[success]),FILTRO CRUZADO(región[región],'S rate'[región],Ninguno))
esta es la lógica que escribí para obtener cada región en menos de un mes, obtuve las regiones con esta lógica, pero para cada región obtengo los mismos valores que ese mes
- Syndicate_Admin
Administrator
Hola @animebuff,
Creo que la siguiente medida debería darte lo que necesitas:
ratio = VAR _numerator = CALCULATE(COUNT('S rate'[success]),'S rate'[inclusion flag]="Y") VAR _denominator = COUNT('S rate'[success]) VAR _result = SWITCH( TRUE(), ISBLANK(_denominator), 1, ISBLANK(_numerator), 0, DIVIDE(_numerator, _denominator) ) RETURN _resultEse es el resultado:
Si no me estoy perdiendo nada, parece que hay denominadores para África, Australia, NA y Emiratos Árabes Unidos, por eso obtenemos ceros en el gráfico (al menos esta parte de su fórmula que se refiere al denominador devuelve el resultado: COUNT('S rate'[success]) )
- Syndicate_Admin
Administrator
si intento ISBLANK(num) && ISBLANK(den),1 como una condición de la declaración switch que es mi pregunta real
luego obtengo 1 para los meses que ni siquiera tienen datos, por ejemplo, si mis columnas mensuales tienen un mes adicional como el 25 de enero, incluso si no hay datos, todavía obtendré 1 por lógica
Eso estará mal, ¿verdad?
Esta lógica funciona cuando en Mi región se profundiza, pero durante el mes mostrará valores incorrectos
- Syndicate_Admin
Administrator
Hola @animebuff , no estoy seguro de lo que quieres decir exactamente, pero estoy bastante seguro de que esto se puede resolver fácilmente. ¿Puede proporcionar una muestra de datos que incluya el caso con un mes adicional?
- Syndicate_Admin
Administrator
Hola @animebuff
Aquí hay 2 soluciones alternativas:
1:
Utilice el dax predeterminado:
Measure = CALCULATE ( COUNT ( 'S rate'[success] ), 'S rate'[inclusion flag] = "Y" ) / COUNT ( 'S rate'[success] )A continuación, haga clic con el botón derecho en el campo [región] en el eje X y seleccione Mostrar elementos sin datos:
El resultado es el siguiente:
2:
Cambie la medida de la siguiente manera:
Measure 2 = VAR _AAA = CALCULATE ( COUNT ( 'S rate'[success] ), 'S rate'[inclusion flag] = "Y" ) / COUNT ( 'S rate'[success] ) RETURN IF(_AAA<>0,_AAA,0)El resultado es el siguiente:
Saludos
Zhengdong Xu
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.- Syndicate_Admin
Administrator
Ambos métodos mostrarán los datos como 0 para los meses que no tienen la clave de sustituto de fecha en la tabla de hechos
- Syndicate_Admin
Administrator
Hola @wini_R
Por favor, pruebe esta medida:
MEASURE = VAR _currentRegion = SELECTEDVALUE ( 's rate'[region] ) VAR _ifdenominator = COUNTROWS ( SUMMARIZE ( FILTER ( ALLSELECTED ( 's rate' ), 's rate'[region] = _currentRegion && 's rate'[inclusion flag] = "n" ), 's rate'[mk], 's rate'[region] ) ) VAR _outcome = CALCULATE ( COUNT ( 'S rate'[success] ), 'S rate'[inclusion flag] = "Y" ) / COUNT ( 'S rate'[success] ) RETURN IF ( _outcome <> BLANK (), _outcome, IF ( _ifdenominator <> 1, 1, 0 ) )El resultado es el siguiente:
Saludos
Zhengdong Xu
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.