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.
Hola a todos
Estoy tratando de crear un cálculo de rango en PBI.
Soy capaz de hacer eso con la función anterior que sólo permite crear en la columna. Cuando creé en la columna No sirve para propósito completamente.
Permítanme mostrar un ejemplo.
Mi conjunto de datos en el lado izquierdo. Creé una columna como esta.
Group Rank = COUNTROWS(FILTER ('Test',Test[Date] = EARLIER (Test[Date]) && Test[Amount] >EARLIER(Test[Amount] )))+ 1
Funciona bien cuando selecciono 1 mes a partir de la fecha de filtro. Pero cuando selecciono 2 meses desde el filtro de fecha Muestra rangos por separado. (para cada mes)
Quiero calculcar el rango por la suma de 2 meses de valor.
Sé que es normal porque estamos creando una columna y escribimos datos directamente en esta columna.
En realidad, lo que quiero preguntar es que hay alguna opción para crear este cálculo con medida ?
ARCHIVO PBIX
Solved! Go to Solution.
Hola @mnstklm33 ,
Debe crear las siguientes medidas, tenga en cuenta que estoy divinding esto en varias medidas para que pueda tener los cálculos comprobados.
Amount = SUM(PCC_Analysis2[Amount])
Rank_Values = RANKX(ALLSELECTED(PCC_Analysis2[Customer]); CALCULATE([Amount]) + + INT ( CALCULATE ( MIN ( PCC_Analysis2[Customer]) ) ) / 100000)
Cumulative Total based on Rank =
CALCULATE([Amount];
TOPN([Rank_Values];ALLSELECTED(PCC_Analysis2[Customer]);[Amount] + INT ( CALCULATE ( MIN ( PCC_Analysis2[Customer]) ) ) / 100000 )
)
% of Products Running Total =
DIVIDE([Cumulative Total based on Rank];CALCULATE([Amount];ALLSELECTED(PCC_Analysis2[Customer])))
La idea aquí es recoger las líneas TOPN que son iguales a la clasificación.
Agregar el + INT ( CALCULATE ( MIN ( PCC_Analysis2[Customer]) ) ) / 100000 permite que los valores iguales sean diferentes.
Ten en cuenta que estoy haciendo una relación entre la segmentación y la tabla de hechos.
@RicoZhou Uso de su archivo PBIX gracias de antemano
Compruebe la conexión del archivo PBIX.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsGracias por todo @AlB, @MFelix y @amitchandak
Fue absolutamente funcionando bien para este escenario, pero hay otro punto que me olvido de mencionar allí.
Todos ustedes usaron la función RANKX, pero en realidad quiero encontrar reciprocidad a la función ANTERIOR. Estás bien, RANKX parece apto para este escenario, pero en estoy usando la función EARLIER con otros cálculos. Como la suma acumulada.
Déjame mostrarte mi principal problema.
Quiero encontrar el % del cliente por el importe total.
Entonces quiero suma acumulada % de la cantidad del cliente de arriba a abajo rango.
A continuación, filtre en la columna Cantidad acumulada %. Por ejemplo, muestre los valores inferiores a %80
Está trabajando bien para un mes, pero no funciona bien como mencioné en mi primer mensaje para más de un mes.
Creé Cantidad de grupo, Rango de grupo, % de importe y % de importe acumulado en la columna y utilicé la función EARLIER la mayoría de estos cálculos.
Ese es el punto que estoy buscando una solución.
Por cierto Si usted tiene otra solución para hacer esta cantidad acumulada % cálculo Está bien para mí no importa.
Hola @mnstklm33 ,
La mejor opción para % en mi opinión es hacerlo con medidas, porque cuando las haces tiene columnas en tus tablas de datos, pierdes la flexibilidad de tener el cálculo de filtros.
Si usted hace el % como medidas, entonces usted puede hacer el rango basado en esas medidas que hacen una tabla temporal en su medida.
¿Puede proporcionar la forma en que está calculando el %s.
Por favor, @AlB y @amitchandak si tiene alguna otra idea por favor compártalas.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsHola @MFelix ,
En primer lugar encuentro el importe total para los clientes para cada mes.
Group Amount = CALCULATE (
SUM( PCC_Analysis2[Amount] ),
FILTER (
'PCC_Analysis2',
'PCC_Analysis2'[Tarih] = EARLIER ( 'PCC_Analysis2'[Tarih] )))
Luego creo un rango de cálculo para la cantidad de clientes
Group Rank =
COUNTROWS (
FILTER (
'PCC_Analysis2',
'PCC_Analysis2'[Tarih] = EARLIER ( 'PCC_Analysis2'[Tarih] )
&& PCC_Analysis2[Amount %] > EARLIER ( PCC_Analysis2[Amount %] )
)
) + 1
Entonces encuentro % Importe para cada cliente con este monto de división y el monto total
Amount % = PCC_Analysis2[Amount] / PCC_Analysis2[Group Amount]
Finalmente estoy haciendo este cálculo de suma acumulada.
Cumulative Amount % =
CALCULATE (
SUM( PCC_Analysis2[Amount %] ),
FILTER (
'PCC_Analysis2',
'PCC_Analysis2'[Tarih] = EARLIER ( 'PCC_Analysis2'[Tarih] ) && PCC_Analysis2[Group Rank] <= EARLIER(PCC_Analysis2[Group Rank])))
Este es el resultado final
Hola @mnstklm33
Usted puede tratar de construir una medida para lograr su objetivo.
En primer lugar, cree una tabla de segmentación de datos.
Slicer = VALUES('PCC_Analysis2'[Tarih])
Medida:
Amount% =
VAR _sel =
ALLSELECTED ( Slicer[Tarih] )
VAR _GroupAmount =
IF (
ISFILTERED ( Slicer[Tarih] ),
CALCULATE (
SUM ( PCC_Analysis2[Amount] ),
FILTER ( ALL ( 'PCC_Analysis2' ), 'PCC_Analysis2'[Tarih] IN _sel )
),
CALCULATE (
SUM ( PCC_Analysis2[Amount] ),
FILTER (
ALL ( 'PCC_Analysis2' ),
'PCC_Analysis2'[Tarih] = MAX ( PCC_Analysis2[Tarih] )
)
)
)
VAR _Amount =
IF (
ISFILTERED ( Slicer[Tarih] ),
CALCULATE (
SUM ( PCC_Analysis2[Amount] ),
FILTER ( 'PCC_Analysis2', 'PCC_Analysis2'[Tarih] IN _sel )
),
SUM ( PCC_Analysis2[Amount] )
)
RETURN
_Amount / _GroupAmount
Cumulative Amount % =
IF (
[Amount%] = BLANK (),
BLANK (),
IF (
ISFILTERED ( Slicer[Tarih] ),
SUMX (
FILTER (
ALLSELECTED ( PCC_Analysis2 ),
PCC_Analysis2[Tarih] IN ALLSELECTED ( Slicer[Tarih] )
&& PCC_Analysis2[Rank] <= MAX ( PCC_Analysis2[Rank] )
),
[Amount%]
)
)
)
Resultado:
Como predeterminado:
Seleccione dos Tarih en Slicer.
Puede descargar el archivo pbix desde este enlace: Función anterior sobre la marcha
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @RicoZhou ,
Gracias por su ayuda.
La medida Importe está funcionando bien que ha creado, pero la cantidad acumulada no funciona como se supone que debe ser.
Está haciendo de grupo los valores por rango. Cuando hacemos esto, diferentes clientes se pueden encontrar en el mismo grupo.
Por ejemplo, en su ejemplo se agruparon los clientes 0003 y 0005. Esto es diferente de nuestra lógica.
Mi resultado esperado debe ser el cliente, el importe y el importe acumulado. no rango. y shoul ser así.
Intenté cambiar la fórmula de % dax de cantidad acumulada. No debe contener la columna Rank. Porque la columna Rango es estática para cada mes. Necesitamos una fórmula de rango sobre la marcha o algo diferente.
Traté de cambiar
&& PCC_Analysis2[Rank] <- MAX ( PCC_Analysis2[Rank] )
parte de su dax con cantidad % pero no acepta medidas.
¿Tienes alguna idea de esto ?
Hola @mnstklm33
Debido a que puede haber algunos resultados mismos en la columna Cantidad cuando se selecciona más de un tarihs.
Por lo tanto, calcular la cantidad acumulada por rango no es una buena manera, le aconsejo que lo calcule agregando una columna de ID.
ID = SWITCH(PCC_Analysis2[Customer],"0001",1,"0002",2,"0003",3,"0004",4,"0005",5)
Nueva medida:
Amount% =
VAR _Sel =
ALLSELECTED ( Slicer[Tarih] )
VAR _Amount =
IF (
ISFILTERED ( Slicer[Tarih] ),
SUMX (
FILTER (
PCC_Analysis2,
PCC_Analysis2[Customer] = MAX ( PCC_Analysis2[Customer] )
&& PCC_Analysis2[Tarih] IN _Sel
),
PCC_Analysis2[Amount]
),
SUMX (
FILTER (
PCC_Analysis2,
PCC_Analysis2[Customer] = MAX ( PCC_Analysis2[Customer] )
),
PCC_Analysis2[Amount]
)
)
VAR _Total =
IF (
ISFILTERED ( Slicer[Tarih] ),
SUMX (
FILTER ( ALL ( PCC_Analysis2 ), PCC_Analysis2[Tarih] IN _Sel ),
PCC_Analysis2[Amount]
),
SUMX ( ALL ( PCC_Analysis2 ), PCC_Analysis2[Amount] )
)
RETURN
_Amount / _Total
Cumulative Amount % =
IF (
ISFILTERED ( Slicer[Tarih] ),
SUMX (
FILTER (
ALL(PCC_Analysis2 ),
PCC_Analysis2[Tarih] IN ALLSELECTED ( Slicer[Tarih] )
&& PCC_Analysis2[ID] >= MAX( PCC_Analysis2[ID] )
),
[Amount%]
))
Resultado:
Puede descargar el archivo pbix desde este enlace: Función anterior sobre la marcha
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @RicoZhou,
Lo siento, supongo que tengo problemas para explicarme.
No podía entender por qué creó una columna de ID para los clientes. Por cierto, no es un cálculo dinámico cómo puedo aplicar este método a todo mi conjunto de datos.
No quiero ordenar a mis clientes por su ID de cliente. Mi requisito es tan simple.
La función anterior es okey para mí, pero está trabajando en la columna que necesito para trabajar con medida.
La medida de importe% está funcionando bien que ha creado.
En este caso sólo necesitamos una suma acumulada para el porcentaje cuando clasificamos el importe de grande a pequeño.
El resultado es ordenar por cliente.
Ejemplos de resultados esperados
Realmente necesito ayuda para este caso. No pude encontrar ninguna solución. Gracias por sus infinitas ayudas.
Hola @mnstklm33 ,
Debe crear las siguientes medidas, tenga en cuenta que estoy divinding esto en varias medidas para que pueda tener los cálculos comprobados.
Amount = SUM(PCC_Analysis2[Amount])
Rank_Values = RANKX(ALLSELECTED(PCC_Analysis2[Customer]); CALCULATE([Amount]) + + INT ( CALCULATE ( MIN ( PCC_Analysis2[Customer]) ) ) / 100000)
Cumulative Total based on Rank =
CALCULATE([Amount];
TOPN([Rank_Values];ALLSELECTED(PCC_Analysis2[Customer]);[Amount] + INT ( CALCULATE ( MIN ( PCC_Analysis2[Customer]) ) ) / 100000 )
)
% of Products Running Total =
DIVIDE([Cumulative Total based on Rank];CALCULATE([Amount];ALLSELECTED(PCC_Analysis2[Customer])))
La idea aquí es recoger las líneas TOPN que son iguales a la clasificación.
Agregar el + INT ( CALCULATE ( MIN ( PCC_Analysis2[Customer]) ) ) / 100000 permite que los valores iguales sean diferentes.
Ten en cuenta que estoy haciendo una relación entre la segmentación y la tabla de hechos.
@RicoZhou Uso de su archivo PBIX gracias de antemano
Compruebe la conexión del archivo PBIX.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsHola @mnstklm33
En lugar de una columna calculada, utilice una medida en el último objeto visual que muestre:
MeasureRank - RANKX(ALL(Test[Customer]),CALCULATE(SUM(Test[Amount])))
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
Hola @mnstklm33
Pruebe la siguiente medida:
Measure = RANKX( ALLSELECTED( Test[Customer] ) ; CALCULATE( SUM( Test[Amount] ) ) )
¿Ves que el resultado a continuación es el mismo para todos los datos y difiere cuando seleccionas fechas:
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em Português@mnstklm33 , creo que necesita un rango de medida aquí. Creo que ha creado un rango de columna.
Rankx(All(Table[customer]), calculate(sum(Table[Amount])))
O
Rankx(All(Table[Month],Table[customer]), calculate(sum(Table[Amount])))
Para rango Consulte estos enlaces
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale
https://community.powerbi.com/t5/Community-Blog/Dynamic-TopN-made-easy-with-What-If-Parameter/ba-p/3...
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |