Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Cómo crear una medida con selección constante para una dimensión

No conseguimos encontrar tu ubicación exacta.
Tengo un hecho y tablas de dimensiones como abajo.

ClienteNoSalesOrganizationCanalCreditLimit
1AX500
1CZ500
2AY200
2BZ200
3BZ50
4CX100
4AZ100

ClienteNoSalesOrganizationCanal
1AX
2BY
3BZ
4CZ

Se unieron dos tablas en CustomerNo y estoy usando SalesOrganization y Channel from dimension table.
Quiero crear i medida en CreditLimit y devuelve;
Suma de CreditLimit pero solo 1 vez por cliente (850). (podemos suponer que un cliente solo tiene un límite de crédito)
SI se selecciona 1 en Filtro CustomerNo (500)
SI se selecciona A del filtro SalesOrganization (700)
SI selecciona Z del filtro de canal (150)

En resumen, quiero que no agregue el límite de crédito para aquellos que tienen el mismo número de cliente

En realidad no sé qué función dax debo usar.

Estoy esperando tu ayuda.

1 ACCEPTED SOLUTION

Hola @alsasloren ,

Podemos intentar utilizar la siguiente medida para satisfacer su requirmenet:

Measure = 
SWITCH (
    TRUE (),
    ISFILTERED ( 'dimension'[Channel] ), SUMX (
        DISTINCT ( 'dimension'[Channel] ),
        CALCULATE (
            SUM ( 'fact'[CreditLimit] ),
            FILTER (
                CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
                'fact'[Channel] = EARLIER ( 'dimension'[Channel] )
                    && 'fact'[CustomerNo]
                        IN CALCULATETABLE (
                            DISTINCT ( 'dimension'[CustomerNo] ),
                            'dimension'[Channel] = EARLIER ( 'dimension'[Channel] )
                        )
            )
        )
    ),
    ISFILTERED ( 'dimension'[SalesOrganization] ), SUMX (
        DISTINCT ( 'dimension'[SalesOrganization] ),
        CALCULATE (
            SUM ( 'fact'[CreditLimit] ),
            FILTER (
                CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
                'fact'[SalesOrganization] = EARLIER ( 'dimension'[SalesOrganization] )
                    && 'fact'[CustomerNo]
                        IN CALCULATETABLE (
                            DISTINCT ( 'dimension'[CustomerNo] ),
                            'dimension'[SalesOrganization] = EARLIER ( 'dimension'[SalesOrganization] )
                        )
            )
        )
    ),
    SUMX (
        DISTINCT ( 'dimension'[CustomerNo] ),
        VAR No = [CustomerNo]
        RETURN
            CALCULATE (
                SUM ( 'fact'[CreditLimit] ),
                FILTER (
                    CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
                    'fact'[CustomerNo] = EARLIER ( 'dimension'[CustomerNo] )
                        && 'fact'[SalesOrganization]
                            IN CALCULATETABLE (
                                DISTINCT ( 'dimension'[SalesOrganization] ),
                                'dimension'[CustomerNo] = No
                            )
                )
            )
    )
)

1.jpg2.jpg3.jpg


Por cierto, pbIX archivo como adjunto.


Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

4 REPLIES 4
v-lid-msft
Community Support
Community Support

Hola @alsasloren ,

Lo sentimos, pero no podemos entender la lógica de cálculo de"SI seleccionado A del filtro SalesOrganization (700)", Cuando SalesOrganization a A, el cliente 1 & 2 & 4 cuenta, por lo que el resultado debe ser 800, ¿podría compartir la lógica por qué el cliente 4 no cuenta?

Parte de la medida para el filtro SalesOrganization:

Measure = 
IF (
    ISFILTERED ( 'dimension'[Channel] ),
    CALCULATE (
        SUM ( 'fact'[CreditLimit] ),
        FILTER (
            CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
            'fact'[Channel] IN DISTINCT ( 'dimension'[Channel] )
                && 'fact'[CustomerNo] IN DISTINCT ( 'dimension'[CustomerNo] )
        )
    ),-1

)

