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
Rickmaurinus
Helper V
Helper V

Reemplazar categoría usando CALCULATE y ALL para un P&L

Hola


Estoy luchando en una medida para mi declaración de pérdidas y ganancias. El modelo en sí es muy básico:

Data Model.jpg

En mi tabla muestro la descripción de nivel 1 en las filas.

Y normalmente para mi ganancia y pérdida utilizo 2 medidas básicas. Uno para cuentas individuales ?

CALCULATE(
     [ Total Amount],
     'Chart of Accounts'[Reporting Type] = "Profit and Loss" )


y uno para subtotales:

CALCULATE( [Total Amount],
     FILTER(
          ALL( 'Chart of Accounts'[Level 1 Description], 'Chart of Accounts'[Level 1 Sort] ),
               'Chart of Accounts'[Level 1 Sort] <= MAX( 'Chart of Accounts'[Level 1 Sort] ) ),
     KEEPFILTERS( 'Chart of Accounts'[Reporting Type] = "Profit and Loss" ) )

Mi reto es el siguiente: Me gustaría corregir algunos números. Y los números a corregir se incluyen en el Plan de Cuentas -> Nivel 1 Descripción llamada 'Normalizaciones'. Así que mi idea es cambiar el contexto del filtro, para incluir sólo las "Normalizaciones" del Plan de Cuentas. Esto filtrará la jerarquía de contabilidad, que a su vez filtra las transacciones de contabilidad.

Marco y Alberto de SQLBI me enseñaron que es mejor cambiar el contexto del filtro eligiendo columnas específicas para ALL() en su instrucción CALCULATE. Así que lo que intenté es:

PnL Measure =
CALCULATE( [Total Amount],
     FILTER( ALL( 'Chart of Accounts'[Level 1 Description] ),
    'Chart of Accounts'[Level 1 Description] = "Normalisations" ) )

Estos resultados solo muestran el importe de la "Normalización" en la fila "Normalización" de la descripción de nivel 1.

Esperaba que mostrara la cantidad de "Normalización", en TODAS las filas de La descripción de nivel 1. Después de todo, utilicé ALL para proporcionar a cada una de esas filas toda la tabla de combinaciones de descripción de nivel 1.

Una medida que funciona.

PnL Measure 1 =
CALCULATE( [Total Amount],
     FILTER( ALL( 'Chart of Accounts' ),
     'Chart of Accounts'[Level 1 Description] = "Normalisations" ) )

Pero esto utiliza la función ALL en toda la tabla del plan de cuentas. Lo cual intenté evitar. A continuación se muestra el resultado:

Result.jpg

¿Alguien puede sugerir una solución aquí? O al menos explicar por qué una medida funciona, y la otra no ?

Gracias de nuevo,

Rick

Editar: La medida mostraba la descripción del Nivel 1 en lugar del Nivel 1.

1 ACCEPTED SOLUTION
Rickmaurinus
Helper V
Helper V

4 REPLIES 4
Rickmaurinus
Helper V
Helper V

Dado que este hilo se marcó como spam, lo he rellenado. Y ahora se responde en:

https://community.powerbi.com/t5/Desktop/Override-category-using-CALCULATE-and-ALL-for-a-P-amp-L/m-p...

Fowmy
Super User
Super User

@Rickmaurinus

Para la siguiente medida, puede utilizar VALORES que respeten el filtro existente en LEVEL1 y no iterar toda la tabla

PnL Measure 1 =
CALCULATE( 
     [Total Amount],
     FILTER( VALUES( 'Chart of Accounts'[Level 1]),
     'Chart of Accounts'[Level 1] = "Normalisations" ) 
)

 


En la siguiente medida, noté que está borrando los filtros en [Descripción de nivel 1] y luego filtrar [Nivel 1] .

Medida de PnL (PnL Measure)
CALCULATE( [Importe total],
FILTRO( ALL( 'Plan de Cuentas'[Nivel 1 Descripción] ),
'Gráfico de cuentas'[Nivel 1] - "Normalizaciones" ) )

________________________

Si mi respuesta fue útil, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla

Haga clic en el icono Thumbs-Up si le gusta esta respuesta 🙂

Youtube Linkedin

Did I answer your question? Mark my post as a solution! and hit thumbs up


Subscribe and learn Power BI from these videos

Website LinkedIn PBI User Group

Hola Fowmy,

Gracias por detectar que borré los filtros en [Descripción de nivel 1] y filtré [Nivel1]. Esto fue un error al describir mi publicación. He cambiado la descripción del post. El problema sigue siendo.

Intenté su sugerencia con

PnL Measure 1 =
CALCULATE( 
     [Total Amount],
     FILTER( VALUES( 'Chart of Accounts'[Level 1 description]),
     'Chart of Accounts'[Level 1 description] = "Normalisations" ) 
)

Esto da como resultado que sólo el nivel 1 que se llama 'Normalizaciones' muestra el número correcto. Mi objetivo es mostrar ese número, sin importar el nivel que se muestre.

La medida usando ALL( 'Chart of Accounts' ) muestra el resultado que quiero, pero utiliza ALL() en toda la tabla. Tengo curiosidad si hay una manera de usar ALL( ) en una sola /pocas columnas y aún así obtener el resultado que quiero.

Mejor

Rick

@Rickmaurinus Intente usar ALLEXCEPT o REMOVEFILTERS en lugar de ALL.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

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.