cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Martyna_
Helper III
Helper III

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

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

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

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

@v-gizhi-msft,

Me ayudaste mucho. ¡Gracias! 😌

Muchas gracias 🙂

¡Todo funciona muy bien!

amitchandak
Super User IV
Super User IV

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
)



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

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
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

April Update

Check it Out!

Click here to read more about the April 2021 Updates!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.

secondImage

Experience what’s next for Power BI

See the latest Power BI innovations, updates, and demos from the Microsoft Business Applications Launch Event.