Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Anonymous
Not applicable

Si la primera búsqueda en la tabla relacionada está en blanco, realice una segunda búsqueda en una tabla diferente

¿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 ?

4 REPLIES 4
Anonymous
Not applicable

@charliedata ,

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

image.png

Espero que ayude

Anonymous
Not applicable

Hola @wcai - gracias por sugerir una respuesta. Desafortunadamente no funciona para mí ya que la función FILTER no está disponible, tal vez debido al hecho de que estoy usando DirectQuery (adivinando)
amitchandak
Super User
Super User

@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.

Anonymous
Not applicable

Gracias por sugerir una respuesta - No entiendo si esto es una solución, sin embargo.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.