Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Una segmentación de datos para seleccionar 3 columnas booleanas (0/1) en la misma tabla

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.

Toalme_0-1614956837029.png

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

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

No @Toalme,

puede utilizar los siguientes pasos:

Paso 1, cree una tabla para la segmentación de datos:

v-luwang-msft_0-1615189880498.png

Paso 2, utilice la siguiente medida:

Medida =
var test1=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#1]=1))
var test2=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#2]=1))
var test3=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1))
var test4=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1||' Tabla'[FlagError#2]=1))
var test5=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1||' Tabla'[FlagError#3]=1))
var test6=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1||' Tabla'[FlagError#2]=1||' Tabla'[FlagError#3]=1))

var a4=
IF(SELECTEDVALUE('Tabla (2)'[Nombre])="FlagError#1",test1,
IF(SELECTEDVALUE('Tabla (2)'[Nombre])="FlagError#2",test2,
IF(SELECTEDVALUE('Tabla (2)'[Nombre])="FlagError#3",test3,
IF(FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#1"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#2" ,test4,
IF(FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#1"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#3" ,test5,
IF(FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#1"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#2"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#3" ,test6,

en blanco()))))))
devolver a4
final obtendrá lo que desea !
1.png
haga clic aquí para descargar el archivo pbix si lo necesita!

Mejor consideración

Lucien Wang

View solution in original post

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:

v-xulin-mstf_0-1615431885544.png

Mejor consideración

Lucien Wang

View solution in original post

11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

No @Toalme,

Si es así, si es así, considere Aceptar una respuesta correcta como la solución para ayudar a otros a encontrarlo.
Saludos
Lucien
Syndicate_Admin
Administrator
Administrator

Archivo para probar .pbix

http://www.filedropper.com/slicertest

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.

v-xulin-mstf_0-1615282204436.png

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:

v-xulin-mstf_0-1615431885544.png

Mejor consideración

Lucien Wang

Syndicate_Admin
Administrator
Administrator

¡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

Syndicate_Admin
Administrator
Administrator

No @Toalme,

puede utilizar los siguientes pasos:

Paso 1, cree una tabla para la segmentación de datos:

v-luwang-msft_0-1615189880498.png

Paso 2, utilice la siguiente medida:

Medida =
var test1=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#1]=1))
var test2=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#2]=1))
var test3=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1))
var test4=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1||' Tabla'[FlagError#2]=1))
var test5=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1||' Tabla'[FlagError#3]=1))
var test6=CALCULATE(max('Table'[FlagError#1]),FILTER(('Table'),'Table'[FlagError#3]=1||' Tabla'[FlagError#2]=1||' Tabla'[FlagError#3]=1))

var a4=
IF(SELECTEDVALUE('Tabla (2)'[Nombre])="FlagError#1",test1,
IF(SELECTEDVALUE('Tabla (2)'[Nombre])="FlagError#2",test2,
IF(SELECTEDVALUE('Tabla (2)'[Nombre])="FlagError#3",test3,
IF(FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#1"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#2" ,test4,
IF(FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#1"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#3" ,test5,
IF(FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#1"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#2"|| FIRSTNONBLANK('Tabla (2)'[Nombre],'Tabla (2)'[Nombre])="FlagError#3" ,test6,

en blanco()))))))
devolver a4
final obtendrá lo que desea !
1.png
haga clic aquí para descargar el archivo pbix si lo necesita!

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.

Toalme_0-1615235942308.png


¿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.

v-xulin-mstf_0-1615268202958.png

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...

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.