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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Devolver filtro virtual con SWITCH

Quiero filtrar una tabla, por diferentes atributos dependiendo del valor seleccionado en la segmentación de datos.

Así que para entender lo que tengo, esta es una tabla de localidades (... No sé si algún país de habla inglesa los usa, pero los encontré en el diccionario, y los usamos en México), de todos modos sus columnas son:

locality:  key, name, soc_eco, size, urb_rur, municipality, population, etc...

Así que hay tres atributos principales para filtrar por: soc_eco, tamaño, urban_rural; y para el propósito de este ejemplo, vamos a centrarnos en agregar población.

He creado tablas manuales para esos atributos para vincular los valores correspondientes:

Attributes:  
 value  | name | order
soc_eco | NSE  |  1
size    | Size |  2
urb_rur | U/R  |  3

Attr.Values:
 attr     | value | match |  rel_order
soc_eco   | low   | 1     |  1
soc_eco   | med   | 2     |  2
...       | ...   | ...   | ...
size      | small | 1     |  1
size      | med   | 2     |  2
...       | ...   | ...   | ...
urb_rur   | urban | U     |  1
urb_rur   | rural | R     |  2

Lo que puedo hacer:

Pop_Measure = SWITCH( SELECTEDVALUE(attribute[value]), 
    "soc_eco", CALCULATE( SUM(localities[population]), 
        TREATAS( VALUES(attr_values[match]), localities[soc_eco]) ),
    "size",    CALCULATE( SUM(localities[population]), 
        TREATAS( VALUES(attr_values[match]), localities[size]) ),
    "urb_rur", CALCULATE( SUM(localities[population]), 
        TREATAS( VALUES(attr_values[match]), localities[urban_rural]) ),
             SUM(localities[population]) 
    ))

Sin embargo, tengo varias medidas como esta, y estoy buscando no repetir el relleno y guardarlo como una tabla calculada para usar en otras medidas.
La siguiente tabla calculada produce un error:

LocalityByAttr = SWITCH( SELECTEDVALUE(attributes[value]), 
    "soc_eco", TREATAS( VALUES(attr_value[match]), localities[soc_eco] ),
    "size",    TREATAS( VALUES(attr_value[match]), localities[size] ), 
    "urb_rur", TREATAS( VALUES(attr_value[match]), localities[urb_rur] ), 
            localities)

El error es:

The expression refers to multiple columns.  Multiple columns cannot be converted to a scalar value. 

¿Alguien sabe cómo darle la vuelta a esto? ¿Es esto posible?
Gracias.

5 REPLIES 5
v-yingjl
Community Support
Community Support

Hola @Diego-CDMX ,

Si ha solucionado el problema por su cuenta, por favor comparta su solución. Si la ayuda de los mensajes anteriores, por favor márquela como una solución para ayudar a otros a encontrarlo más rápidamente. ¡Gracias!


Best Looks,
Yingjie Li

sturlaws
Resident Rockstar
Resident Rockstar

Hola, @Diego-CDMX,

No estoy seguro de lo que está tratando de hacer, pero una tabla calculada no puede ser reutilizada por otras medidas.

Salud
Sturla

Anonymous
Not applicable

Lo que intento hacer es esto.
Establezca los valores de Atributo en una segmentación de datos (selección única).
Y luego tener diferentes visualizaciones basadas en el atributo de localidad que se selecciona, esto puede ser cualquiera de los índices urbanos/rurales, de localidad o socioeconómico.

El problema no está en la creación de la medida, sino en el almacenamiento del filtro intermedio.


Ya lo he logrado, y se ve muy bien.
Pero sería mucho mejor, si dicho filtro se pudiera establecer en una variable u objeto diferente para que la codificación sea más clara.

Incluso dentro de la misma medida, no es posible lo siguiente:

Pop_by_attr = 
VAR ByAttr = SWITCH( SELECTEDVALUE(attributes[value]), 
  "soc_eco",  TREATAS( VALUES(attr_values[match]), localities[soc_eco]), 
  "size"   ,  TREATAS( VALUES(attr_values[match]), localities[size]), 
  "urb_rur",  TREATAS( VALUES(attr_values[match]), localities[urb_rur]), 
       localities)
RETURN CALCULATE( SUM(localities[population]), ByAttr)

Me da el mismo error.

Hola @Diego-CDMX ,

Puede intentar utilizar variables para guardar parte de los valores para evitar comillas repetidas en su medida, tal vez como esta:

Pop_Measure =
VAR _values =
    VALUES ( attr_values[match] )
VAR _sum =
    SUM ( localities[population] )
RETURN
    SWITCH (
        SELECTEDVALUE ( attribute[value] ),
        "soc_eco", CALCULATE ( _sum, TREATAS ( _values, localities[soc_eco] ) ),
        "size", CALCULATE ( _sum, TREATAS ( _values, localities[size] ) ),
        "urb_rur", CALCULATE ( _sum, TREATAS ( _values, localities[urban_rural] ) ),
        _sum
    )

Best Looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Anonymous
Not applicable

@v-yingjl , su respuesta me acerca más a lo que necesito, pero todavía no es una solución para mí.
Tampoco podría solucionarlo por mi cuenta, ya que Power BI no me permitirá guardar los valores intermedios para reutilizarlos en medida adicional.

¿Qué debemos hacer con este boleto?
¿Es esto como un boleto donde todos necesitan ser cerrados, o es esta una comunidad donde esperamos que alguien venga en el futuro y desarrolle funcionalidad?

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

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.