cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helper I
Helper I

DAX para calcular el recuento máximo de filas y devolver cierto texto

Espero que la línea de asunto tenga sentido. Soy muy nuevo en DAX. Tengo un filtro para la unidad de descarga y quiero mostrar las unidades de descarga seleccionadas en la parte superior de mi página. Eso fue creado por otra persona y se ve así:

cathoms_0-1605193438487.png

Hay alrededor de tres docenas de unidades, así que actualmente tenemos el informe configurado para maximizar las unidades mostradas en 10, que se ve así:

cathoms_2-1605193650691.png

Por lo tanto, si un usuario selecciona de una a diez unidades se mostrarán todas ellas y si seleccionan más de 10, las 10 principales se mostrarán junto con "etc.". Lo que quiero es añadir a la medida para que cuando se seleccionan todas las unidades, dice "Departamento(s) de descarga: Todos" en la parte superior.

No estoy seguro de cómo agregar la sintaxis para devolver "All" cuando se alcanza ese máximo. Aquí está el DAX actual:

SelectedDischargeDepartment = "Discharge Department(s): " &
VAR __DISTINCT_VALUES_COUNT = DISTINCTCOUNT('PI Hospital Template - 7199'[DischargeUnit])
VAR __MAX_VALUES_TO_SHOW = 10
RETURN
	IF(
		__DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
		CONCATENATE(
			CONCATENATEX(
				TOPN(
					__MAX_VALUES_TO_SHOW,
					VALUES('PI Hospital Template - 7199'[DischargeUnit]),
					'PI Hospital Template - 7199'[DischargeUnit],
					ASC
				),
				'PI Hospital Template - 7199'[DischargeUnit],
				"; ",
				'PI Hospital Template - 7199'[DischargeUnit],
				ASC
			),
			", etc."
		),
		CONCATENATEX(
			VALUES('PI Hospital Template - 7199'[DischargeUnit]),
			'PI Hospital Template - 7199'[DischargeUnit],
			"; ",
			'PI Hospital Template - 7199'[DischargeUnit],
			ASC
		)
	)

Creo que lo siguiente debería funcionar para obtener un recuento máximo de la DescargaUnit:

