mail2vjj
Hola,
Tengo un problema para comparar números en una columna con un conjunto limitado de números en una columna de tabla diferente y devolver un resultado en una nueva columna.
Por favor, eche un vistazo a las tablas a continuación, luego podré describir mi problema de una mejor manera.
La primera tabla es la tabla Ventas, que contiene la identificación del empleado y las Ventas (que es una columna calculada).
La segunda tabla es la tabla de incentivos, que contiene las losas de incentivos y el porcentaje de incentivo.
Ahora quiero calcular el porcentaje de incentivo en función de las ventas.
Tabla de ventas
ID de empleado | Ventas | Incentivo ganado |
1 | 24764 | |
2 | 77984 | |
3 | 103161 | |
4 | 63034 | |
5 | 154584 | |
6 | 62805 | |
7 | 77631 | |
8 | 122275 | |
9 | 110846 | |
10 | 69602 |
Tabla de incentivos
LOSAS HASTA | INCENTIVO% |
64999 | 1,00% |
90000 | 1,25% |
115000 | 2,00% |
140000 | 2,50% |
165000 | 3,00% |
195000 | 3,50% |
250000 | 4,00% |
275000 | 4,50% |
275001 | 5,00% |
Entonces, por ejemplo, para el número de identificación de empleado 2, las ventas son 77,984, por lo que esto es mayor que 64,999 y menos de 90,000 (en la tabla de incentivos, columna ‘Losas hasta’), por lo que la columna ‘Incentivo ganado’ en la tabla de ventas debería devolver el valor 1,00%.
Para el número de identificación de empleado 5, las ventas son 154,584, por lo que la columna ‘Incentivo ganado’ muestra 2.50%.
Para el número de identificación de empleado 1, las ventas son 24,764, por lo que la columna ‘Incentivo ganado’ muestra 0%.… así sucesivamente.
Nuevamente, la columna Ventas en la Tabla de ventas es una COLUMNA CALCULADA y tiene más de 500 filas, que deben compararse con la columna ‘LOSAS HASTA’.
He creado una relación entre las ‘Ventas’ [Sales] columna y el ‘Incentivo’ [Slabs up to] columna e intenté usar la función SI y la función RELACIONADA, que solo funciona si los valores son exactamente los mismos, por ejemplo. si la columna de ventas tiene 64999, el resultado es 1%, pero si las ventas son 65000, el resultado es un espacio en blanco.
Perdón por publicar un problema durante demasiado tiempo y estaré agradecido si alguien me puede ayudar con la solución.
Gracias,
v-huizhn-msft
Hola @ mail2vjj,
He reproducido su escenario y obtengo el resultado esperado. Consulte la siguiente solución paso a paso.
1. Cree una columna de cálculo para obtener el incentivo máximo[SLABS UPTO] en comparación con las ventas[Sales].
Column = CALCULATE(MAX(Incentive[SLABS UPTO]),FILTER(Incentive,Incentive[SLABS UPTO]<=Sales[Sales]))
2. Cree otra nueva tabla haciendo clic en «Nueva tabla» en Modelado en la página de inicio.
Table = ALLSELECTED(Incentive)
3. Cree una relación entre la «Tabla» y la tabla de ventas mediante LOSAS HASTA.
4. Cree otra columna calculada para obtener el resultado esperado.
Incentive Earned = IF(ISBLANK(RELATED('Table'[INCENTIVE %])),0,RELATED('Table'[INCENTIVE %]))
Atentamente,
Angelia
v-huizhn-msft
Hola @ mail2vjj,
He reproducido su escenario y obtengo el resultado esperado. Consulte la siguiente solución paso a paso.
1. Cree una columna de cálculo para obtener el incentivo máximo[SLABS UPTO] en comparación con las ventas[Sales].
Column = CALCULATE(MAX(Incentive[SLABS UPTO]),FILTER(Incentive,Incentive[SLABS UPTO]<=Sales[Sales]))
2. Cree otra nueva tabla haciendo clic en «Nueva tabla» en Modelado en la página de inicio.
Table = ALLSELECTED(Incentive)
3. Cree una relación entre la «Tabla» y la tabla de ventas mediante LOSAS HASTA.
4. Cree otra columna calculada para obtener el resultado esperado.
Incentive Earned = IF(ISBLANK(RELATED('Table'[INCENTIVE %])),0,RELATED('Table'[INCENTIVE %]))
Atentamente,
Angelia
mail2vjj
En respuesta a v-huizhn-msft
Hola @ v-huizhn-msft
En primer lugar, gracias por su respuesta, su solución funcionó y obtuve el resultado deseado, pero tuve que modificar un poco su solución.
Así que ahora tengo un par de preguntas, si es tan amable de responderlas por mí.
Le mostraré el problema que enfrenté y un pequeño ajuste que funcionó, también agradecería mucho si pudiera explicarme la segunda fórmula que utilizó y cómo funciona la función ISBLANK.
1.
Intenté crear una nueva tabla, usé la función ALLSELECTED y me dio la misma tabla con una fila adicional. Verifiqué mi archivo de Excel y no había una fila en blanco y probablemente por eso me dio un error cuando intenté crear una relación entre las ‘Ventas’ [Column] y la ‘Tabla’ [Slabs Upto]. (Por alguna razón, no puedo insertar la captura de pantalla).
Entonces, para resolver esto, acabo de crear una nueva tabla de referencia a partir de la tabla de incentivos y obtuve la relación.
2.
Intenté usar una función IF simple, sin crear una nueva tabla, entonces, ¿por qué no funcionó, ya que existe una relación entre la tabla de Ventas y la tabla de Incentivos?
Incentive Earned = IF ('Sales' [Column] = (Related('Incentive' [Slabs])), RELATED('Incentive'[Incentive %]),0))
…… mi paréntesis podría estar equivocado.
¿Por qué tuvimos que crear una tabla completamente nueva y crear una relación?
3.
¿Puede explicar cómo funciona su fórmula y cómo funciona ISBLANK en esta fórmula?
Incentive Earned = IF(ISBLANK(RELATED('Table'[INCENTIVE %])),0,RELATED('Table'[INCENTIVE %]))
Como ya se habrá imaginado, soy bastante nuevo en Power BI y realmente lo agradecería si pudiera ayudarme con esto.
Muchas gracias por la solución.
v-huizhn-msft
En respuesta a mail2vjj
Hola @ mail2vjj,
1. Edite su tabla de recursos y compruebe si hay alguna operación, consulte la línea resaltada en rojo.
2. Si no hay relación entre dos tablas, la función RELACIONADA no se puede utilizar. Si no creamos una nueva tabla, no se puede crear la relación. Debido a que la columna proviene de la tabla de incentivos, si crea una relación con Incentivo, es fácil de reconocer, al igual que crear una relación por mí mismo.
3.
Incentive Earned = IF(ISBLANK(RELATED('Table'[INCENTIVE %])),0,RELATED('Table'[INCENTIVE %]))
La función ESBLANCO se usa para juzgar si está RELACIONADO (‘Tabla'[INCENTIVE %] está en blanco. Si está en blanco, la prueba_lógica devuelve Verdadero, el resultado es 0. Si el prueba_lógica return Falso, el resultado es RELACIONADO (‘Tabla'[INCENTIVE %].
Además, marque la respuesta como respuesta si le resulta útil. Muchas gracias.
Atentamente,
Angelia
mail2vjj
En respuesta a v-huizhn-msft
Hola @ v-huizhn-msft,
Gracias por su respuesta, sin embargo, todavía estoy un poco confundido.
Para 1.
Sí, verifiqué mi consulta y tiene el paso ‘Tipo cambiado’ en la sección de pasos aplicados.
La fila adicional en la nueva tabla con la función ‘AllSelected’
Para 2.
Esto es lo que entendí de su respuesta. Creamos una nueva tabla porque sin ella, poner las fórmulas se convertiría en una especie de referencia circular.
Para 3.
¿Por qué estamos comprobando si la columna% de incentivo está en blanco o no? La columna no está en blanco, por lo que no debería devolver el valor falso.
Además, en lugar de marcar la columna% de incentivo, ¿no deberíamos marcar la nueva columna que creamos y usarla para obtener el resultado en la columna de Incentivo ganado?
La nueva columna llamada ‘Columna’
Nuevamente, gracias por su solución, funciona y me da el resultado deseado, pero solo estoy tratando de entender la lógica detrás de esto y en qué me equivoqué en mi solución / modelado.
Gracias,
Vishesh