3.jpg


Por cierto, pbIX archivo como adjunto.


Saludos



Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

@v-lid-msft
Lamento su malentendido. Es mi culpa.

Déjame decirte el scenerio otra vez.

En primer lugar, estaba calculando mal el caso"SI seleccionado A del filtro SalesOrganization (700)"

Debe ser 500 porque estoy usando el filtro SalesOrganization de la tabla de dimensiones. Coincide solo con CustomerNo 1. Entonces el límite de crédito CustomerNo 1 es 500.

En realidad sólo quiero dar un ejemplo para los casos de selección de filtros.

Quiero crear una página que contenga todos los campos de filtro de la tabla de dimensiones.
Entonces quiero hacer la selección desde el filtro. Si selecciono un cliente, debe ser la devolución del límite de crédito del cliente. Si selecciono SalesOrganization o Channel, debe ser la suma de devolución del límite de crédito de los clientes.
Para ver ejemplos.
Si selecciono el cliente 1 --> 500
Si selecciono SalesOrg A --> 500, SalesOrg B --> 250, SalesOrg C --> 100, SalesOrg A-B Combine --> 750, SalesOrg A-C Combine 600
Si selecciono Canal X --> 500, Canal Y --> 200, Canal Z --> 150, Combinación de Canal X-Y --> 700, Combinación de Canal Y-Z 350

Si no hay selección de los filtros 850

Me revisaron tu ejemplo de pbix. Devuelve siempre:1 para las selecciones CustomerNo y SalesOrganization. Eso está mal para mi lógica. Debe calcular CreditLimit para todas las dimensiones.

Agregué su pbix de nuevo con la mirada que quiero que sea
Enlace

Espero que haya sido descriptivo y comprensible. Tu ayuda es muy valiosa para mí

Hola @alsasloren ,

Podemos intentar utilizar la siguiente medida para satisfacer su requirmenet:

Measure = 
SWITCH (
    TRUE (),
    ISFILTERED ( 'dimension'[Channel] ), SUMX (
        DISTINCT ( 'dimension'[Channel] ),
        CALCULATE (
            SUM ( 'fact'[CreditLimit] ),
            FILTER (
                CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
                'fact'[Channel] = EARLIER ( 'dimension'[Channel] )
                    && 'fact'[CustomerNo]
                        IN CALCULATETABLE (
                            DISTINCT ( 'dimension'[CustomerNo] ),
                            'dimension'[Channel] = EARLIER ( 'dimension'[Channel] )
                        )
            )
        )
    ),
    ISFILTERED ( 'dimension'[SalesOrganization] ), SUMX (
        DISTINCT ( 'dimension'[SalesOrganization] ),
        CALCULATE (
            SUM ( 'fact'[CreditLimit] ),
            FILTER (
                CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
                'fact'[SalesOrganization] = EARLIER ( 'dimension'[SalesOrganization] )
                    && 'fact'[CustomerNo]
                        IN CALCULATETABLE (
                            DISTINCT ( 'dimension'[CustomerNo] ),
                            'dimension'[SalesOrganization] = EARLIER ( 'dimension'[SalesOrganization] )
                        )
            )
        )
    ),
    SUMX (
        DISTINCT ( 'dimension'[CustomerNo] ),
        VAR No = [CustomerNo]
        RETURN
            CALCULATE (
                SUM ( 'fact'[CreditLimit] ),
                FILTER (
                    CALCULATETABLE ( 'fact', ALL ( 'dimension' ) ),
                    'fact'[CustomerNo] = EARLIER ( 'dimension'[CustomerNo] )
                        && 'fact'[SalesOrganization]
                            IN CALCULATETABLE (
                                DISTINCT ( 'dimension'[SalesOrganization] ),
                                'dimension'[CustomerNo] = No
                            )
                )
            )
    )
)

1.jpg2.jpg3.jpg


Por cierto, pbIX archivo como adjunto.


Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

trabajando bien. Muchas gracias

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors