jesspiorier
Estoy luchando con una ecuación dax para identificar diferentes tipos de clientes, específicamente un escenario de Sí, No o Ambos para los compradores navideños.
Tengo una tabla de transacciones y una tabla de clientes (las tablas de ventas y de clientes tienen un número de identificación).
Marqué las transacciones como Sí o No, según el mes de compra. (Compradores de días festivos = 10, 11, 12, No festivos = 1, 2, 3, 4, 5, 6, 7, 8, 9). ¿Cómo identifico a los clientes que son exclusivamente Sí o No, o los que son ambos?
Encontré una publicación que miraba «Una vez», «Primer pedido» y «Devuelto», pero el DAX se basó en fechas de compra mínimas / máximas y no puedo encontrar la manera de personalizarlo para mis necesidades.
Muestra:
Transacción # | Identificación del cliente | Mes de compra | Compra de vacaciones |
123 | A | 6 | norte |
124 | B | 7 | norte |
125 | C | 8 | norte |
126 | D | 9 | norte |
127 | mi | 10 | Y |
128 | A | 10 | Y |
129 | A | 11 | Y |
130 | B | 12 | Y |
131 | C | 1 | norte |
132 | D | 2 | norte |
133 | D | 3 | norte |
Resultados deseados:
Identificación del cliente | Comprador de vacaciones |
A | Ambos |
B | Ambos |
C | No |
D | No |
mi | sí |
Gracias por adelantado. -Cadena
v-lid-msft
Hola @jesspiorier,
La solución que usa medidas y elementos visuales de tabla es excelente, pero en caso de que desee una tabla calculada, puede usar la siguiente fórmula.
Table 2 = ADDCOLUMNS ( DISTINCT ( 'Table'[Customer ID] ), "Holiday Shopper", VAR t = FILTER ( 'Table', 'Table'[Customer ID] = EARLIER ( [Customer ID] ) ) VAR holiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" ) )
O puede agregar una columna Calculado en su tabla de clientes:
Holiday Shopper = VAR id = [Customer ID] VAR t = FILTER ( 'Table', 'Table'[Customer ID] = id ) VAR holiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" )
Y aquí está mi medida:
Holiday Shopper = VAR holiday = COUNTROWS ( FILTER ( 'Table', 'Table'[Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( 'Table', 'Table'[Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" )
Por cierto, pbix como adjunto.
Atentamente,
Equipo de apoyo de la comunidad _ Dong Li
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.
v-lid-msft
Hola @jesspiorier,
La solución que usa medidas y elementos visuales de tabla es excelente, pero en caso de que desee una tabla calculada, puede usar la siguiente fórmula.
Table 2 = ADDCOLUMNS ( DISTINCT ( 'Table'[Customer ID] ), "Holiday Shopper", VAR t = FILTER ( 'Table', 'Table'[Customer ID] = EARLIER ( [Customer ID] ) ) VAR holiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" ) )
O puede agregar una columna Calculado en su tabla de clientes:
Holiday Shopper = VAR id = [Customer ID] VAR t = FILTER ( 'Table', 'Table'[Customer ID] = id ) VAR holiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( t, [Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" )
Y aquí está mi medida:
Holiday Shopper = VAR holiday = COUNTROWS ( FILTER ( 'Table', 'Table'[Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( 'Table', 'Table'[Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" )
Por cierto, pbix como adjunto.
Atentamente,
Equipo de apoyo de la comunidad _ Dong Li
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.
jesspiorier
En respuesta a v-lid-msft
Gracias de nuevo @ v-lid-msft. Esto funcionó perfectamente.
Sin embargo, ahora estoy tratando de hacerlo para clientes que pertenecen a cuatro categorías diferentes, o una combinación de ellas. Intenté modificar su fórmula original «si entonces si no», pero no obtengo los resultados esperados. ¿Quizás puedas ayudar?
Esencialmente es el mismo problema. Un cliente que ha tenido al menos una interacción (potencialmente muchas). Esas interacciones pueden clasificarse en cuatro categorías (no las dos de la publicación original). NO está relacionado con el tiempo, ni quiero resultados a nivel de ID de cliente. Quiero un recuento distinto de ID según la distribución de categorías.
Es una sola tabla plana. El ID de cliente es único. Cada interacción (fila) tiene el indicador de Categoría.
Puedo obtener un recuento distintivo de ID por categoría fácilmente. Quiero saber cuántos ID caben en una sola categoría o en varias. Resultado Esperado:
Solo categoría A: 5
Solo categoría B: 2
Solo categoría C: 1
Solo categoría D: 4
AB – 3
CA – 2
AD – 1
BC -2
BD – 0
CD – 5
ABC: 0
ABD: 1
BCD: 3
CDA: 1
ABCD: 10
¿Tiene sentido? ¿Es posible con DAX?
v-lid-msft
En respuesta a jesspiorier
Hola @jesspiorier,
¿Podría compartir los datos de muestra basados en la tabla esperada que ha compartido?
No incluya información confidencial ni datos reales en su respuesta.
Atentamente,
jesspiorier
En respuesta a v-lid-msft
Gracias @ v-lid-msft. La columna calculada (su segunda sugerencia) me dio los resultados esperados. ¡Gracias por la ayuda!
Nota: necesitaba cambiar los nombres de las variables que sugirió en su ejemplo. Recibí un error de sintaxis en «id» y «t» por alguna razón. Así que los llamé «Recuento de clientes» y «Verdad». Funcionó muy bien. Gracias de nuevo.
Holiday Shopper = VAR CustomerCount="Sales"[Customer ID] VAR truth = FILTER ( 'Sales', 'Sales'[Customer ID] = CustomerCount ) VAR holiday = COUNTROWS ( FILTER ( truth, [Holiday Purchase] = "Y" ) ) + 0 VAR noholiday = COUNTROWS ( FILTER ( truth, [Holiday Purchase] = "N" ) ) + 0 RETURN SWITCH ( TRUE (), holiday > 0 && noholiday > 0, "Both", holiday > 0 && noholiday <= 0, "Yes", "No" )
Según algunas ecuaciones adicionales que he usado, los resultados son los esperados.
ChrisMendoza
@jesspiorier –
¿Lo siguiente logra su tarea?
Measure 2 = VAR _holidayYes = CALCULATE ( COUNTROWS ( TableName ), TableName[Holiday Purchase] = "Y" ) VAR _holidayNo = CALCULATE ( COUNTROWS ( TableName ), TableName[Holiday Purchase] = "N" ) RETURN SWITCH ( TRUE (), _holidayNo >= 1 && _holidayYes >= 1, "Both", _holidayNo >= 1, "No", "Yes" )
jesspiorier
En respuesta a ChrisMendoza
Hola @ChrisMendoza. Gracias por la pronta respuesta. Desafortunadamente, la medida no funcionó como se esperaba. Aunque veo marcas Y y N en mi conjunto de datos (y sé que hay varios compradores únicos o habituales), el único valor devuelto fue «ambos». Usé la columna calculada sugerida a continuación y funcionó. Gracias de cualquier forma.
Nathaniel_C
En respuesta a ChrisMendoza
Hola @jesspiorier,
Hazme saber si tienes alguna pregunta.
Si esto resuelve sus problemas, márquelo como el solución, para que otros puedan encontrarlo fácilmente. Prestigio son agradables también.
Nathaniel
Shopper Timing = var Holiday = CALCULATE(COUNTA(Customer[Holiday Purchase]),FILTER(ALLEXCEPT(Customer,Customer[Customer ID]), Customer[Holiday Purchase] = "Y" )) var Othermonth = CALCULATE(COUNTA(Customer[Holiday Purchase]),FILTER(ALLEXCEPT(Customer,Customer[Customer ID]), Customer[Holiday Purchase] = "N" )) var Whichmonths = If(Holiday>0 && Othermonth>0,"Both", If(Holiday>0 && Othermonth=0,"Yes", IF(Holiday=0 && Othermonth>0,"No","N/A"))) return Whichmonths
Nathaniel_C
En respuesta a Nathaniel_C