pabloj1
Ayuda…. puede hacer una búsqueda multifacética, y no puede encontrar un artículo que me dé la respuesta….
Por lo tanto, tengo compras de productos, por fecha y por una región de origen, y el precio pagado, lo suficientemente simple.
Lo que tengo entonces es una tabla de referencia con un precio de mercado para cada producto y región de origen en una fecha.
Lo que quiero hacer es devolver el precio de mercado para cada compra, así que mirando a la primera compra; Producto A del Reino Unido el 10 de junio; esto necesita devolver el precio de mercado del 31 de mayo para el producto A del Reino Unido… No puedo conseguir mi DAX derecho a devolverlo… A partir de esto para cada compra puedo calcular la diferencia para saber si la compra fue por debajo o por encima, o en valor de mercado.
Me gustaría evitar la columna calculada si puede, y hacerlo en una instrucción DAX….
Tenga en cuenta siempre devolver el precio de mercado para la fecha más cercana en el pasado, la fecha del precio de mercado no siempre es al final del mes, ya que puede tener precios a la mitad de mes en algunos meses.
jdbuchanan71
@pabloj1
Hemos detectado un problema desconocido.
Medida para sumar el precio de compra.
Related Market Price Sum = SUMX ( Purchases, [Related Market Price] )
Ahora la recuperacion del precio de mercado relacionado.
Related Market Price =
VAR _PurchaseDate = SELECTEDVALUE ( Purchases[Purchase Date] )
VAR _PriceDate =
CALCULATE(
MAX(Reference[Date]),
TREATAS(
SELECTCOLUMNS(
Purchases,
"Product",Purchases[Product],
"Source",Purchases[Source]),
Reference[Product],
Reference[Region]
),
Reference[Date] < _PurchaseDate
)
RETURN
CALCULATE(
SUM ( Reference[Market Price] ),
TREATAS(
SELECTCOLUMNS(
Purchases,
"Product",Purchases[Product],
"Source",Purchases[Source]),
Reference[Product],
Reference[Region]
),
Reference[Date] = _PriceDate
)
Entonces, con el fin de conseguir totales de trabajo utilizo lo anterior en un SUMX sobre la tabla de compras.
Related Market Price Sum = SUMX ( Purchases, [Related Market Price] )
Y finalmente el delta calc
Delta = [Purchase Price] - [Related Market Price Sum]
He adjuntado mi archivo de muestra para que lo mires.
pabloj1
En respuesta a jdbuchanan71
Sí, la solución ofrece… Sin embargo.. cuando fui a usar con ira, mi modelo es más complicado que inicialmente mostré… no puedo hacer que ahora funcione… ¡Ayuda!…
precio de mercado
Fecha de compra
Cantidad y precio de compra
tablas de proveedores
modelos
La salida que necesito sigue siendo la misma.. por cada precio de entrega (packno) pagado frente al precio de mercado (fecha más reciente en el pasado para ese producto de esa región)
Gracias de antemano…
jdbuchanan71
En respuesta a pabloj1
@pabloj1
Por favor, comparta una copia de su archivo .pbix. Puedes cargarlo en OneDrive o DropBox y publicar el enlace aquí.
pabloj1
En respuesta a jdbuchanan71
https://1drv.ms/u/s!ApcyZzyFx2-9hZBD2RmW3TFZbpBBFQ?e=GgR9D5
Gracias… me las arregló para responder a mi pregunta ref más tablas mediante la adición de dos variables más en el DAX a lookupvalue en el código original, así que gracias, que funciona, tal vez un DAX más eficiente que LOOKUPVALUE aunque.
VAR _SupplierRegion ?CALCULAR(LOOKUPVALUE( ‘mercados electrónicos'[Region] , ‘mercados electrónicos'[Proveedor] , _Proveedor ))VAR _Producto ?CALCULAR(LOOKUPVALUE( ‘vEntregas – Anular pivote'[Prodcat] , ‘vEntregas – Desenmarañar'[packno] , _Paquete No ))
Ahora tengo un problema de inteligencia de tiempo, ¿cómo insertar un RELACIÓN DE USUARIO (‘Calendario'[Date] , vEntregas[orderdate] ) en el DAX, porque necesito usar la tabla Calendar para filtrar, pero el envío de relación de fecha principal no es Orderdate.
Mira a continuación estoy filtro en febrero, pero tienen una entrega de enero se muestra, solo quieren mostrar las entregas de febrero…
Este es el modelo de datos
Archivo de ejemplo aquí..
https://1drv.ms/u/s!ApcyZzyFx2-9hZBD2RmW3TFZbpBBFQ?e=GgR9D5
Gracias por cualquier ayuda… Apreciado…
jdbuchanan71
En respuesta a pabloj1
@pabloj1
Empezaría con algo de limpieza en el modelo. Parece que puede tener una sola tabla de entrega que tenga todos los campos.
En este momento, la tabla «vDeliveries – Unpivot» tiene 19.320 filas en blanco.
Su vDelivers to vIntoWork es un 1:1, lo que significa que el [Date Into Work] solo se puede mover a la tabla Deliveries. Esto le permitirá tener un modelo más directo con el que trabajar.
Lo que simplifica la escritura de las medidas.
pabloj1
En respuesta a jdbuchanan71
Ah… no tan simple. Inventé un archivo de ejemplo para anular los datos e hice la tabla intoWork demasiado simple.
En realidad, todas las entregas no se utilizan totalmente, por ejemplo, una entrega de 100, sólo 80 podrían ponerse en marcha, 20 permanecerán en stock; también usando tal vez divididos en un número de días, por ejemplo, una entrega de 100, 50 podría ser utilizado 1 día, 20 el siguiente, 30 tres días después de que…
He hecho el modelo más representativo… Apols….
https://1drv.ms/u/s!ApcyZzyFx2-9hZBEmQ1DKwRf-eseeA?e=b2tfrD
jdbuchanan71
En respuesta a pabloj1
Puede invocar esa relación contra su medida como usted dijo.
Delta Order Date = CALCULATE([Delta],USERELATIONSHIP('Calendar'[Date],vDeliveries[orderdate]))
pabloj1
En respuesta a jdbuchanan71
Muchas gracias… Voy a ir a echar un vistazo….