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

¿Cómo creo una columna que es la suma de elementos coincidentes en un período de tiempo específico?

He buscado mucho antes de hacer esta pregunta aquí, pero no pude encontrar nada relacionado con mi problema.

Actualmente estoy tratando de obtener un valor específico (llamémoslo "suma en período de referencia") para ser generado en una nueva columna.

Tengo diferentes elementos que están vinculados a un grupo (por ejemplo, el elemento A es del Grupo 1, el elemento B es del Grupo 2, el elemento C es del Grupo 3, etc.) y cada elemento tiene la fecha en que se creó en el siguiente formato: AAAAMM.

¿Cómo creo una columna adicional con la suma de todos los elementos que son del mismo grupo que el elemento de la fila y que se crearon en los últimos 12 meses a partir de la creación del elemento?

Digamos que mi tabla actual se ve así:

| | | Grupo|
| Un          | 202101        | 1     |
|          B | 202101        | 2     |
|          C | 202101        | 3     |
| D          | 202102        | 1     |
|          E | 202001        | 1     |
| F          | 202002        | 1     |
|          G | 202003        | 1     |

Y quiero que el resultado sea así:

| | | Grupo| |
| Un          | 202101        | 1     | 4                       |
|          B | 202101        | 2     | 1                       | 
|          C | 202101        | 3     | 1                       |
| D          | 202102        | 1     | 3                       |
|          E | 202001        | 1     | 1                       |
| F          | 202002        | 1     | 2                       |
|          G | 202003        | 1     | 3                       |

Gracias de antemano.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola

Para cualquiera que tenga el mismo problema que yo, la solución que encontré fue usar CALCULATE con dos filtros de la siguiente manera:

Result = CALCULATE(COUNT(Table[ELEMENT]), FILTER(Table, Table[GROUP] = earlier(Table[GROUP]) && earlier(Table[CREATION_DATE]) <= DATEADD(Table[CREATION_DATE], 12, MONTH)))
¿Por qué puse "anterior(Tabla[CREATION_DATE]) <= DATEADD(Tabla[CREATION_DATE], 12, MES)))" en lugar de simplemente usar "Tabla[CREATION_DATE] >= DATEADD(anterior(Tabla[CREATION_DATE], -12, MES)))"" que es más directo?
Porque las funciones DATE en DAX son súper torpes y solo aceptan columnas como parámetros, lo que significa que earlier(Table[CREATION_DATE]) no es un parámetro válido para la función.

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Hola

Para cualquiera que tenga el mismo problema que yo, la solución que encontré fue usar CALCULATE con dos filtros de la siguiente manera:

Result = CALCULATE(COUNT(Table[ELEMENT]), FILTER(Table, Table[GROUP] = earlier(Table[GROUP]) && earlier(Table[CREATION_DATE]) <= DATEADD(Table[CREATION_DATE], 12, MONTH)))
¿Por qué puse "anterior(Tabla[CREATION_DATE]) <= DATEADD(Tabla[CREATION_DATE], 12, MES)))" en lugar de simplemente usar "Tabla[CREATION_DATE] >= DATEADD(anterior(Tabla[CREATION_DATE], -12, MES)))"" que es más directo?
Porque las funciones DATE en DAX son súper torpes y solo aceptan columnas como parámetros, lo que significa que earlier(Table[CREATION_DATE]) no es un parámetro válido para la función.
Syndicate_Admin
Administrator
Administrator

@T_von_Axt puede explicar cuál es la lógica detrás de lo siguiente:

Element_Id
Creation_Date
Grupo
deseadoResultar
A
202101
1
3
D
202102
1
3
E
202001
1
1
F
202002
1
2
G
202003
1
3

El resultado deseado es la suma de todos los valores que son del mismo grupo y en el marco de tiempo de hasta un año antes de la fecha de creación del elemento.

Así que para el elemento A tenemos 4, porque los elementos A, E, F y G son del Grupo 1 y tienen su fecha de creación en el intervalo de un año antes de la fecha de creación del elemento A.

Para el elemento D solo tenemos uno, porque a pesar de ser del grupo 1, es el único elemento que se creó en el intervalo de un año antes de su fecha de creación.

Syndicate_Admin
Administrator
Administrator

@T_von_Axt Prueba esto:

Calc_Colum=var CurrentGroup='Tabla'[Grupo]

var CurrentDate='Tabla'[Creation_Date]

var tempTable=SUMMARIZE(FILTER(ALL('Table'),'Table'[Group]=CurrentGroup&&(CurrentDate-'Table'[Creation_Date])<=100),'Table'[Element_Id])

return COUNTROWS(tempTable)

Gracias por su respuesta.

Solo una pregunta: ¿cómo apunta al grupo actual en esa fila? No encontré ninguna manera de hacer referencia a mi grupo actual en esa fila fuera de Table[Group] = Table[Group], pero esto no tendría ningún efecto, ¿verdad?

Se define a través de variables gracias al contexto de fila en columnas calculadas; como resultado, el valor de la variable es fijo y no cambia durante los siguientes cálculos.

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.