Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

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
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.