Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola
Hay dos tablas:
Tabla "Compras":
Método | Tipo | NetworkDays (calculado) |
A | AA | 8 |
B | Bb | 2 |
C | Cc | 19 |
A | Off | 6 |
A | AA | 1 |
Tabla "Términos":
Método | Tipo | Término |
A | AA | 5 |
A | Off | 10 |
B | Bb | 10 |
C | Cc | 15 |
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?
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:
Aquí está mi archivo pbix de prueba:
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:
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:
Aquí está mi archivo pbix cambiado:
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:
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étodo | Tipo | NetworkDays (calculado) | Según otro horario |
A | AA | 8 | |
B | Bb | 2 | 0 |
C | Cc | 19 | 1 |
A | Off | 6 | |
A | AA | 1 | 0 |
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:
Espero que esto ayude.
Saludos
Giotto
Muchas gracias 🙂
¡Todo funciona muy bien!
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
)
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)