Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola
Estoy luchando en una medida para mi declaración de pérdidas y ganancias. El modelo en sí es muy básico:
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:
¿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.
Solved! Go to Solution.
Dado que este hilo se marcó como spam, lo he rellenado. Y ahora se responde en:
Dado que este hilo se marcó como spam, lo he rellenado. Y ahora se responde en:
@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 🙂
⭕ 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.