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

Calculo de diferencias de precio dinámico entre sitios

Hola

 

Necesito calcular las diferencias de precio para un sitio en particular ponderado por los kilos.

Del ejemplo que se adjunta, requiero calcular la columna dif = sumatoria de las diferencias de precio para un sitio multiplicado por los kilos.

La complejidad radica que el resultado de la columna dif tiene que ser dinámico para N sitios. Los sitios pueden ir variando a medida que se utilicen distintas combinaciones de filtro.

Lo otro que el valor del precio lo tengo construido en una sola medida, lo que me hace dificil realizar la resta.

 

diferencias_precio_entre_sitios.png

 

Agradeceré vuestra ayuda.

De antemano gracias.

 

Mario Ortiz Lazo

Prime-e

3 REPLIES 3
v-shex-msft
Community Support
Community Support

HI @Mortiz,

No estoy tan seguro de su estructura de la tabla, ¿puede compartir algunos datos ficticios para probar?

Cómo obtener respuesta rápida a su pregunta

Además, puede intentar utilizar la siguiente fórmula de medida si es adecuada para sus necesidades:

Measure =
VAR currkilos =
    CALCULATE (
        SUM ( table[value] ),
        FILTER ( table, [site] = "kilos" ),
        VALUES ( table[rango] ),
        VALUES ( table[sitio] )
    )
VAR summary =
    SUMMARIZE (
        FILTER ( table, [site] <> "kilos" && [site] <> "diff" ),
        [rango],
        [sitio],
        [site],
        "total", SUM ( table[value] )
    )
RETURN
    SUMX ( summary, currkilos - [total] ) * currkilos

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.
Anonymous
Not applicable

Gracias por la ayuda, aun no he podido resolverlo con la formula enviada.

 

La estructura de la tabla es la siguiente:

El precio viene del calculo de una medida de una tabla anterior.

 

SitiokilosPreciorango
Sitio 20,324986560,77329291>32
Sitio 20,189448230,1022139628-30
Sitio 20,324413270,7701182426-28
Sitio 20,967942020,0721012424-25
Sitio 20,965300410,0174307522-24
Sitio 20,546408710,324289426-28
Sitio 20,307540430,0119099322-24
Sitio 20,749800470,9553955528-30
Sitio 20,374609990,4909390924-25
Sitio 20,515869520,7382535524-25
Sitio 30,689697970,125086624-25
Sitio 30,239506370,4456248226-28
Sitio 30,86191030,2729325428-30
Sitio 30,876825040,8293345722-24
Sitio 30,166641130,7776033824-25
Sitio 30,534397380,0665841828-30
Sitio 30,014460910,6140501726-28
Sitio 30,343231650,8342163522-24
Sitio 30,991000390,7215028124-25
Sitio 30,157340910,8088605228-30
Sitio 10,07809610,5629178828-30
Sitio 10,782759470,0247830324-25
Sitio 10,832666730,6946093126-28
Sitio 10,461078760,2868927222-24
Sitio 10,79346750,68517226>32
Sitio 10,512156350,0301170426-28
Sitio 10,24738330,6720060922-24
Sitio 10,841542610,4453163924-25
Sitio 10,280318810,93173736>32
Sitio 10,19534790,4593276828-30

 

Saludos,

Mario Ortiz

Hola @Mortiz,

Puede consultar los pasos siguientes para lograr sus requisitos.

1. Haga una columna sin pivotar en los campos Pirce y Kilos.

Columnas sin pivotar (consulta de energía)

2. Cree un objeto visual de matriz con el rango como fila, sitio, tipo (campo de atributo sin pivotar) como columna.

3. Escriba una fórmula de medida para usar su contenido de fila para calcular el resultado y utilizarla en los campos de valor de la matriz.

Measure = 
VAR currKilo =
    CALCULATE (
        SUM ( T2[Value] ),
        FILTER ( ALLSELECTED ( T2 ), T2[Type] = "Kilos" ),
        VALUES ( T2[Range] ),
        VALUES ( T2[Site] )
    )
VAR price =
    CALCULATE (
        SUM ( T2[Value] ),
        FILTER ( ALLSELECTED ( T2 ), T2[Type] = "Price" ),
        VALUES ( T2[Range] ),
        VALUES ( T2[Site] )
    )
VAR siteCount =
    COUNTROWS ( EXCEPT ( ALLSELECTED ( T2[Site] ), VALUES ( T2[Site] ) ) )
VAR totalPrice =
    CALCULATE (
        SUM ( T2[Value] ),
        FILTER (
            ALLSELECTED ( T2 ),
            NOT ( [Site] IN VALUES ( T2[Site] ) )
                && [Type] = "Price"
        ),
        VALUES ( T2[Range] )
    )
RETURN
    IF (
        ISFILTERED ( T2[Type] ),
        SUM ( T2[Value] ),
        ( price * siteCount - totalPrice ) * currKilo
    )

4. Agregue una tabla de clasificación para extraer el valor del rango y agregue campos de 'orden', luego establezca los campos de orden como el campo 'ordenar por columna' de rango y utilícelo para reemplazar el campo de rango de matriz.

Ordenar por columna en Power BI Desktop Ordenación personalizada en Power BI

Sort = 
ADDCOLUMNS (
    VALUES ( T2[Range] ),
    "Order",
    VAR result =
        PATHITEM ( SUBSTITUTE ( [Range], "-", "|" ), 1 )
    RETURN
        IF (
            SEARCH ( ">", result, 1, -1 ) > 0,
            RIGHT ( result, LEN ( result ) - 1 ),
            result
        )
)

Diseño y resultado de la matriz:

3.png

BTW, también adjunté el archivo de ejemplo a continuación si se confunde acerca de estos pasos.

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

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.