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
Anonymous
Not applicable

Función anterior sobre la marcha

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.

mnstklm33_0-1601640811348.png


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.

mnstklm33_1-1601644276140.png
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

1 ACCEPTED 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


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



View solution in original post

11 REPLIES 11
Anonymous
Not applicable

Gracias 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.

mnstklm33_0-1601650608504.png

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

mnstklm33_1-1601650666790.png

Está trabajando bien para un mes, pero no funciona bien como mencioné en mi primer mensaje para más de un mes.

mnstklm33_2-1601650759088.png


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


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

Hola @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

mnstklm33_0-1601652525429.png

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:

1.png

Seleccione dos Tarih en Slicer.

2.png

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.

Anonymous
Not applicable

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.

mnstklm33_0-1601978269509.png

Mi resultado esperado debe ser el cliente, el importe y el importe acumulado. no rango. y shoul ser así.

mnstklm33_1-1601978938564.png
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:

1.png

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.

Anonymous
Not applicable

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

mnstklm33_0-1602068626536.pngmnstklm33_1-1602068687087.pngmnstklm33_2-1602068797554.png


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


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



AlB
Super User
Super User

Hola @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

SU18_powerbi_badge

MFelix
Super User
Super User

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:

MFelix_0-1601647110607.png


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



amitchandak
Super User
Super User

@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...

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.