Forum Discussion

alfertab's avatar
alfertab
Helper I
2 years ago
Solved

Sum values depending of one code

Hola a todos, estoy haciendo un problema en DAX y me encuentro un poco en problemas. Tengo la siguiente tabla:

MesClaveValor
eneroT123200
febreroT123300
marzoT123400
abrilT223500
mayoT223600

Lo que necesito es que se vayan sumando los valores de la columna "Valor" según la clave. Por ejemplo, si quiero ver febrero que muestre la suma de 200+300=500; si quisiera ver marzo que muestre 200+300+400=900; si quisiera ver abril, solo muestre 500, y si quisiera ver mayo que muestre 500+600=1100. ¿Alguien sabe como podría hacerlo? 

  • alfertab 

     

    Para lograr la suma acumulada de los valores en DAX de acuerdo a la clave y el mes, puedes utilizar la función `CALCULATE` junto con la función `FILTER` y `ALL` para iterar sobre la tabla y sumar los valores condicionales al orden de los meses y la clave. Aquí te dejo un ejemplo de cómo podrías hacerlo:

    ```dax
    Suma Acumulada =
    CALCULATE(
    SUM('Tabla'[Valor]),
    FILTER(
    ALL('Tabla'),
    'Tabla'[Clave] = EARLIER('Tabla'[Clave])
    && 'Tabla'[Mes] <= EARLIER('Tabla'[Mes])
    )
    )
    ```

    En este cálculo:

    - `SUM('Tabla'[Valor])` es la expresión que queremos calcular, en este caso, la suma de 'Valor'.
    - `FILTER` recorre todas las filas de 'Tabla'.
    - `ALL('Tabla')` elimina los filtros que pudieran existir sobre 'Tabla', de manera que podemos evaluar todos sus registros.
    - `EARLIER('Tabla'[Clave])` y `EARLIER('Tabla'[Mes])` son utilizados para comparar el valor de la fila actual con cada una de las otras filas de la tabla. `EARLIER` es una función que ayuda a mantener el valor de referencia de la fila actual mientras se evalúan las otras filas en el contexto del `FILTER`.

    Debes asegurarte de que el 'Mes' sea tratado como una columna que pueda ser ordenada correctamente, tal vez necesites convertirlo a fecha o a un número que represente el orden cronológico para que la comparación `'Tabla'[Mes] <= EARLIER('Tabla'[Mes])` funcione correctamente.

    Coloca este nuevo cálculo en una medida y úsala en tus visualizaciones para ver la suma acumulada por clave y mes.

2 Replies

  • alfertab 

     

    Para lograr la suma acumulada de los valores en DAX de acuerdo a la clave y el mes, puedes utilizar la función `CALCULATE` junto con la función `FILTER` y `ALL` para iterar sobre la tabla y sumar los valores condicionales al orden de los meses y la clave. Aquí te dejo un ejemplo de cómo podrías hacerlo:

    ```dax
    Suma Acumulada =
    CALCULATE(
    SUM('Tabla'[Valor]),
    FILTER(
    ALL('Tabla'),
    'Tabla'[Clave] = EARLIER('Tabla'[Clave])
    && 'Tabla'[Mes] <= EARLIER('Tabla'[Mes])
    )
    )
    ```

    En este cálculo:

    - `SUM('Tabla'[Valor])` es la expresión que queremos calcular, en este caso, la suma de 'Valor'.
    - `FILTER` recorre todas las filas de 'Tabla'.
    - `ALL('Tabla')` elimina los filtros que pudieran existir sobre 'Tabla', de manera que podemos evaluar todos sus registros.
    - `EARLIER('Tabla'[Clave])` y `EARLIER('Tabla'[Mes])` son utilizados para comparar el valor de la fila actual con cada una de las otras filas de la tabla. `EARLIER` es una función que ayuda a mantener el valor de referencia de la fila actual mientras se evalúan las otras filas en el contexto del `FILTER`.

    Debes asegurarte de que el 'Mes' sea tratado como una columna que pueda ser ordenada correctamente, tal vez necesites convertirlo a fecha o a un número que represente el orden cronológico para que la comparación `'Tabla'[Mes] <= EARLIER('Tabla'[Mes])` funcione correctamente.

    Coloca este nuevo cálculo en una medida y úsala en tus visualizaciones para ver la suma acumulada por clave y mes.