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
EDS
Helper I
Helper I

PENULTIMO DIA de compra de producto cliente

Buenos días, me gustaría saber qué formula de dax debo usar para consegurir los dias transcurridos entre el ultimo y penultimo day de compra de un producto determinado de un cliente.

Tengo calculado el ultimo dia de compra de un cliente, tambien el ultimo dia de compra de un producto de dicho cliente, y ahora me gustaria calcular los dias transcurridos entre el ultimo dia y penultimo dia de compra de un producto de ese cliente.

ultimas compra producto = CALCULATE (LASTDATE (Lineas [Fecha de pedido]. [Date]), FILTER (Lineas, Lineas [No_]))
ultima compra cliente = CALCULATE ([ultimas compra], all (Lineas), VALUES (Lineas [Nombre venta]))
dias trascurridos desde ultima compra producto = DATEDIFF ([ultimas compra producto], TODAY (), DAY)

Saludos. y gracias.

18 REPLIES 18
EDS
Helper I
Helper I

Buenos día, s tengo esta tabla y necestio que me devuelva lo marcado en negrita.

Es decir para el cliente 1007 Ahorramas, necesito su ultima compra, la ultima compra de un producto de ese cliente, y la penultima compra de ese producto cliente que estas dos ultimas logicamente no tienen que coicidir con la ultima compra del cliente.

Fecha de pedidoDescripciónbacalao + venta adias transcurridos ultimo pedido clientedias transcurridos entre hoy el ultimo dia pedido un producto determinado clientedias entre ultimo y penultimo dia transcurridos entre ultimo y penultimo dia cliente producto
28/05/2021Salami pieza1007 Ahorramas, SA (Marca Alipende)4814
24/05/2021Cuatripack Salchichón Extra Alipende 4 * 50g1007 Ahorramas, SA (Marca Alipende)   
10/05/2021Cuatripack Salchichón Extra Alipende 4 * 50g1007 Ahorramas, SA (Marca Alipende)   
30/04/2021Cuatripack Salchichón Extra Alipende 4 * 50g1007 Ahorramas, SA (Marca Alipende)   
      

Hay @EDS,

¿Puede compartir algunos datos ficticios con una estructura de datos similar y los resultados esperados? Debería ayudarnos a aclarar su escenario y probar la fórmula de codificación.

Cómo obtener una respuesta rápida a su pregunta

saludos

Xiaoxin Sheng

Creo que he resuelto su consulta.

Mirando en la tabla que has pegado he creado las siguientes columnas (nombre de la tabla = 'Sheet1'):

días transcurridos último pedido del cliente = datediff(calculate(MAX(Sheet1[Fecha de pedido]), filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to]))),today(),day)
días transcurridos entre hoy el último día pedido un cliente de producto determinado = datediff(calculate(MAX(Sheet1[Fecha de pedido]), filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])), filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description]))),today(),day)
días entre el último y el penúltimo día transcurridos entre el último y penúltimo día producto del cliente = datediff(calculate(MAX(Sheet1[Fecha de pedido]), filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])), filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description])), filter(Sheet1, Sheet1[Order date] <> calculate(max(Sheet1[Order date]), filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])) , filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description])))),calculate(MAX(Sheet1[Order date]), filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])), filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description]))), day)
Si esto resuelve su consulta, proporcione un Kudo 🙂
Saludos.

buenos días, primeramente darte las gracias, he intentado poner la formula y me sale todo bien menos el calculo de los dias entre la ultima compra de cliente-producto.

Esta es la formula que he usado basandome en tu formula

EDS_0-1622632546517.png

 

Hola

Asegúrese de que tiene todas las sintaxis en su lugar. Por ejemplo, veo doble ')' al final de la fórmula, mientras que yo escribí solo uno. Es necesario asegurarse de que todo es correcto. A continuación tal vez un ejemplo más claro:

días entre el último y el penúltimo día transcurridos entre el último y el penúltimo día producto del cliente =
datediff(
calcular(
MAX(
Hoja1[Fecha de pedido]
), filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])),
filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description])),
filter(Sheet1, Sheet1[Order date] <> calculate(
max(Sheet1[Fecha de pedido]),
filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])),
filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description])))
)
),
calcular(
MAX(Hoja1[Fecha de pedido]),
filter(Sheet1, Sheet1[cod + sale to] = earlier(Sheet1[cod + sale to])),
filter(Sheet1, Sheet1[description] = EARLIER(Sheet1[description]))),
día)

Hola, ahora no me da error la formula pero me salen 0 dias entre el ultimo y penultimo dia de compra.

