Crear una tabla de comparación de lista de precios

Un usuario Pregunto ✅

aitormadoz

Hola a todos,

Estoy tratando de crear una tabla de comparación donde pueda comparar las diferencias entre los precios de una sola referencia entre varias listas de precios.

La estructura de datos es la siguiente:

SKU Lista de precios Precio
A X 12
A Y 13
A Z 11
A T 10,5
B X 6
B Y 5
B Z 4,5
B T 7

El resultado que quiero obtener es una tabla con este aspecto:

Para SKU A (seleccionado en una segmentación de haciendo clic en otra tabla)

sku: A
DESDE/ HASTA X Y Z T
X 0 -1 1 1,5
Y 1 0 2 2,5
Z -1 -2 0 0,5
T -1,5 -2,5 -0,5 0

¿Alguien podría dar una pista sobre cómo realizar este cálculo/adaptar la estructura de datos?

principalmente está calculando la diferencia de precio entre todas las combinaciones adecuadas para cada SKU y lista de precios

gracias de antemano

Zubair_Muhammad

@aitormadoz

Una forma podría ser CROSS JOIN lista de precios de cada SKU consigo mismo y luego calcular la diferencia

Compruebe esta solución de Power Query. Consulte el Editor de consultas del archivo adjunto para conocer los pasos.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUYoAYkMjpVgdCDcSxDWGc6NAXEM4NwTENdAzBQs4QXWbwXkgzQg5kF4TJLUgzeZKsbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [SKU = _t, PriceList = _t, Price = _t]),
    ChangedType = Table.TransformColumnTypes(Source,{{"SKU", type text}, {"PriceList", type text}, {"Price", type number}}),
    #"Added Custom" = Table.AddColumn(ChangedType, "Comparison", each Table.SelectRows(ChangedType, (X)=>X[SKU] =[SKU])),
    #"Expanded Comparison" = Table.ExpandTableColumn(#"Added Custom", "Comparison", {"PriceList", "Price"}, {"Comparison.PriceList", "Comparison.Price"}),
    #"Added Custom1" = Table.AddColumn(#"Expanded Comparison", "Diff", each [Price]-[Comparison.Price])
in
    #"Added Custom1"

crearen.png

Anónimo

Aquí hay un enfoque que no requerirá que cambie la estructura de su tabla de hechos. Solo necesita otra tabla en su modelo para representar la lista de precios de comparación y luego puede dejar que los cálculos DAX hagan el resto.

2019-07-22_14h00_13.png

Con un modelo como el anterior, puede usar el siguiente cálculo, usando la función TREATAS recientemente agregada.

He creado un libro de trabajo de muestra aquí, que puede descargar: Descargar

Obtenga más información sobre la función TREATAS aquí: https://docs.microsoft.com/en-us/dax/treatas-function

Comparison =
VAR varComparisonPrice =
    CALCULATE (
        MAX ( [Price] ),
        TREATAS (
            VALUES ( 'Comparison Price List'[Comparison Price List] ),
            'Price List'[Price List]
        )
    )
VAR varPrice =
    CALCULATE ( MAX ( [Price] ) )
RETURN
    varComparisonPrice - varPrice

Obtendrás el resultado que esperas:

2019-07-22_14h02_38.png

Anónimo

Aquí hay un enfoque que no requerirá que cambie la estructura de su tabla de hechos. Solo necesita otra tabla en su modelo para representar la lista de precios de comparación y luego puede dejar que los cálculos DAX hagan el resto.

2019-07-22_14h00_13.png

Con un modelo como el anterior, puede usar el siguiente cálculo, usando la función TREATAS recientemente agregada.

He creado un libro de trabajo de muestra aquí, que puede descargar: Descargar

Obtenga más información sobre la función TREATAS aquí: https://docs.microsoft.com/en-us/dax/treatas-function

Comparison =
VAR varComparisonPrice =
    CALCULATE (
        MAX ( [Price] ),
        TREATAS (
            VALUES ( 'Comparison Price List'[Comparison Price List] ),
            'Price List'[Price List]
        )
    )
VAR varPrice =
    CALCULATE ( MAX ( [Price] ) )
RETURN
    varComparisonPrice - varPrice

Obtendrás el resultado que esperas:

2019-07-22_14h02_38.png

aitormadoz

En respuesta a Anónimo

Muchas gracias

Solución simple y efectiva

Tuya,

aitor

Zubair_Muhammad

@aitormadoz

Una forma podría ser CROSS JOIN lista de precios de cada SKU consigo mismo y luego calcular la diferencia

Compruebe esta solución de Power Query. Consulte el Editor de consultas del archivo adjunto para conocer los pasos.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUYoAYkMjpVgdCDcSxDWGc6NAXEM4NwTENdAzBQs4QXWbwXkgzQg5kF4TJLUgzeZKsbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [SKU = _t, PriceList = _t, Price = _t]),
    ChangedType = Table.TransformColumnTypes(Source,{{"SKU", type text}, {"PriceList", type text}, {"Price", type number}}),
    #"Added Custom" = Table.AddColumn(ChangedType, "Comparison", each Table.SelectRows(ChangedType, (X)=>X[SKU] =[SKU])),
    #"Expanded Comparison" = Table.ExpandTableColumn(#"Added Custom", "Comparison", {"PriceList", "Price"}, {"Comparison.PriceList", "Comparison.Price"}),
    #"Added Custom1" = Table.AddColumn(#"Expanded Comparison", "Diff", each [Price]-[Comparison.Price])
in
    #"Added Custom1"

crearen.png

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *