March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hola tengo una tabla que se ve así:
cliente, mes, valor
A, oct, 0
A, noviembre, 500
A, dic, 600
B, Oct, 1000
B, noviembre, 800
B, dic, 0
C, oct, 300
C, nov, 400
C, dic, 200
.... Miles de clientes, cada uno con datos de 3 meses
Necesito obtener una lista de clientes que se fueron en un mes (por ejemplo. B se fue en diciembre), y que se incorporó en un mes (por ejemplo, A se unió en noviembre). No me importa si el valor de un cliente cambió de mes a mes, siempre y cuando el valor no sea cero.
¿Podría alguien ayudar?
Ryan, estaba buscando ayuda sobre cómo hacer 1+1+1+1..=10. Esperaba obtener respuestas como 1 + 1 + 1 ... = 2 + 1 + 1 + 1 ... = 3 + 1 + 1 ..= 10.
Ahora me das una respuesta de que esto es igual a 1 * 10, y que 10/1 = 10.
¡Pero muchas gracias por la hermosa respuesta y por pasar el tiempo! Esto me dice cuánto necesito aprender, comenzando con EARILER, EDATE, etc.
Permítanme digerir y puedo volver para preguntas específicas sobre su DAX.
Gracias de nuevo!
De nada
Ryan
EARLY parece ser un concepto doloroso, al menos para mí y para muchos otros. Google dice que puede ser reemplazado por VAR o variable. ¿Sería posible que hicieras esto sin usar EARLY, sino VAR?
Muchas gracias.
Por favor, pruebe esto
Left =
VAR _customer='Table'[customer]
VAR _month='Table'[month]
VAR _last=maxx(FILTER('Table','Table'[customer]=_customer&&'Table'[month]=EDATE(_month,-1)),'Table'[value])
return if(not(ISBLANK(_last))&&'Table'[value]=0,"Y")
Join =
VAR _customer='Table'[customer]
VAR _month='Table'[month]
VAR _last=maxx(FILTER('Table','Table'[customer]=_customer&&'Table'[month]=EDATE(_month,-1)),'Table'[value])
return if(_last=0&¬(ISBLANK(_last))&&'Table'[value]<>0,"Y")
Puedes probar esto
Left =
VAR _last=maxx(FILTER('Table','Table'[customer]=EARLIER('Table'[customer])&&'Table'[month]=EDATE(EARLIER('Table'[month]),-1)),'Table'[value])
return if(not(ISBLANK(_last))&&'Table'[value]=0,"Y")
Join =
VAR _last=maxx(FILTER('Table','Table'[customer]=EARLIER('Table'[customer])&&'Table'[month]=EDATE(EARLIER('Table'[month]),-1)),'Table'[value])
return if(_last=0&¬(ISBLANK(_last))&&'Table'[value]<>0,"Y")
Hola Ryan,
Muchas gracias, y ahora lo entiendo. Pero tal vez la programación tiene que ver con el pensamiento "contrahumano". ¿Cómo se te ocurrió ese proceso de pensamiento? ¿Por qué usar mes-1, no mes+1 (por supuesto, si es así, es necesario ajustar otro conente)?
Ryan
Traté de hacer lo que escribiste. Pero simplemente no me permite escribir nada detrás de "VAR Customer=". Nada aparece automáticamente como esperaba que yo eligiera. ¿Podría decirme por qué?
Gracias.
pls intenta crear una columna, no una medida
Hola Ryan,
Acabo de ver tu mensaje de alguna manera hoy ... Muchas gracias. Funcionó.. casi...
El nuevo problema es que una vez que cargo los datos sin procesar, encuentro que en realidad las filas de valor 0 no existen. Por lo tanto, un cliente abandonado en noviembre = un cliente con valor solo en octubre, y no aparecen otras filas para este cliente
¿Cómo sería este DAX? ¡¡¡Gracias!!!
¿Podría actualizar los datos de muestra y proporcionar el resultado esperado también?
Datos brutos: | Resultados: | |||||
Cliente | Mes | Valor | Batido | Mes | Valor | |
A | oct-22 | 100 | A | dic-22 | 110 | |
A | nov-22 | 110 | D | feb-23 | 680 | |
B | oct-22 | 1000 | ||||
B | nov-22 | 1000 | Resultados: | |||
B | dic-22 | 1200 | Nuevo | Mes | Valor | |
B | ene-23 | 1200 | C | ene-23 | 500 | |
B | feb-23 | 900 | D | nov-22 | 700 | |
C | ene-23 | 500 | ||||
C | feb-23 | 530 | ||||
D | nov-22 | 700 | ||||
D | dic-22 | 720 | ||||
D | ene-23 | 680 |
¿Por qué no tenemos B en los resultados?
¿Por qué los nuevos solo tienen C y D, qué pasa con la primera fila para A? ¿Es eso también nuevo?
Buena pregunta. Supongamos que octubre es el primer mes de operación, por lo que cualquier nueva / rotación comienza en noviembre
¿Por qué se agita solo A y D? ¿Por qué las últimas filas para B y C no se agitan?
Hola Ryan, esto se debe a que B y C tienen valores en febrero de 2023, el último mes.
Por favor, pruebe esto
New =
VAR _min=min('Table'[Month])
VAR _min2=CALCULATE(min('Table'[Month]),ALLEXCEPT('Table','Table'[Customer ]))
return if(_min2>_min&& _min2='Table'[Month],"y")
churned =
VAR _min=min('Table'[Month])
VAR _max=CALCULATE(max('Table'[Month]),ALLEXCEPT('Table','Table'[Customer ]))
return if(_max
Aquí está Ryan. Debería haberlo dejado más claro. Muchas gracias.
Aquí hay una mejor toma de imagen
Ryan
Funcionó, y revisé un poco con algunos datos extraños (algunos se unieron y se fueron rápidamente, etc.) Muchas gracias. Ahora tengo un nuevo desafío. ¿Podría ayudarme, por favor?
¿Cómo puedo pasar de las 2 tablas superiores a la tabla inferior? Si puedo aprender a entender lo que escribirás e incluso ser capaz de hacerlo yo mismo más tarde, ¿se considera esto lograr DAX avanzado ya?
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.