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

No puede entender por qué ALLEXCEPT no funciona

Hola

Tengo el siguiente modelo de datos:

Data model.JPG

y el siguiente informe:

Report.JPG

"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:

Calculation.JPG

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:

Report.2JPG.JPG

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

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

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.

@Barthel ,

Desafortunadamente, esto tampoco está funcionando. Siguiendo el informe con su medida propuesta.

Report.3JPG.JPG

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

@ITManuel

¿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.

Report 4JPG.JPG

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.

@ITManuel

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/

@Barthel ,

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:

Report 5JPG.JPG

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

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.