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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Asigne descuentos en función de las unidades reales vendidas

Hola a todos,

Busco apoyo para resolver un problema de negocio relacionado con la asignación del descuento correcto a un cliente en función del objetivo de unidades vendidas preestablecido. Ejemplo: si el cliente compró 30 unidades, aplicamos un descuento del 3%, 40 unidades, 4%, etc.

Mi modelo:

Tengo una tabla "Rápeles" con 3 columnas, client_id, descuento, objetivo de unidad vendida. En esta tabla, la columna client_id no tiene valores únicos debido al hecho de que hay varios objetivos y varios descuentos. El número de objetivos no es fijo, por lo que un cliente puede tener 3 líneas y otras 10 líneas en la tabla "Rápeles". Tengo otra tabla "Partner" que contiene client_id únicos que filtran la tabla "Rappels". "Orden de venta" es mi tabla de datos que contiene datos de transacciones y client_id y está filtrada por socio. Si quiero la unidad vendida por el cliente en la tabla "Rappels" tengo que usar la función Treatas en el client_id.

Mi problema es que quiero asignar el descuento correcto a aplicar en función de la unidad comprada en el año 2023.
Ejemplo, el cliente 12345 tiene una unidad comprada 568, los objetivos y descuentos son: 300 = 2%, 400 = 3%, 500 = 4%, 600 = 5%, 700 = 6%. ¿Cómo puedo utilizar DAX para devolver el descuento aplicable que será el del rango 500-600? Recuerde que el objetivo no es fijo, un cliente puede tener un objetivo a partir de 40 unidades.

¡Gracias!

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola @_GianmaBI46,

¿Puedes probar esto, por favor?

1. Calcular el total de unidades vendidas en 2023

Units Sold 2023 = 
CALCULATE(
    SUM('Sale order'[Units Sold]), 
    'Sale order'[Year] = 2023
)

2. Determinar el descuento aplicable

Applicable Discount = 
VAR ClientID = SELECTEDVALUE('Partner'[client_id])
VAR UnitsSold2023 = [Units Sold 2023]
RETURN
    MAXX(
        FILTER(
            'Rappels',
            'Rappels'[client_id] = ClientID &&
            'Rappels'[Unit sold target] <= UnitsSold2023
        ),
        'Rappels'[discount]
    )

Hola Sahir,

Su solución funciona, pero todavía tengo un par de problemas:

1) A nivel total, la fórmula no se está sumando correctamente

2) Si pongo columnas de la tabla de Rappels, la fórmula devuelve un valor para cada nivel de "consumo", que es el "objetivo de unidades vendidas".

_GianmaBI46_1-1710156733881.png

¿Cómo podemos modificar?

Punto 1) para que sea addicitve?

Punto 2) ¿Hacer que la fórmula de descuento aplicable devuelva un valor solo cuando las unidades '23 sean superiores al descuento en la línea?

Gracias

Hola Sahir,

Gracias por la solución sugerida, funciona perfectamente.

Se me había ocurrido lo siguiente:

GM de descuento aplicable =

FUERON ID de cliente = SELECTEDVALUE('Socio'[ID Socio])
FUERON Devoluciones de llamadasForClient = FILTRO('Recordatorios', 'Recordatorios'[partner_id] = VALOR(ID de cliente))

-- Calcular el descuento aplicable
FUERON AplicableDescuento =
CALCULAR(
MÁXIMO('Recordatorios'[descuento]),
FILTRO(
Devoluciones de llamadasForClient,
'Recordatorios'[consumo] <= [unidades 12M '23 GM Rappels]
)
)

DEVOLUCIÓN
AplicableDescuento

Mi fórmula funciona pero no es adictiva, mientras que la tuya suma en el nivel total.
¿Sería tan amable de dar una breve explicación de por qué?

Gracias
Gianmarco

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.