VAR __MAX_COUNT = MAXX(DISTINCTCOUNT('PI Hospital Template - 7199'[DischargeUnit])

pero no estoy seguro de adónde ir desde aquí para devolver "Todos" si DISTINCT_VALUES_COUNT MAX_COUNT.

Cualquier ayuda sería muy apreciada!

1 ACCEPTED SOLUTION
Super User III
Super User III

@cathoms

ALL( ) con una columna devuelve todos los valores únicos de una columna. Eso debería estar bien. Debe haber algo en el modelo que no veo.

La cortadora está con 'PI Hospital Template - 7199'[DischargeUnit], ¿correcto?

Prueba esto. Cree esta medida de depuración y palcela en un objeto visual de la tarjeta.

Measure1 = 
COUNTROWS ( ALL ( 'PI Hospital Template - 7199'[DischargeUnit] ) )

¿Es el resultado el número de DescargUnits ?

Entonces lo mismo para

Measure2 = 
DISTINCTCOUNT( 'PI Hospital Template - 7199'[DischargeUnit] )

¿Es el resultado el número de elementos seleccionados en la segmentación de datos?

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

View solution in original post

7 REPLIES 7
Community Support
Community Support

Hola, @cathoms

Si está utilizando una tarjeta visual para mostrar su medida, es posible que no obtenga el "_distinct_values_count" correcto en su tarjeta.

VAR __DISTINCT_VALUES_COUNT =
        DISTINCTCOUNT ( 'PI Hospital Template - 7199'[DischargeUnit] )

Creo que necesita diferenciar una tabla de resumen virtual filtrada para obtener el valor de variable de __DISTINCT_VALUES_COUNT.

Puede comprobar @amitchanda solución en este subproceso.

https://community.powerbi.com/t5/Desktop/Card-Visual-Measure-with-Distinct-Count/m-p/1405570

Saludos
Equipo de soporte de la comunidad _ Eason

Super User III
Super User III

@cathoms

ALL( ) con una columna devuelve todos los valores únicos de una columna. Eso debería estar bien. Debe haber algo en el modelo que no veo.

La cortadora está con 'PI Hospital Template - 7199'[DischargeUnit], ¿correcto?

Prueba esto. Cree esta medida de depuración y palcela en un objeto visual de la tarjeta.

Measure1 = 
COUNTROWS ( ALL ( 'PI Hospital Template - 7199'[DischargeUnit] ) )

¿Es el resultado el número de DescargUnits ?

Entonces lo mismo para

Measure2 = 
DISTINCTCOUNT( 'PI Hospital Template - 7199'[DischargeUnit] )

¿Es el resultado el número de elementos seleccionados en la segmentación de datos?

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

View solution in original post

Sí a ambas preguntas re: las medidas de depuración. Cuando configuro una página que contiene las tarjetas con las medidas anteriores, y agredo los Departamentos de Descarga: etiqueta/medida funciona como debería. Después de publicar y actualizar No funciona en la página en la que lo quiero, sin embargo. Me pregunto si la medida se ve afectada por otros filtros en la página. Creo que necesito ponerme en contacto con el generador de informes que creó esto en primer lugar.

Super User III
Super User III

@cathoms

Con el cambio, las definiciones para __DISTINCT_VALUES_COUNT y __MAX_COUNT son exactamente las mismas por lo que, por supuesto, _DISTINCT_VALUES_COUNT __MAX_COUNT siempre y el código devuelve "Todos"

Mi versión debería funcionar. ¿Qué es lo que no es exactamente?

¿Puedes compartir el pbix para que pueda echar un vistazo?

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Lo siento, no puedo compartir debido a información de salud privada. En cuanto a lo que no funciona, todavía muestra diez unidades de descarga y "etc." cuando todos están seleccionados o cuando no hay selección en la cortadora/filtro de la unidad de descarga, en lugar de "Todos". Básicamente, no hay ningún cambio en el comportamiento.

Mi preocupación con su versión de la variable es que creo que está contando todas las 130.000 filas en la tabla en lugar de contar el número distinto de unidades de descarga. Como dije, archivo sin formato, no un esquema de estrella, por lo que la tabla de referencia es todo el conjunto de datos. ¡No es mi elección!

Te agradezco que trabajes en esto.

Super User III
Super User III

Hola @cathoms

Prueba esto. Tenga en cuenta que tratará el caso de ninguna selección en la segmentación de datos como si se seleccionara todos. Que sthe ususal comportamiento. Si desea un comportamiento diferente se puede hacer utilizando ISFILTERED( )

SelectedDischargeDepartment =
"Discharge Department(s): "
    &
    VAR __DISTINCT_VALUES_COUNT =
        DISTINCTCOUNT ( 'PI Hospital Template - 7199'[DischargeUnit] )
    VAR __MAX_COUNT =
        COUNTROWS ( ALL ( 'PI Hospital Template - 7199'[DischargeUnit] ) )
    VAR __MAX_VALUES_TO_SHOW = 10
    RETURN
        IF (
            __DISTINCT_VALUES_COUNT = __MAX_COUNT,
            "All",
            IF (
                __DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
                CONCATENATE (
                    CONCATENATEX (
                        TOPN (
                            __MAX_VALUES_TO_SHOW,
                            VALUES ( 'PI Hospital Template - 7199'[DischargeUnit] ),
                            'PI Hospital Template - 7199'[DischargeUnit], ASC
                        ),
                        'PI Hospital Template - 7199'[DischargeUnit],
                        "; ",
                        'PI Hospital Template - 7199'[DischargeUnit], ASC
                    ),
                    ", etc."
                ),
                CONCATENATEX (
                    VALUES ( 'PI Hospital Template - 7199'[DischargeUnit] ),
                    'PI Hospital Template - 7199'[DischargeUnit],
                    "; ",
                    'PI Hospital Template - 7199'[DischargeUnit], ASC
                )
            )
        )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

¡Ah, sí! Declaraciones IF anidadas... ¡Claro! Es curioso cómo las cosas se vuelven obvias en retrospectiva. Sin embargo, todavía no funciona.

La variable MAX_COUNT de AIB no hizo el truco,

    VAR __MAX_COUNT =
        COUNTROWS ( ALL ( 'PI Hospital Template - 7199'[DischargeUnit] ) )

así que lo reemplaqué con

    VAR __MAX_COUNT =
        DISTINCTCOUNT ( 'PI Hospital Template - 7199'[DischargeUnit] )

Esto es probablemente porque la tabla es el conjunto de datos en lugar de una tabla de búsqueda. Estamos usando un enorme archivo plano en lugar de configurar un esquema de estrella para este informe... No me hagas empezar. ¡No es mi decisión! 😖

Cualquiera que, todo se ve así:

SelectedDischargeDepartment =
"Discharge Department(s): "
    &
    VAR __DISTINCT_VALUES_COUNT =
        DISTINCTCOUNT ( 'PI Hospital Template - 7199'[DischargeUnit] )
    VAR __MAX_COUNT =
        DISTINCTCOUNT ( 'PI Hospital Template - 7199'[DischargeUnit] )
    VAR __MAX_VALUES_TO_SHOW = 10
    RETURN
        IF (
            __DISTINCT_VALUES_COUNT = __MAX_COUNT,
            "All",
            IF (
                __DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
                CONCATENATE (
                    CONCATENATEX (
                        TOPN (
                            __MAX_VALUES_TO_SHOW,
                            VALUES ( 'PI Hospital Template - 7199'[DischargeUnit] ),
                            'PI Hospital Template - 7199'[DischargeUnit], ASC
                        ),
                        'PI Hospital Template - 7199'[DischargeUnit],
                        "; ",
                        'PI Hospital Template - 7199'[DischargeUnit], ASC
                    ),
                    ", etc."
                ),
                CONCATENATEX (
                    VALUES ( 'PI Hospital Template - 7199'[DischargeUnit] ),
                    'PI Hospital Template - 7199'[DischargeUnit],
                    "; ",
                    'PI Hospital Template - 7199'[DischargeUnit], ASC
                )
            )
        )

Desafortunadamente, ahora dice "Departamento(s) de Descarga: Todos" independientemente de cuál o cuántas unidades de descarga se seleccionen en el filtro...

Helpful resources

Announcements
secondImage

Happy New Year from Power BI

This is a must watch for a message from Power BI!

December Update

Check it Out!

Click here to read more about the December 2020 Updates!

Community Blog

Check it Out!

Click here to read the latest blog and learn more about contributing to the Power BI blog!

Get Ready for Power BI Dev Camp

Get Ready for Power BI Dev Camp

Mark your calendars and join us for our next Power BI Dev Camp!.

Top Solution Authors