Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code FABINSIDER for a $400 discount.
Register nowGet inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.
Ayer envié una pregunta para esto con algunas soluciones útiles, pero estoy recibiendo otro golpe para explicar mejor mi situación. El conjunto de datos incluye registros primarios y alternativos (sub) con atributos rellenados para todos los registros. Estoy buscando una solución que permita al usuario ver cómo cambia la composición general a través de elementos visuales (gráficos circulares/gráficos de barras) si un solo primario se reemplaza por una alternativa (sub). La solución a mi primera pregunta me permite crear una medida que rellena un campo dentro de una tabla/matriz que logra esto. Sin embargo, una medida no se puede usar como cortadora, así que aquí está mi segundo intento en esto.
Mesa base
IDENTIFICACIÓN |
Nombre | Llave | Atributo/Color | Si es primario - tiene sub | En venta |
1 | Lulu | Primario | Rojo | Sí | Sí |
1 | Caitlin | Sub | Azul | No | No |
1 | Ashe | Sub | Amarillo | No | Sí |
2 | Hilo | Primario | Naranja | No | No |
3 | Amapola | Primario | Negro | No | No |
4 | Veigar | Primario | Blanco | Sí | Sí |
4 | Lux | Sub | Rojo | No | Sí |
5 | Soraka | Primario | Azul | No | Sí |
6 | Poro | Primario | Amarillo | Sí | No |
6 | Akshan | Sub | Naranja | No | No |
6 | Mundo | Sub | Negro | No | No |
Tabla desconectada = calculatetable(summarize('Tabla principal','Tabla principal'[Nombre]),filter('Tabla principal','Tabla principal'[Si es principal - tiene sub]="Sí"))
Nombre |
Lulu |
Veigar |
Poro |
Slicer1 = 'Tabla desconectada'[Nombre]
Segmentación deseada = Muestra nombres en los que el ID coincide con el de la selección de Segmentación1, por ejemplo, si Segmentación1 = "Lulu", entonces 'Lulu', 'Caitlin', 'Ashe' está disponible para la selección
Resultado deseado: 1) rellena el registro seleccionado en la segmentación deseada excluyendo todos los demás registros en los que el ID coincide con el de la selección de Slicer1, 2) rellene todos los registros en los que Key = 'Primary' donde el ID no coincida con la selección de Slicer1 e incluya todos los sub
Si Slicer1 = 'Lulu' y Desired Slicer='Caitlin', rellena la tabla para incluir solo Caitlin donde ID = 1, de lo contrario, si key = 'Primary' include, else exclude
Tabla principal filtrada if Slicer1 = "Lulu" & Slicer deseado = 'Caitlin'
IDENTIFICACIÓN | Nombre | Llave | Atributo/Color | Si es primario - tiene sub | En venta |
1 | Caitlin | Sub | Azul | No | No |
2 | Hilo | Primario | Naranja | No | No |
3 | Amapola | Primario | Negro | No | No |
4 | Veigar | Primario | Blanco | Sí | Sí |
5 | Soraka | Primario | Azul | No | Sí |
6 | Poro | Primario | Amarillo | Sí | No |
Tabla principal filtrada si Slicer1 = "Lulu" & Segmentación deseada = 'Lulu'
IDENTIFICACIÓN | Nombre | Llave | Atributo/Color | Si es primario - tiene sub | En venta |
1 | Lulu | Primario | Rojo | Sí | Sí |
2 | Hilo | Primario | Naranja | No | No |
3 | Amapola | Primario | Negro | No | No |
4 | Veigar | Primario | Blanco | Sí | Sí |
5 | Soraka | Primario | Azul | No | Sí |
6 | Poro | Primario | Amarillo | Sí | No |
Tabla principal filtrada if Slicer1 = "Lulu" & Slicer deseado = 'Ashe'
IDENTIFICACIÓN | Nombre | Llave | Atributo/Color | Si es primario - tiene sub | En venta |
1 | Ashe | Sub | Amarillo | No | Sí |
2 | Hilo | Primario | Naranja | No | No |
3 | Amapola | Primario | Negro | No | No |
4 | Veigar | Primario | Blanco | Sí | Sí |
5 | Soraka | Primario | Azul | No | Sí |
6 | Poro | Primario | Amarillo | Sí | No |
Hola @otto-usuario101 ,
Por favor, inténtalo de esta manera:
Primero uso este DAX para crear una nueva tabla para crear Desired Slicer:
Desired Slicer = SELECTCOLUMNS (
'Primary Table',
"ID", 'Primary Table'[ID],
"Name", 'Primary Table'[Name]
)
A continuación, creo una medida con este DAX en la tabla Desired Slicer:
Measure =
VAR A = CALCULATE(
MAX('Desired Slicer'[ID]),
FILTER(
ALLSELECTED('Desired Slicer'),
'Desired Slicer'[Name] = SELECTEDVALUE('Disconnected Table'[Name])
)
)
RETURN
IF(
ISFILTERED('Desired Slicer'),
IF(
SELECTEDVALUE('Desired Slicer'[ID]) = A,
1,
0
),
0
)
Y se crea el Desired Slicer , lo siento, no cambié el nombre, puedes cambiarlo tú mismo:
A continuación, creo una medida con DAX que se muestra a continuación en la tabla principal:
Measure 2 =
VAR A = CALCULATE(
MAX('Primary Table'[ID]),
FILTER(
ALLSELECTED('Primary Table'),
'Primary Table'[Name] = SELECTEDVALUE('Disconnected Table'[Name])
)
)
RETURN
IF(
//ISFILTERED('Primary Table'),
ISFILTERED('Desired Slicer'[Name]) && ISFILTERED('Disconnected Table'[Name]),
IF(
SELECTEDVALUE('Primary Table'[Name]) = SELECTEDVALUE('Desired Slicer'[Name]),
1,
IF(
SELECTEDVALUE('Primary Table'[ID]) <> A && SELECTEDVALUE('Primary Table'[Key]) = "Primary",
1,
0
)
),
0
)
El resultado final se muestra a continuación:
Saludos
Dino Tao
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Para cualquiera que busque lograr lo mismo en Power BI, utilicé la combinación cruzada para crear una copia de la tabla base y, a continuación, creé una columna personalizada para que sirviera como campo de segmentación.
DAX no permite el filtrado directo entre tablas sin una relación, la lógica dice que es necesario establecer una conexión.
Una forma de hacerlo es crear una columna en la tabla principal que coincida con los valores de la tabla desconectada.
Puede crear una nueva columna en la tabla principal que identifique si el registro está relacionado con uno de los nombres de la tabla desconectada. Puede ser un indicador booleano simple (Verdadero/Falso).
A continuación, ceate medidas que filtran dinámicamente la tabla principal en función de la selección de Slicer1 y la segmentación deseada.
Use estas medidas en los objetos visuales para reflejar los cambios en función de las selecciones de segmentación.
No tengo tu modelo, así que me estoy imaginando algo como esto:
Connected Column =
IF(
'Primary Table'[Name] IN VALUES('Disconnected Table'[Name]),
TRUE(),
FALSE()
)
Filtered Data Measure =
VAR selectedPrimary = SELECTEDVALUE('Disconnected Table'[Name])
VAR selectedSub = SELECTEDVALUE('Primary Table'[Name], "All")
RETURN
CALCULATE(
COUNTROWS('Primary Table'),
FILTER(
'Primary Table',
IF(
'Primary Table'[Key] = "Primary" && 'Primary Table'[Connected Column] = TRUE(),
'Primary Table'[Name] = selectedPrimary || selectedSub = "All",
'Primary Table'[Key] = "Primary"
)
)
)
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!
Check out the February 2025 Power BI update to learn about new features.