Función FILTRO usando la selección actual de la cortadora

Un usuario Pregunto ✅

cmckinney

¿Es posible pasar la selección actual de una cortadora a una función FILTRO en una medida?

Por ejemplo: FILTRO (

, Columna1 = Selección de cortadora actual)

Edhans

Puede utilizar ALLSELECTED ([ColumnName]) Está diseñado para trabajar con cortadoras. Está diseñado para funcionar en una función CALCULATE (), por lo que realmente no necesita la función FILTER ().

TomMartens

Hola @cmckinney,

puede usar la función SELECTEDVALUE (…) para pasar / inyectar el valor seleccionado actualmente en la función FILTER de la siguiente manera:

FILTER(<table>, Column1 = SELECTEDVALUE('tablename'[colum used in  the slicer] , [optional default value]))

Aquí encontrará más información sobre la función: https://dax.guide/selectedvalue/

Con suerte, esto proporciona lo que está buscando.

Saludos,

Tomás

Edhans

Puede utilizar ALLSELECTED ([ColumnName]) Está diseñado para trabajar con cortadoras. Está diseñado para funcionar en una función CALCULATE (), por lo que realmente no necesita la función FILTER ().

cmckinney

En respuesta a Edhans

@edhans ¿Funciona también con MAXX?

Edhans

En respuesta a cmckinney

Sí, devuelve una tabla, por lo que en cualquier lugar donde necesite una tabla, como MAXX (), debería funcionar

TomMartens

En respuesta a Edhans

Hola @cmckinney

como @edhans

  • SELECTEDVALUE (…) es bueno para capturar un solo valor y solo un valor
  • VALUES (…) permite capturar múltiples valores seleccionados de una cortadora
    • tienes que usar VALORES dentro de la función FILTRO así
      FILTRO (t, t[c] EN VALORES ())
      Como VALUES (…) devuelve una tabla, también se puede usar como parámetro de tabla en una de las funciones de iterador de tabla como MAXX
    • Personalmente, no usaría ALLSELECTED ya que esta es una de las funciones más complejas, y me gustan mis declaraciones DAX simples 🙂

      Saludos,

      Tomás

Edhans

En respuesta a Edhans

Y @TomMartens es correcto, SELECTEDVALUE () devuelve un valor escalar (único).

Él es mejor en DAX que yo, así que le dejaré decidir cuál es mejor para un escenario determinado. Ambos funcionarán, pero uno puede ser mejor que otro para una necesidad específica.

Tenga en cuenta que ALLSELECTED () eliminará los filtros existentes en la expresión, pero los mantendrá de fuentes externas, como el seccionador. SELECTEDVALUE () no lo hará, por lo que puede obtener nulos en contextos de filtro certian.

cmckinney

En respuesta a Edhans

@edhans @TomMartens

¿Hay alguna forma de aplicar la expresión SELECTEDVALUE () o la expresión ALLSELECTED () en la siguiente función?

VAR __PreviousDate = MAXX (FILTER (ALL (Sheet1),[Analysis Run]<__ CurrentDate),[Analysis Run])
La columna asociada con la segmentación por la que quiero filtrar se llama «Conjunto de publicación».

Edhans

En respuesta a cmckinney

Esto debería funcionar. Cambiaste el letrero. ALLSELECTED no funcionará con mayor / menor que lógica. Solo conserva exactamente lo que devolvió la cortadora.

Test =
MAXX(
    FILTER(
        ALL( Sheet1 ),
        [Analysis Run]
            < SELECTEDVALUE( [Field] )
    ),
    [Analysis Run]
)

Me gustaría jugar con datos reales dado que está incorporando la medida en otra medida … Transición de contexto y todo eso. 😁

Precaución con SELECTEDVALUE (): solo funciona en una valor. Si se selecciona más de uno, quedará en blanco o un resultado alternativo que puede proporcionar en el segundo parámetro opcional. Deberá manejar con elegancia ese escenario a menos que bloquee la cortadora en una sola selección en su configuración.

cmckinney

En respuesta a Edhans

@edhans @TomMartens

Aquí hay algo de contexto y algunos datos reales con los que puede jugar y, con suerte, hacer que funcione.

Archivo de muestra. https://www.dropbox.com/s/gsaucwi6iqj1upv/RulesConditionalFormatDummy.pbix?dl=0

El objetivo final es conectar la medida en un formato condicional en una matriz.

El producto de la medida debe ser 0, 1 o 2.

1 = Si el valor hash ha cambiado de una regla a la siguiente.

2 = Si la regla es nueva

0 = Si no hay cambios y la regla no es nueva

En el formato condicional, 1 será rojo, 2 será azul y 0 permanecerá negro.

La primera columna de la matriz siempre debe permanecer negra.

Aquí hay una captura de pantalla del archivo de muestra que hice. Observe, la segunda columna es azul. No debería ser azul porque el valor hash anterior es no en blanco y tiene el mismo valor hash de la fecha mostrada anteriormente.

Los únicos dos que deben formatearse y tienen el formato correcto son el ‘hashchange’ rojo y la ‘nueva regla’ azul.

Regla 6.png

Cuando se selecciona el conjunto de publicación ‘Prueba combinada’, la columna se vuelve azul. Esto no debería suceder porque es la primera columna de la tabla y debería ser negra.

Regla 7.png

¡Ojalá este contexto ayude!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *