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
Syndicate_Admin
Administrator
Administrator

Uso de ADDCOLUMNS en lugar de SUMMARIZE

Hola, chicos

Tengo un conjunto de datos enorme y debo resumir algunos de sus valores en una tabla similar a un calendario para realizar mejor los cálculos con mis medidas. En este archivo he creado uno más pequeño solo para ejemplificar lo que pretendo hacer.

La tabla que se genera a partir de la medida SUMMARIZE trae el resultado correcto, como se indica a continuación:

@Summarized_tbl = 
SUMMARIZE(F_Table,
			    d_Calendario[Date],
				"@count",	VAR MAXDATE = MAX(d_Calendario[Date])
							VAR MINDATE = MIN(d_Calendario[Date])
							VAR CALCULO = COUNTROWS(FILTER(ALL(F_Table),
														[start]	<= 	MAXDATE	&&
														[end]	>=	MINDATE))
							RETURN CALCULO)

Fecha | @count

1/1/20185
1/2/201814
1/3/201819
1/4/201830
1/5/201837
1/6/201843
1/7/201851
1/8/201858
1/9/201867
1/10/201873
1/11/201884
1/12/201893
1/13/201896
1/14/201899
1/15/2018108

Sin embargo, en mi conjunto de datos real no puedo construir esta tabla usando SUMMARIZE debido a problemas de rendimiento (cada vez que necesito crear una columna o una medida, tarda casi dos minutos), por lo que esa es la razón por la que estoy tratando de crear esta tabla usando ADDCOLUMNS, que a su vez trae el resultado incorrecto, de la siguiente manera:

@AddC_tbl = 
ADDCOLUMNS(
            VALUES(d_Calendario[Date]),
			"@count",	VAR MAXDATE = MAX(d_Calendario[Date])
						VAR MINDATE = MIN(d_Calendario[Date])
						VAR CALCULO = CALCULATE(
                                                COUNTROWS(
                                                    FILTER(F_Table,
                                                                [start]	<= 	MAXDATE	&&
                                                                [end]	>=	MINDATE)))
						RETURN CALCULO)

Fecha | @count

01/01/20185
02/01/20189
03/01/20186
04/01/201811
05/01/20187
06/01/20187
07/01/20189
08/01/20187
09/01/20189
10/01/20186
11/01/201811
12/01/20189
13/01/20183
14/01/20183
15/01/20189

Este cálculo es simplemente contar cuántos registros comenzaron en la fecha de contexto de fila, pero lo que quiero hacer es contar cuántos registros estaban activos cada mes, de la siguiente manera:

Pedro503_1-1669308622384.png

¿Alguna idea sobre lo que estoy haciendo mal sobre la medida ADDCOLUMNS DAX mostrada anteriormente?

1 ACCEPTED SOLUTION

La solución fue envolver las fórmulas MAX y MIN en CALCULATE y en el filtro dentro de COUNTROWS poner un ALL.

@AddC_tbl = 
ADDCOLUMNS(
            VALUES(d_Calendario[Date]),
			"@count",	VAR MAXDATE = CALCULATE(MAX(d_Calendario[Date]))
						VAR MINDATE = CALCULATE(MIN(d_Calendario[Date]))
						VAR CALCULO = CALCULATE(
                                                COUNTROWS(
                                                    FILTER(ALL(F_Table),
                                                                [start]	<= 	MAXDATE	&&
                                                                [end]	>=	MINDATE)))
						RETURN CALCULO)

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

No sé lo que está pasando, pero no puedo pegar el enlace aquí, pero la segunda línea contiene el enlace

Syndicate_Admin
Administrator
Administrator

@PEDRO503 ,

¿Puede mostrar el modelo de datos y los datos de muestra?

Porque si no me pierdo algo, entonces la siguiente medida debería traer el mismo resultado que la primera medida y si lo hace, entonces también debería ser más eficiente.

@Summarized_tbl = 

SUMMARIZE(
   d_Calendario,
   d_Calendario[Date],
   "@count",	
   COUNTROWS(F_Table)
)

Llego a esta conclusión porque calculas un min y un max en la misma columna que usas para tu resumen y luego haces otro cálculo usando el min y el max. A mi entender, tiene una tabla de fechas y una tabla de hechos con una relación 1: n y desea el recuento de filas por fecha. Si ese es el caso, la medida anterior debería hacer el trabajo y debería ser más eficiente.

¿O me falta algo aquí?

Saludos

Miguel

-----------------------------------------------------

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente. ¡Aprecio su pulgar hacia arriba!

@me en las respuestas o perderé tu hilo.

-----------------------------------------------------

LinkedIn (en inglés)

La solución fue envolver las fórmulas MAX y MIN en CALCULATE y en el filtro dentro de COUNTROWS poner un ALL.

@AddC_tbl = 
ADDCOLUMNS(
            VALUES(d_Calendario[Date]),
			"@count",	VAR MAXDATE = CALCULATE(MAX(d_Calendario[Date]))
						VAR MINDATE = CALCULATE(MIN(d_Calendario[Date]))
						VAR CALCULO = CALCULATE(
                                                COUNTROWS(
                                                    FILTER(ALL(F_Table),
                                                                [start]	<= 	MAXDATE	&&
                                                                [end]	>=	MINDATE)))
						RETURN CALCULO)

Gracias por tu respuesta

El archivo está en la segunda línea. En realidad, lo que pretendo hacer es contar cuántos registros existen cada mes, no necesariamente contar solo las filas.

Por ejemplo, algunos Id comenzaron el 01/01/2018 y estuvieron activos hasta el 10/01/2018. Quiero indicar que en todos los meses de enero a octubre esta suscripción estuvo activa.

Ene1
Feb1
Estropear1
Apr1
Mayo1
Jun1
Jul1
Ago1
Sep1
Oct1

Para ello, calculo la siguiente medida de Dax:

COUNTROWS(
          FILTER(ALL(F_Table),
														                    
          [start] <= MAXDATE &&
														 
          [end]   >= MINDATE))

¿Sabe cómo mejorar su rendimiento utilizando ADDCOLUMNS?

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.