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.
Hola
Tengo el siguiente modelo de datos:
y el siguiente informe:
"Facturado" es una medida calculada en la tabla AInvoiceFlows, "Pagado" es una medida calculada en la tabla CashIN y "Retraso en el pago" una medida en la tabla "AInvoices".
Ahora todo funciona bien, excepto el "Retraso de pago" en el nivel total por proyecto --> 514 d es la suma de todos los retrasos de las facturas individuales, que debe ser reemplazado por un retraso ponderado teniendo en cuenta el peso de cada factura individual.
Este es el cálculo que me gustaría realizar:
Para calcular la ponderación de cada factura, necesitaría el importe total facturado por proyecto para cada factura individual relacionada con el proyecto específico. En el caso anterior el 1.988.221@ para cada factura individual con el fin de realizar la ponderación.
Lo intenté
TotalInvoicedperProject =
CALCULATE (
[Invoiced],
ALLEXCEPT ( ProjectFilter, ProjectFilter[FullProjectName] )
)
y varias otras variaciones, pero solo estoy logrando esto:
Estoy atascado en esto actualmente no puedo averiguar cómo lograr los 1.988.221 € para cada línea en el informe anterior.
Cualquier ayuda es muy apreciada.
Gracias de antemano
Hola @ITManuel,
No estoy seguro, pero tal vez pruebe esto. En lugar de usar ALLEXCEPT, intente usar ALLSELECTED y VALUES.
TotalInvoicedperProject =
CALCULATE (
[Invoiced],
ALLSELECTED ( ProjectFilter ),
VALUES ( ProjectFilter[FullProjectName] )
)
Esto quita todos los filtros para la tabla ProjectFilter dentro del propio objeto visual (ALLEXCEPT) y mantiene el filtro del proyecto a través de VALUES.
Desafortunadamente, esto tampoco está funcionando. Siguiendo el informe con su medida propuesta.
Si es relevante, esta es la medida [facturada] en la tabla AInvoiceFlows.
Invoiced =
VAR _T1 =
FILTER ( AInvoiceFlows, RELATED ( Customers[INTERCOMPANY] ) = "NO" )
VAR _Result =
SUMX (
_T1,
IF (
AInvoiceFlows[AInvoicesHeader.DOCCURRENCY] = "EUR",
AInvoiceFlows[VALUENETDC],
IF (
AInvoiceFlows[AInvoicesHeader.TARGETCURRENCY] = "EUR",
DIVIDE (
AInvoiceFlows[VALUENETDC],
AInvoiceFlows[AInvoicesHeader.XCHANGERATETC]
),
VAR _DocCurrency = AInvoiceFlows[AInvoicesHeader.DOCCURRENCY]
VAR _OrderDate =
RELATED ( AInvoices[INVOICEDATE] )
VAR _FindDateWithData =
CALCULATE (
MAX ( XChangeRates[DATEXCR] ),
CALCULATETABLE (
LASTNONBLANK ( XChangeRates[DATEXCR], MAX ( XChangeRates[XCHANGERATES] ) ),
XChangeRates[MAINCURRENCY] = "EUR"
&& XChangeRates[FOREIGNCURRENCY] = _DocCurrency
&& XChangeRates[DATEXCR] <= _OrderDate
)
)
RETURN
DIVIDE (
AInvoiceFlows[VALUENETDC],
LOOKUPVALUE (
XChangeRates[XCHANGERATES],
XChangeRates[DATEXCR], _FindDateWithData,
XChangeRates[MAINCURRENCY], "EUR",
XChangeRates[FOREIGNCURRENCY], AInvoiceFlows[AInvoicesHeader.DOCCURRENCY]
)
)
)
)
)
RETURN
_Result
¿El 'INVOICECODE' en la matriz proviene de la tabla 'AInvoices'? En ese caso, puede intentar lo siguiente:
TotalInvoicedperProject =
CALCULATE (
[Invoiced],
ALLCROSSFILTERED ( AInvoices ),
VALUES ( ProjectFilter[FullProjectName] )
)
Sí, el ' INVOICECODE' en la matriz proviene de la tabla 'AInvoices'.
El código propuesto produce el siguiente resultado.
El importe total facturado de 1.988.221€ del proyecto 0JA00000000KE2 que proviene del contexto del filtro externo ahora se muestra presumiblemente para cada factura de la tabla AInvoice.
Todavía no entiendo por qué
TotalInvoicedperProject =
CALCULATE (
[Invoiced],
ALLEXCEPT ( ProjectFilter, ProjectFilter[FullProjectName] )
)
que debería quitar cualquier filtro pero mantener el filtro de ProjectFilter[FullProjectName] no funciona y no quita el filtro de la columna AInvoices[INVOICECODE] en la matriz en la que ProjectFilter[FullProjectName] y AInvoices[INVOICECODE] se utilizan en las filas.
La función ALLEXCEPT elimina sólo los filtros de la tabla especificada como primer argumento (es decir, 'ProjectFilter'). Usando ALLSELECTED (), donde no se hace referencia específica a ninguna tabla, se elimina todo el contexto del filtro interno (incluidos los filtros de la tabla 'AInvoices').
Evitaría usar ALLEXCEPT en medidas de todos modos tanto como sea posible. Lea este artículo para obtener más información: https://www.sqlbi.com/articles/using-allexcept-versus-all-and-values/
Gracias, este artículo me ayudó mucho.
Después de intentarlo un poco, esta medida ahora está funcionando:
TotalInvoicedperProject =
CALCULATE (
[Invoiced],
REMOVEFILTERS ( AInvoices ),
SUMMARIZE ( AInvoices, Projects[PROJECTCODEMASTER] )
)
Este es el resultado:
A tenía que resumir AInvoices sobre Projects[PROJECTCODEMASTER] ya que las facturas de diferentes [PROJECTCODE] en la tabla AInvoices pueden pertenecer al mismo proyecto en la tabla ProjectFilter.
Gracias y saludos cordiales
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.