Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Querida comunidad,
Estoy atascado en un desafío con respecto a cómo hacer una segmentación con varios filtros de selección una tabla basada en 3 columnas.
Las 3 columnas tienen nombres FlagError#1, FlagError#2 y FlagError#3. Cada una de estas columnas siempre será un entero de 0 o 1. Además, puede haber cualquier combinación dentro de estas 3 columnas, 0-0-0, 0-0-1, ... hasta el 1-1-1.
La segmentación de datos es multiselección, tiene una fila correspondiente a las 3 columnas y, muy importante, debe usar la condición OR entre las selecciones. Es decir, si el usuario selecciona "FlagError#1" y "FlagError#3", los resultados deben ser todas las filas que tienen 0 en flagerror#1 y 1 en flagerror#3, 1 en FlagError#1 y 0 en FlagError#3 o 1 en ambas columnas. si el usuario selecciona las tres filas de la segmentación de datos, se deben mostrar las filas que tienen 1 en al menos una de las columnas correspondientes.
Necesito poder definir un texto en la segmentación de datos para cada una de las 3 selecciones.
Cualquier ayuda sería muy apreciada, gracias!
Br
Nortor
Solved! Go to Solution.
No @Toalme,
puede utilizar los siguientes pasos:
Paso 1, cree una tabla para la segmentación de datos:
Paso 2, utilice la siguiente medida:
Mejor consideración
Lucien Wang
No @Toalme,
Utilizo mi propio DAX, y en sus datos, todo está bien, y supongo que el hecho de que tenga datos duplicados puede estar relacionado con la modificación de Dax.
mSlicerBrudd =
var test1=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error1]=1))
var test2=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error2]=1))
var test3=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1))
var test4=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1||'tbl_Facts'[Error2]=1))
var test5=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1||'tbl_Facts'[Error3]=1))
var test6=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1||'tbl_Facts'[Error2]=1||'tbl_Facts'[Error3]=1))
var a4=
IF(SELECTEDVALUE('tbl_Slicer'[Name])="Error#1",test1,
IF(SELECTEDVALUE('tbl_Slicer'[Name])="Error#2",test2,
IF(SELECTEDVALUE('tbl_Slicer'[Name])="Error#3",test3,
IF(FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#1"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#2" ,test4,
IF(FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#1"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#3" ,test5,
IF(FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#1"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#2"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#3" ,test6,
blank()))))))
return a4
Aquí está la salida:
Mejor consideración
Lucien Wang
No @Toalme,
No @Toalme,
Descargo el pbix que proporcionó, luego elimino la medida y comprueba los datos,ver lo siguiente, los datos base son duplicados. Podría volver a comprobar los datos base. Ojalá fuera útil para ti.
Mejor consideración
Lucien Wang
Estimado Lucien,
Lo siento. Ahora he corregido los datos, y sólo debe haber FACTID únicos.
Todavía tengo varias filas en la tabla si selecciono 2 o 3 errores en la segmentación de datos. Si el usuario selecciona, por ejemplo, error1 y error2, debe mostrar las filas que tienen errores en estas o en una de ellas.
El archivo está aquí:
http://www.filedropper.com/slicertest_1
¡Gracias por su continuo apoyo!
Br
Nortor
No @Toalme,
Utilizo mi propio DAX, y en sus datos, todo está bien, y supongo que el hecho de que tenga datos duplicados puede estar relacionado con la modificación de Dax.
mSlicerBrudd =
var test1=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error1]=1))
var test2=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error2]=1))
var test3=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1))
var test4=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1||'tbl_Facts'[Error2]=1))
var test5=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1||'tbl_Facts'[Error3]=1))
var test6=CALCULATE(max('tbl_Facts'[Error1]),FILTER(('tbl_Facts'),'tbl_Facts'[Error3]=1||'tbl_Facts'[Error2]=1||'tbl_Facts'[Error3]=1))
var a4=
IF(SELECTEDVALUE('tbl_Slicer'[Name])="Error#1",test1,
IF(SELECTEDVALUE('tbl_Slicer'[Name])="Error#2",test2,
IF(SELECTEDVALUE('tbl_Slicer'[Name])="Error#3",test3,
IF(FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#1"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#2" ,test4,
IF(FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#1"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#3" ,test5,
IF(FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#1"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#2"||FIRSTNONBLANK('tbl_Slicer'[Name],'tbl_Slicer'[Name])="Error#3" ,test6,
blank()))))))
return a4
Aquí está la salida:
Mejor consideración
Lucien Wang
¡Querido Lucien!
¡Gracias por el seguimiento! He adjuntado mi archivo de ejemplo .pbix. Obteré varias líneas para el ID, aunque es único en la tabla de datos.
Advertencia; Modifiqué el código un poco, así que espero que sea sólo un pequeño error. He añadido una variante para ninguna selección en la segmentación (var 0), sólo para que sea posible ver todas las filas, también aquellas sin errores.
Además, agregué var 7 para manejar todas las combinaciones de segmentaciones de datos.
La segmentación de datos debe ser OR de naturaleza, de modo que si el usuario selecciona en error de segmentación de datos1 y error2, se deben mostrar filas con error ("1") en ambas columnas y en cualquiera de ellas.
Gracias de nuevo por su ayuda, estoy muy agradecido!
Br
Nt
No @Toalme,
Puede cargar el archivo .pbix en onedrive para empresas y compartir el vínculo conmigo.
Mejor consideración
Lucien Wang
No @Toalme,
puede utilizar los siguientes pasos:
Paso 1, cree una tabla para la segmentación de datos:
Paso 2, utilice la siguiente medida:
Mejor consideración
Lucien Wang
¡Querido Lucien!
Muchas gracias por tomarse el tiempo para (casi) resolver esto para mí! Muy apreciado, ya que estaba completamente atascado.
Hay algunas cosas pequeñas que me encantaría haber aclarado; la tabla principal donde están flagerrors (3 columnas), tienen una columna con un id / clave único para cada fila. He comprobado dos veces, y no hay duplicados. Aún así, cuando uso el código, parece repetir el identificador en varias filas. Sospecho que esto tiene que ver con el uso del MAX en CALCULATE en la medida.
¿Tendría alguna sugerencia sobre cómo me aseguro de que las filas se escuchan sólo una vez?
Una vez más gracias por su tiempo y esfuerzos!
Saludos
Nortor
No @Toalme,
He intentado de acuerdo con los datos en su captura de pantalla, pero no aparece como usted dijo, podría pls proporcionar su archivo pbix ? Recuerde eliminar la información confidencial.
Mejor consideración
Lucien Wang
Por favor, compruebe sus mensajes, no sé cómo compartir mi pbix, no se me permite subir directamente en los mensajes...