Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola a todos:
Tengo dos tablas que están relacionadas a través de una tercera (Facturas - Productos - codigo producto).
Quiero sacar dos datos, uno que me indique el importe del producto de la factura cuando hay stock y otro que me quite el importe del producto cuando no hay stock. Adjunto ejemplo de la estructura de las tabla.
ID Prod Código prod STK Fecha Inicio Fecha Fin
1 02937FR 0 01/01/2022 28/02/2023
1 02937FR 1 01/07/2023
2 42385PR 1 01/01/2022
3 55385MW 0 01/01/2022
Para los productos que no tienen Fecha Fin, he creado unna columna que se llama Fecha Limite que indica la fecha 31/12/2100 cuando el campo está vacío.
ID Prod Nombre Prod
1 Mesa
2 Silla
3 Cómoda
Id Prod Código prod Nº Factura fecha factura Importe
1 02937FR 374623 04/02/2022 150€
1 02937FR 576492 12/08/2023 155€
2 42385PR 473403 05/05/2022 56€
3 55385MW 453629 23/03/2023 86€
Para que no haya lío con las fecha, el planteamiento que he hecho es por ejemplo:
Con Stock= IF(SUM( STK =1) && fecha inicio <= fecha factura && fecha factura <= Fecha Limite, Importe, 0)
Sin Stock = IF(Sum(STK = 0) && Fecha inicio <= fecha factura && fecha factura <= fecha limite, Importe, 0)
El caso es que no me funciona. ¿Me podeis ayudar? estoy venga a darle vueltas y no doy con la solución.
Muchas gracias!!!
Hola @Syndicate_Admin ,
Según mis pruebas, pruebe los siguientes métodos:
1.Cree la tabla simple.
2.Cree la nueva columna que desea filtrar.
With Stock =
var _id = 'Invoices'[ID]
vAR _invoicedate = 'Invoices'[Invoice Date]
var _sdate = CALCULATE(MAX('Product Code'[Start Date]),FILTER('Product Code','Product Code'[ID] = _id&&'Product Code'[Prod STK]=1))
var _deadline = CALCULATE(MAX('Product Code'[Deadline]),FILTER('Product Code','Product Code'[ID] = _id&&'Product Code'[Prod STK]=1))
return
if(_sdate <= _invoicedate && _invoicedate <= _deadline,
CALCULATE(sum('Invoices'[Invoice Amount]),FILTER('Invoices','Invoices'[ID] = _id &&_sdate<='Invoices'[Invoice Date]&&'Invoices'[Invoice Date]<=_deadline)), 0
)
3. El resultado se muestra a continuación.
Saludos
Sabiduría Wu
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Buenos días y muchas gracias por la ayuda.
He creado la tabla nueva y creado la medida que me indicas, pero tengo algun problema con la fórmula ya que cuando introduzco var_id no me permite poner la tabla y el campo ID diractamente, me obliga a ponerle una función primero como SUM o MIN y al ser un campo sin cálculo no se cual poner...
Lo mismo me pasa al introducir la variable var_invoicedate donde tampoco me permite introducir directamente InvoiceDate si no introduczo una función previamente. ¿Por qué ocurre esto?
Gracias por adelantado.