Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
¿Es posible realizar una búsqueda desde la tabla de hechos (DirectQuery) que comprueba una tabla (Importar) y, si no hay nada allí, busca en otra (DirectQuery)?
Tengo datos de ventas y necesito calcular los bonos en función de quién es el cliente, aunque para algunas ventas necesito anular el bono basado en el cliente.
Así que con los siguientes datos, el multiplicador de bonificación para sale_id A100 sería 0.1 mientras que para sale_id A200 el multiplicador sería 0.2, porque miro primero en la tabla de bonos de venta para ver si hay una anulación de bonificación allí - y si no, miro la tabla de bonos de cliente.
La función RELACIONADA no funciona, ya que obtengo un error que indica que las columnas de la tabla de bonificación no existen o no tienen una relación con la tabla Sales. Las relaciones están configuradas (de varios a uno desde Ventas hasta tablas de bonificación, con filtros cruzados unidireccionales de las tablas de bonificación).
Gracias a cualquier persona por cualquier ayuda - He intentado, pero no lo he resuelto.
Tabla 1: Ventas
| sale_id customer_id de la casa de la casa de cantidad s.
|-----------|-----------------|------------|
| A100 ? CH2 ? 10 ?
| A200 ? CH2 ? 15 ?
Tabla 2: Bono de Venta
| sale_id Multiplicar
|-------------|----------------|
| A200 ? 0.2 ?
Tabla 3: Bono de cliente
| customer_id Multiplicar
|----------------|----------------|
| CH2 ? 0.1 ?
Una forma de ver el problema, si el número de filas de la tabla en no TOO MANY, es usar la función Filter para comprobar si existe el identificador de cliente/id de venta. Si es cierto, entonces nos fijamos en la tabla A - de lo contrario, nos fijamos en la mesa B
Bonus Multipier = VAR _sale_id = [sale_id]
VAR _customer_id = [customer_id]
VAR tblSalesBonus = FILTER('Sale Bonus','Sale Bonus'[sale_id]=_sale_id)
RETURN
IF(ISBLANK(COUNTROWS(tblSalesBonus)),
SUMMARIZE(FILTER('Customer Bonus','Customer Bonus'[customer_id] = _customer_id),'Customer Bonus'[multiplier]),
SUMMARIZE(tblSalesBonus,'Sale Bonus'[multiplier]))
Acabo de suponer que el resultado devuelto por la función RESUME es escalar, lo que no siempre es cierto, pero con suerte, esto le da una idea general de lo que se puede lograr al hacerlo (sin configurar relaciones en el conjunto de datos).
Finalmente, multiplicando la cantidad por el multiplicador obtendrá la cantidad de bonificación
Espero que ayude
@charliedata , Supongamos que crea dos nuevas dimensiones customer_id, sale_id y unirlas con 3 tablas siempre que sea posible, puede tener un cálculo como este
sumx(summarize( sales, sale_id[sale_id],customer_id[customer_id], "_1",sum(sales[sales])
, "_2",max('sales Bonus'[multiplier]), "_3",max('Customer Bonus'[sales]))
,max([_2],[_3])*[_1])
Esto no se ha probado. Cambie según la necesidad.
Gracias por sugerir una respuesta - No entiendo si esto es una solución, sin embargo.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |