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álculo de datos entre varias tablas y columnas

Hola

Hay dos tablas:

Tabla "Compras":

MétodoTipoNetworkDays (calculado)
AAA8
BBb2
CCc19
AOff6
AAA1

Tabla "Términos":

MétodoTipoTérmino
AAA5
AOff10
BBb10
CCc15

Necesito calcular:

Si 'Compras'[Método] - A, 'Compras'[Tipo] - AA, entonces si 'Compras'[NetworkDays] < 'Términos'[Términos] donde 'Términos'[Método] - A & 'Términos'[Tipo] - AA, tehn show "1";

Si 'Compras'[Método] - A, 'Compras'[Tipo] - AB, a continuación, si 'Compras'[NetworkDays] < 'Términos'[Términos] donde 'Términos'[Método] - A & 'Términos'[Tipo] - AB, a continuación, mostrar "0";
etcetera. Debo describir cada situación en la medida en que hay métodos y tipos en la tabla "Términos".

Si NetworkDays más que Term - mostrar 1, si NetworkDays menor que Term - mostrar 0.

¿Cuál es la sintaxis correcta para describir una fórmula de este tipo?

11 REPLIES 11
v-gizhi-msft
Community Support
Community Support

Hola

Por favor, pruebe esta medida:

Measure = 
IF (
    MAX ( Purchases[Method] ) = MAX ( Terms[Method] )
        && MAX ( Purchases[Type] ) = MAX ( Purchases[Type] ),
    IF ( MAX ( Purchases[NetworkDays (calculated)] ) < MAX ( Terms[Term] ), 0, 1 )
)

El resultado muestra:

60.PNG

Aquí está mi archivo pbix de prueba:

pbix

Espero que esto ayude.

Saludos

Giotto

Anonymous
Not applicable

Gracias. Sólo una excepción que debo insertar, que escribí arriba. 🙃

Hola

Por favor, pruebe esta columna calculada:

Term = 
IF (
    Purchases[Type] <> BLANK (),
    MAXX (
        FILTER (
            'Terms',
            'Terms'[Type] = 'Purchases'[Type]
                && 'Terms'[Method] = 'Purchases'[Method]
        ),
        'Terms'[Term]
    ),
    MAXX (
        FILTER ( 'Terms', 'Terms'[Method] = 'Purchases'[Method] ),
        'Terms'[Term]
    )
)

A continuación, pruebe esta medida:

Measure = 
SWITCH (
    TRUE,
    MAX ( Purchases[NetworkDays (calculated)] ) < MAX ( Purchases[Term] ), 0,
    MAX ( Purchases[NetworkDays (calculated)] ) > MAX ( Purchases[Term] ), 1
)

El resultado muestra:

2.PNG

Y le aconsejo que sólo el uso de una medida para mostrar el resultado esperado para un mayor rendimiento.

Por favor, intente esto:

Measure 2 =
VAR a =
    IF (
        MAX ( Purchases[Type] ) <> BLANK (),
        CALCULATE (
            MAX ( 'Terms'[Term] ),
            FILTER (
                'Terms',
                'Terms'[Type] = MAX ( 'Purchases'[Type] )
                    && 'Terms'[Method] = MAX ( 'Purchases'[Method] )
            )
        ),
        CALCULATE (
            MAX ( 'Terms'[Term] ),
            FILTER ( 'Terms', 'Terms'[Method] = MAX ( 'Purchases'[Method] ) )
        )
    )
VAR b =
    MAX ( Purchases[NetworkDays (calculated)] )
RETURN
    SWITCH ( TRUE, b < a, 0, b > a, 1 )

El resultado muestra:

3.PNG

Aquí está mi archivo pbix cambiado:

pbix

Espero que esto ayude.

Saludos

Giotto

Anonymous
Not applicable

Muchas gracias, veo los números "0" y "1" en la lista. Todo funciona. 😀
Pero, ¿es posible contar el valor de la medida? Por ejemplo, sólo aquellos que son "1" son relevantes para mí. Quiero mostrar cuántos de esos "1" hay (por ejemplo, basado en ciertos criterios).

Hola

Por favor, pruebe esta medida:

Measure = 
SUMX (
    GROUPBY ( Purchases, Purchases[Method], Purchases[Type] ),
    CALCULATE (
        SWITCH (
            TRUE,
            MAX ( Purchases[NetworkDays (calculated)] ) < MAX ( Purchases[Term] ), 0,
            MAX ( Purchases[NetworkDays (calculated)] ) > MAX ( Purchases[Term] ), 1
        )
    )
)

O pruebe esta medida2:

