Ayuda a encontrar el primer producto comprado por el cliente donde el cliente ha comprado varios productos

Un usuario Pregunto ✅

Anónimo

Hola,

Tengo una tabla:

CUST A | Producto A | 1/1/19 | Departamento de Neumáticos | Neumáticos

CUST A | Producto B | 1/1/20 | Departamento de Acme | Campanas

CUST A | Producto C | 1/1/18 | Departamento de neumáticos | Neumáticos

Probé un Calcular por Min (producto, filtro (anterior (fecha)), Filtro (Neumáticos))

Pero no estoy seguro de cómo escribir esto.

Necesito encontrar el primer producto vendido por el Cliente en «Llantas» por el Departamento de Llantas para cualquier Producto.

En este caso, debería ser el Cliente A, Producto C, para Neumáticos en el departamento de Neumáticos.

Alguien puede ayudar. Dax no es como Excel.

En respuesta a Anónimo

Hola, @Anónimo

Puede probar la siguiente medida.

Sales Price =
var _cust = SELECTEDVALUE('MF Data 6_25'[Account Name])
var _tor = SELECTEDVALUE('MF Data 6_25'[Sales Price (converted)])
 
var _date =
CALCULATE(
MIN('MF Data 6_25'[Created Date].[Date]),
FILTER(
ALL('MF Data 6_25'),
'MF Data 6_25'[Account Name] = _cust&&
'MF Data 6_25'[Product LOBs] = "Career"&&
'MF Data 6_25'[ColSales] < 50000
 
)
)
var _product =
CONCATENATEX(
FILTER(
ALL('MF Data 6_25'),
'MF Data 6_25'[Account Name] = _cust&&
'MF Data 6_25'[Product LOBs] = "Career"&&
'MF Data 6_25'[Created Date].[Date] = _date
),
[Product Name]
)
return
_TOR

Atentamente

Alano

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Hola, @Anónimo

Basándome en tu descripción, creé datos para reproducir tu escenario. El archivo pbix se adjunta al final.

Tabla:

d1.png

Puede crear una medida como se muestra a continuación.

Result = 
var _cust = SELECTEDVALUE('Table'[CUST])
var _date = 
CALCULATE(
            MIN('Table'[Date]),
            FILTER(
                ALL('Table'),
                'Table'[CUST] = _cust&&
                'Table'[Dept] = "Tire Dept"
            )
        )
var _product = 
CONCATENATEX(
    FILTER(
        ALL('Table'),
        'Table'[CUST] = _cust&&
        'Table'[Dept] = "Tire Dept"&&
        'Table'[Date] = _date
    ),
    [Product]
)
return
_cust&"|"&_product&"|"&_date&"|Tire Dept|Tires"

Resultado:

d2.png

Atentamente

Alano

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Anónimo

En respuesta a v-alq-msft

Hola @ v-alq-msft Allan o alguien:

¿Cómo puedo filtrar otra columna en función de los valores?

Me gustaría sacar valores inferiores a 50.000.

Entonces, si tuviéramos un producto que se vendió por menos de 50,000 y fue el primer / primer producto vendido, entonces la fórmula lo omitiría y pasaría al siguiente producto para ver si era mayor que 50,000.

Precio de venta =
var _cust = SELECTEDVALUE (‘Datos MF 6_25′[Account Name])
var _tor = SELECTEDVALUE (‘Datos MF 6_25′[Sales Price (converted)])
—-> Filter (Value (TableColSales, ColSales <50,000))?
var _date =
CALCULAR(
MIN (‘Datos MF 6_25′[Created Date].[Date]),
FILTRAR(
TODOS (‘Datos MF 6_25’),
‘Datos MF 6_25′[Account Name] = _cust &&
‘Datos MF 6_25′[Product LOBs] = «Carrera»
)
)
var _product =
CONCATENATEX (
FILTRAR(
TODOS (‘Datos MF 6_25’),
‘Datos MF 6_25′[Account Name] = _cust &&
‘Datos MF 6_25′[Product LOBs] = «Carrera» &&
‘Datos MF 6_25′[Created Date].[Date] = _fecha
),
[Product Name]
)
regreso
_COLINA

En respuesta a Anónimo

Hola, @Anónimo

Puede probar la siguiente medida.

Sales Price =
var _cust = SELECTEDVALUE('MF Data 6_25'[Account Name])
var _tor = SELECTEDVALUE('MF Data 6_25'[Sales Price (converted)])
 
var _date =
CALCULATE(
MIN('MF Data 6_25'[Created Date].[Date]),
FILTER(
ALL('MF Data 6_25'),
'MF Data 6_25'[Account Name] = _cust&&
'MF Data 6_25'[Product LOBs] = "Career"&&
'MF Data 6_25'[ColSales] < 50000
 
)
)
var _product =
CONCATENATEX(
FILTER(
ALL('MF Data 6_25'),
'MF Data 6_25'[Account Name] = _cust&&
'MF Data 6_25'[Product LOBs] = "Career"&&
'MF Data 6_25'[Created Date].[Date] = _date
),
[Product Name]
)
return
_TOR

Atentamente

Alano

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Anónimo

En respuesta a v-alq-msft

@ v-alq-msft – ¡Esto funcionó muy bien! ¡Ahora entiendo cómo usar filtros dentro de estas ecuaciones!

Amitchandak

@Anónimo, prueba como

calculate(firstnonblankvalue(Table[Date],Min(Table[product])), Table[Type]="Tires")

Anónimo

En respuesta a Amitchandak

Hola @amitchandak

¿Por qué usaríamos nonblankvalue? En este caso se responderían todos los valores.

Aclaré mi pregunta anterior, esto también tiene que encontrar al Cliente al final del día.

Entonces la respuesta sería: CUST A | Producto C | 1/1/18 | Departamento de neumáticos | Neumáticos

Tenga en cuenta que puede haber CUST B, C u otros en esta lista.

Gracias,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *