The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
hola
Me gustaría crear un recuento distinto de clientID donde cada año el clientID tiene que comenzar en cero.
Por lo tanto, básicamente, un cliente nuevo o recurrente debe ser (distinto) contado desde el comienzo de cada año, pero debe ser distinto contada sólo una vez ese año para el mes hasta finales de diciembre.
En la tabla de resultados, agregar categorías debe funcionar de la siguiente manera: si, por ejemplo, se agrega una productcategory en la tabla, el clientID debe estar distinto para ese producto, lo que podría dar lugar, por ejemplo, a clientID 1944 en enero de 2018 para el producto automotriz y, por ejemplo, mayo de 2018 para el producto automotriz de aviacióncategory.
Actualmente tengo la siguiente tabla para la que utilicé la medida CALCULATE(DISTINCTCCOUNT(CLIENTID)):
Para que la solución funcione, ClientID 1944 no debe contarse aquí en febrero de 2018.
(NB Src_ClientNr = ClientID)
A continuación probé la fórmula CALCULATE(DISTINCTCCOUNT(CLIENTID), ALL('datetable[month])) que no funcionó.
También probó una fórmula RANKX, pero RANKX (si entiendo correctamente) da un rango orientado verticalmente, y en esta tabla debe ser un rango horizontal.
¿Cómo aconsejarías resolverlo? Gracias de antemano por su ayuda / comentarios.
Solved! Go to Solution.
Casi encontré la solución con la ayuda del siguiente post y respuesta de Ashish_Mathur:
https://community.powerbi.com/t5/Desktop/DAX-Count-Only-the-first-occurrence-of-a-value/td-p/411034
Utilicé la siguiente medida:
Medida = CALCULATE(DISTINCTCOUNT('FactTable'[clientID]),FILTER(SUMMARIZE(VALUES('FactTable'[clientID]),[clientID],"ABCD",COUNTROWS('FactTable')),[ABCD]=1))
y me dio el siguiente resultado:
Esto es casi correcto, pero el 1 de clientID debe ser en enero de 2018 y no en febrero de 2018.
Para obtener información adicional sobre el lado: Si cambio la última parte de la fórmula a: [ABCD]=2) me da el siguiente resultado:
Entiendo que sólo clientID 1944 aparecen, porque ese es el único cliente con dos distinctcount en la tabla original. No entiendo por qué el 1 aparece en enero y no en febrero, es casi como si la formule empezara en diciembre y cuenta hacia atrás.
¿Qué parte de la fórmula necesito cambiar para llegar al resultado completo requerido?
hola
No entiendo tu pregunta. Comparta un pequeño conjunto de datos, describa su pregunta y muestre el resultado esperado. Asegúrese de que en el archivo que comparte, los encabezados de columna están en inglés.
La tabla de entrada es:
El resultado final requerido es un distinctcount para cada clientID único para cada año:
En este ejemplo, para clientID 1944 sólo debe aparecer un 1 en enero de 2018 y en enero de 2019 (y NO en febrero de 2018 y NO en febrero de 2019). Con la siguiente medida, me acerqué mucho (véase mi publicación en este subproceso): Medida = CALCULATE(DISTINCTCOUNT('FactTable'[clientID]),FILTER(SUMMARIZE(VALUES('FactTable'[clientID]),[clientID],"ABCD",COUNTROWS('FactTable')),[ABCD]=1))
Trate de crear una medida como esta:
Measure = var min_of_year = CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table','Table'[Date].[Year],'Table'[Client ID]))
return CALCULATE(DISTINCTCOUNT('Table'[Client ID]),FILTER('Table','Table'[Date]=min_of_year))
¿Puede cargar su documento PowerBI? ¿Quieres aprender esta opción también y si funciona marcará como una solución también. Gracias de antemano.
Por favor, compruebe el archivo adjunto
Saludos
Liang
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Gracias por sus comentarios. Estoy casi allí, pero probablemente todavía me esté perdiendo algo. Importé la tabla simplificada de Excel en un nuevo documento powerbi para intentar que funcione allí. Estoy usando la siguiente fórmula:
Medida =
VAR MINYEAR = CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table','Table'[Date], 'Table'[Year], 'Table'[clientID]))
devolución
CALCULATE(DISTINCTCOUNT('Table'[clientID]),FILTER('Table','Table'[Date]=MINYEAR))
En el eje X utilizo YearMonth, pero lo calculé directamente desde la tabla con una fórmula [Año][Mes].
De alguna manera sólo me da el resultado (correcto) para el año 2018, año 2019 no es visible, pero también seleccioné el año 2019 en la tabla.
¿Qué está saliendo mal en mi fórmula?
Intente modificar la fórmula:
VAR MINYEAR = CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table', 'Table'[Year], 'Table'[clientID]))
PS Estoy feliz de hacer algunos progresos, pero de alguna manera los totales de fila todavía van mal y el año 2019 no aparece. ¿Qué estoy haciendo mal con la medida mencionada anteriormente?
de la parte ALLEXCEPT, no entiendo esta parte:
'Mesa'[Fecha]. [Año]
«Tabla»[Fecha] que puedo rellenar, también 'Tabel'[Año], pero 'Tabla'[Fecha]. [Año] no funciona para mí.
¿Podría explicar esta parte, por favor?
Además, probó las siguientes cuatro fórmulas para la parte "var" (y la parte regular de "retorno" que sugirió), pero no funcionaron.
1) CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table','Table'[Date]))
2) CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table','Table'[Year]))
3) CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table','Table'[Fecha],'Table'[ID de cliente]), ALLEXCEPT('FactTable','FactTable'[ID de cliente])
4) CALCULATE(MIN('Table'[Date]),ALLEXCEPT('Table','Table'[Year],'Table'[ID de cliente]), ALLEXCEPT('FactTable','FactTable'[ID de cliente])
¿Qué estoy haciendo mal? Gracias por sus comentarios
hola
Pegue la tabla de datos en un formato que se puede llevar a MS Excel. También comparta el vínculo desde el que puedo descargar el archivo de MS Excel.
hola
TABLA DE ENTRADA
fecha clientID
1944 43120
5032 43120
5046 43363
8359 43124
8871 43420
17075 43420
1944 43147
1944 43485
5032 43485
5046 43728
8359 43489
8871 43785
17075 43785
1944 43512
PS se metió en mantener un html no válido se encontró en su mensaje y tuvo que pegar los datos de Excel al bloc de notas hasta aquí, de lo contrario no funcionará. Pegar la tabla OUTPUT no funcionó en este asunto. La tabla de salida es simple, sólo el primer distinctcount calculado por cliente por año debe ser visible (voy a seguir tratando de cargarlo, pero tengo que esperar 1 hora después de que convierte el html de lo contrario voy a obtener un messag sobresuelo del foro 😞)
Muchas gracias por esta solución limpia!
Para otros usuarios en el futuro: La fórmula que funciona (solución creada por Ashish) es:
Medida =
VAR ROWCOUNT = COUNTROWS('DataTable')
VAR YTDMeasure = CALCULATE(ROWCOUNT,DATESYTD('Calendar'[Fecha],"31/12"))
devolución
IF(YTDMeasure>1,BLANK(),ROWCOUNT)
De nada.
esta respuesta
@PowerBIConsult, ¿eso significa que necesitas YTD? Únete a la fecha con la mesa de fechas y prueba
CALCULATE(DISTINCTCCOUNT(CLIENTID), datesytd(Date[Date]))
Power BI — Año tras año con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-ytd-questions-time-intelligence-1-5-e3174b39f38a
https://www.youtube.com/watch?v=km41KfM_0uA
Power BI — Qtr en Qtr con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-qtd-questions-time-intelligence-2-5-d842063da839
https://www.youtube.com/watch?v=8-TlVx7P0A0
Power BI — Mes a mes con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-mtd-questions-time-intelligence-3-5-64b0b4a4090e
https://www.youtube.com/watch?v=6LUBbvcxtKA
Desafortunadamente eso no funciona:
CALCULATE(DISTINCTCCOUNT(CLIENTID), datesytd(Date[Date])) dio como resultado:
En febrero de 2018 ahora hay un 1 en clientID 1944, pero debe ser 0