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.
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.
fruta | ene | Feb | Marzo | Abril | Mayo | jun | Julio | Lo que quiero |
manzana | 5 | 7 | +2 | |||||
naranja | 3 | 1 | -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.
Solved! Go to 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.
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.
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:
Tabla de productos:
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:
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.
Seleccione 2020,Julio.
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.
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.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.