Measure 2 = 
SUMX (
    GROUPBY ( Purchases, Purchases[Method], Purchases[Type] ),
    CALCULATE (
        SWITCH (
            TRUE,
            MAX ( Purchases[NetworkDays (calculated)] )
                < IF (
                    MAX ( Purchases[Type] ) <> BLANK (),
                    CALCULATE (
                        MAX ( 'Terms'[Term] ),
                        FILTER (
                            'Terms',
                            'Terms'[Type] = MAX ( 'Purchases'[Type] )
                                && 'Terms'[Method] = MAX ( 'Purchases'[Method] )
                        )
                    ),
                    CALCULATE (
                        MAX ( 'Terms'[Term] ),
                        FILTER ( 'Terms', 'Terms'[Method] = MAX ( 'Purchases'[Method] ) )
                    )
                ), 0,
            MAX ( Purchases[NetworkDays (calculated)] )
                > IF (
                    MAX ( Purchases[Type] ) <> BLANK (),
                    CALCULATE (
                        MAX ( 'Terms'[Term] ),
                        FILTER (
                            'Terms',
                            'Terms'[Type] = MAX ( 'Purchases'[Type] )
                                && 'Terms'[Method] = MAX ( 'Purchases'[Method] )
                        )
                    ),
                    CALCULATE (
                        MAX ( 'Terms'[Term] ),
                        FILTER ( 'Terms', 'Terms'[Method] = MAX ( 'Purchases'[Method] ) )
                    )
                ), 1
        )
    )
)

El resultado muestra:

5.PNG

Saludos

Giotto

Anonymous
Not applicable

Hola @v-gizhi-msft,

Recibí otra excepción del cliente que debería incluirse en la fórmula.

Tabla "Compras" tienen una columna más "Según otra programación":

MétodoTipoNetworkDays (calculado)Según otro horario
AAA8
BBb20
CCc191
AOff6
AAA10

Cómo insertar en una fórmula cuando no importa cuál es el método y el tipo, si la columna "Según otra programación" es 1, el resultado final debe ser 0.

¡Muchas gracias!

Hola

Por favor, intente esto:

Measure 2 =
SUMX (
    GROUPBY ( Purchases, Purchases[Method], Purchases[Type] ),
    CALCULATE (
        IF (
            MAX ( Purchases[According to another schedule] ) = 1,
            0,
            SWITCH (
                TRUE,
                MAX ( Purchases[NetworkDays (calculated)] )
                    < IF (
                        MAX ( Purchases[Type] ) <> BLANK (),
                        CALCULATE (
                            MAX ( 'Terms'[Term] ),
                            FILTER (
                                'Terms',
                                'Terms'[Type] = MAX ( 'Purchases'[Type] )
                                    && 'Terms'[Method] = MAX ( 'Purchases'[Method] )
                            )
                        ),
                        CALCULATE (
                            MAX ( 'Terms'[Term] ),
                            FILTER ( 'Terms', 'Terms'[Method] = MAX ( 'Purchases'[Method] ) )
                        )
                    ), 0,
                MAX ( Purchases[NetworkDays (calculated)] )
                    > IF (
                        MAX ( Purchases[Type] ) <> BLANK (),
                        CALCULATE (
                            MAX ( 'Terms'[Term] ),
                            FILTER (
                                'Terms',
                                'Terms'[Type] = MAX ( 'Purchases'[Type] )
                                    && 'Terms'[Method] = MAX ( 'Purchases'[Method] )
                            )
                        ),
                        CALCULATE (
                            MAX ( 'Terms'[Term] ),
                            FILTER ( 'Terms', 'Terms'[Method] = MAX ( 'Purchases'[Method] ) )
                        )
                    ), 1
            )
        )
    )
)

El resultado muestra:

30.PNG

Espero que esto ayude.

Saludos

Giotto

Anonymous
Not applicable

@v-gizhi-msft,

Me ayudaste mucho. ¡Gracias! 😌

Anonymous
Not applicable

Muchas gracias 🙂

¡Todo funciona muy bien!

amitchandak
Super User
Super User

Puede obtener una nueva columna en una compra como esta


Término s maxx(filter('Terms','Terms'[Type] ?'Compras'[Tipo] && 'Términos'[Método] 'Compras'[Método]),'Términos'[Término] )

y hacer el cálculo basado en que

Como

Indicador : Switch( true(),
'Compras'[Método] á "A" && 'Compras'[Tipo] - "AA" && 'Compras'[NetworkDays] < 'Compras'[Término] ,1,
'Compras'[Método] á "A" && 'Compras'[Tipo] - "AB" && 'Compras'[NetworkDays] < 'Compras'[Término] ,0,
0
)

Anonymous
Not applicable

Gracias por su tiempo.

Lo siento, mi cliente cambió de opinión... 😒 Cliente.... Je

Método siempre será obligatorio, pero Type no siempre será, sólo para algún método, por ejemplo, el método A siempre tendrá obligatorio tipo AA, pero algunos métodos, por ejemplo, B nunca tendrá tipo.

Así que esta fórmula no es correcta en esta situación:

Término s maxx(filter('Terms','Terms'[Type] ?'Compras'[Tipo] && 'Términos'[Método] 'Compras'[Método]),'Términos'[Término] )

¿Cómo puedo insertar excepciones?

Cuando escriba esta fórmula "Término", tendré esta columna en la tabla "Compras". Eso es muy bueno.

Después de esto, tendré calculado el valor "Late": If NetworkDays more than Term - show 1, if NetworkDays less than Term - show 0.

¿Esta fórmula será adecuada para calcular las compras tardías?

Late - Switch( true();' Compras'[NetworkDays] < 'Compras'[Término];0;' Puchases'[NetworkDays] > 'Compras'[Término];1;0)

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