DIAS TRANCURRIDOS PENULTIMO DIA DE COMPRA = DATEDIFF(CALCULATE(MAX(Lineas[Fecha pedido].[Date]),FILTER(Lineas,Lineas[Sell-to Customer No_]=EARLIER(Lineas[Sell-to Customer No_])),FILTER(Lineas,Lineas[No_]=EARLIER(Lineas[No_])),FILTER(Lineas,Lineas[Fecha de pedido].[Date]<>CALCULATE(max(Lineas[Fecha pedido].[Date]),FILTER(Lineas,Lineas[Sell-to Customer No_]=EARLIER(Lineas[Sell-to Customer No_])),filter(Lineas,Lineas[No_]=EARLIER(Lineas[No_]))))),CALCULATE(MAX(Lineas[Fecha pedido].[Date]),FILTER(Lineas,Lineas[Sell-to Customer No_]=EARLIER(Lineas[Sell-to Customer No_])),FILTER(Lineas,Lineas[No_]=EARLIER(Lineas[No_]))),DAY)

HOLA @EDS ,

Trato de simplear las fórmulas dx, puedes probar con la siguiente fórmula si funciona:

TRANCURED DAYS PENULTEENTH DAY OF PURCHASE =
VAR filtered =
    FILTER (
        Lines,
        Lines[Sell-to Customer No_] = EARLIER ( Lines[Sell-to Customer No_] )
            && Lines[No_] = EARLIER ( Lines[No_] )
    )
RETURN
    DATEDIFF (
        MAXX (
            FILTER ( filtered, [Order Date] <> MAXX ( filtered, [Date Ordered] ) ),
            [Date Ordered]
        ),
        MAXX ( filtered, [Date Ordered] ),
        DAY
    )

Si lo anterior no ayuda, por favor comparta un archivo pbix de ejemplo para probar.

saludos

Xiaoxin Sheng

Perfecto, asi sale.

Muchisimas Gracias.

krishna0_0-1622635298273.png

Tiene un error en el nombre de columna. También comprobar es la variación . [ Fecha] es necesario.

Br

Syndicate_Admin
Administrator
Administrator

Realmente ayudaría si proporcionara algunos datos de ejemplo (no una imagen) o un archivo PBIX

EDS
Helper I
Helper I

Buenas intentando eso me sale el dia anterior al ultimo dia de compra de ese producto, pero yo quiero obtener el penultimo dia de compra de un cliente-producto.

¿Podría pegar los datos de entrada, cómo funciona el cálculo y la salida deseada?

Saludos

EDS_0-1622452236004.png

como veras tengo una tarjeta en la que me indica la ultima compra del cliente 24/05/2021.

Tengo otra tarjeta que me indica los dias transcurridos desde hoy hasta la ultima compra del producto que ves selecionado, observarás que este producto en la ultima compra de producto no compro.

ahora me gustaria obtener los dias transcurrridos entre la ultima y penultima compra de ese producto, es decir entre el 25-01 y 18-01. 

Ok, te entiendo ahora. Probablemente deberías crear una nueva columna que te mostrará la fecha del penúltimo artículo.

2º último elemento =
CALCULATE (
    Líneas [Fecha de pedido].[ Fecha] ),
    Líneas [Fecha de pedido]. [Fecha] Líneas [Fecha de pedido]. [Fecha] ) )
)

Ahora usted debe tratar de hacer el datediff:

Purchase_diff =
DATEDIFF ([2º último artículo], [último producto de compra], DÍA)

Saludos

Además, intente poner el segundo filtro al igual que en su línea original [último producto de compra] en el cálculo de '2do último artículo'.

EDS
Helper I
Helper I

Hola, he obtenido el ultimo dia de compra del producto A de un cliente determinado.

Me gustaria saber el penultimo dia de compra de ese producto A para dicho cliente

Hola

Así que si obtienes tu último día de bolsa con una fórmula siguiente: CALCULATE (LASTDATE (Lines [Order Date]. [Fecha]), FILTER (Líneas, Líneas [No_]))

intentó poner CALCULATE (LASTDATE (Lines [Order Date]. [Fecha]), FILTER (Líneas, Líneas [No_]))-1 o CALCULATE (LASTDATE (Líneas [Fecha de pedido]. [Fecha]) -1, FILTRO (Líneas, Líneas [No_])) ?

Creo que uno de ellos debería mostrarte el penúltimo día para la siguiente fórmula.

Saludos.

Syndicate_Admin
Administrator
Administrator

¡Hola!

Déjame entender - has logrado el último día, pero usted está buscando el último pero uno?

En tal caso, sería suficiente si agrega "-1" a [última compra]. ¿Podría dar un ejemplo si le he entendido mal?

Gracias y saludos cordiales.

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.