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
Syndicate_Admin
Administrator
Administrator

Actualización del precio de inventario

Hola, tengo 3 tablas:

- Fechas

- Productos

- Precio

El precio actual se calcula utilizando una métrica, donde se puede especificar si el valor es el actual o acumulado.

Esta medida se denomina: CPrice, y el valor que se utiliza para calcular es Products[productValue]

Mi objetivo es encontrar el cambio en la forma de precio de cada producto, ya que el filtro se establece por año, quiero comprobar el producto con el fin de comparar el mes seleccionado y el anterior.

por ejemplo:

Filtro en el visual seleccionado: Año: 2020, Mes Julio.

frutaeneFebMarzoAbrilMayojunJulioLo que quiero
manzana 57+2
naranja 31-2

Quiero saber que el artículo es menor o mayor en comparación con el mes anterior.

Leyendo otro post con cosas similares en común decidí encerrar una medida con dos variables

PriceChange = 
VAR LastPirce =
    CALCULATE (
        VALUES (Price[Price]  ),
        FILTER ( Dates, Dates[Date] = MAX ( Dates[Date] ) )
    )
VAR SecondLastDate =
    CALCULATE (
        MAX ( Dates[Date] ),
        FILTER ( Dates, Dates[Date] < MAX ( Dates[Date] ) )
    )
RETURN
    LastPirce
        - CALCULATE ( VALUES ( Price[Price] ), Dates[Date] = SecondLastDate )

Sin embargo, no obtengo ningún resultado cuando uso la variable en mi matriz.

Estoy tratando de visualizarlo en una matriz donde los campos que se usan son:

ROWS: 2 columnas que especifican la categoría y el nombre del producto.

Columnas: Fecha[Año-Mes] [Mes]

Valores: CPrice, Price, PriceChange

El resultado de PriceChange está vacío.

1 ACCEPTED SOLUTION

No @Raulx_7

Según su declaración, sé que tiene tres tablas.

- Fechas

- Productos

- Precio

Desde el código, creo que la tabla Price debería estar relacionada con la tabla Dates, pero no sé cómo se ve realmente el modelo de datos.

Creo que su modo de conexión es una conexión en vivo, por lo que no pudo construir una columna de rango.

Actualizo la medida.

NewMeasure = 
VAR _CPrice =
    SUM ( 'Price'[Price] )
VAR _LastMonthEnd =
    EOMONTH ( MAX ( 'Date'[Date] ), -1 )
VAR _LastMonthStart =
    EOMONTH ( MAX ( 'Date'[Date] ), -2 ) + 1
VAR _LMPrice =
    CALCULATE (
        SUM ( 'Price'[Price] ),
        FILTER (
            ALL ( 'Date' ),
            'Date'[Date] >= _LastMonthStart
                && 'Date'[Date] <= _LastMonthEnd
        )
    )
RETURN
    _CPrice - _LMPrice

El resultado es el siguiente.

1.png

Saludos

Rico Zhou

Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

No @Raulx_7

Construyo una muestra para tener una prueba, creo que necesita usar todas las funciones en el campo de filtro en su código dax o obtendrá un resultado vacío.

Mi muestra es la siguiente.

Tabla de precios:

1.png

Tabla de productos:

2.png

Tabla de fechas:

Date =
VAR _T =
    ADDCOLUMNS (
        CALENDARAUTO (),
        "Year", YEAR ( [Date] ),
        "Month", MONTH ( [Date] ),
        "MonthName", FORMAT ( [Date], "MMM" ),
        "YearMonth",
            YEAR ( [Date] ) * 100
                + MONTH ( [Date] )
    )
VAR _ADDRANK =
    ADDCOLUMNS ( _T, "RANK", RANKX ( _T, [YearMonth],, ASC, DENSE ) )
RETURN
    _ADDRANK

relación:

3.png

medir:

PriceChange =
VAR _CPrice =
    SUM ( 'Price'[Price] )
VAR _LastMonth =
    MAX ( 'Date'[RANK] ) - 1
VAR _LMPrice =
    CALCULATE (
        SUM ( 'Price'[Price] ),
        FILTER ( ALL ( 'Date' ), 'Date'[RANK] = _LastMonth )
    )
RETURN
    _CPrice - _LMPrice

Construir un rango para cada yearmonth en la fecha, entonces sólo tiene que obtener el precio en el rango actual-1 (precio en el mes pasado.). El resultado es el siguiente.

4.png

Seleccione 2020,Julio.

5.png

Saludos

Rico Zhou

Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Gracias, pero mi problema es que no puedo editar las tablas y relaciones en este tablero (está conectado a un cubo), solo puedo crear medidas. A continuación, no es posible crear la columna de clasificación.

No @Raulx_7

Según su declaración, sé que tiene tres tablas.

- Fechas

- Productos

- Precio

Desde el código, creo que la tabla Price debería estar relacionada con la tabla Dates, pero no sé cómo se ve realmente el modelo de datos.

Creo que su modo de conexión es una conexión en vivo, por lo que no pudo construir una columna de rango.

Actualizo la medida.

NewMeasure = 
VAR _CPrice =
    SUM ( 'Price'[Price] )
VAR _LastMonthEnd =
    EOMONTH ( MAX ( 'Date'[Date] ), -1 )
VAR _LastMonthStart =
    EOMONTH ( MAX ( 'Date'[Date] ), -2 ) + 1
VAR _LMPrice =
    CALCULATE (
        SUM ( 'Price'[Price] ),
        FILTER (
            ALL ( 'Date' ),
            'Date'[Date] >= _LastMonthStart
                && 'Date'[Date] <= _LastMonthEnd
        )
    )
RETURN
    _CPrice - _LMPrice

El resultado es el siguiente.

1.png

Saludos

Rico Zhou

Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

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.