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

Compare dos fechas de la tabla separada que no están conectadas directamente

Hola chicos,

Tengo problemas al tratar de crear una medida que compare dos fechas de tablas de hechos que no están (obviamente) conectadas. Explicaré mi esquema.

Primero tengo una tabla de facturas que se ve así:

invoice_idcreation_datedue_dateImporteNúmero de pagos previstosamount_payment1amount_payment2amount_payment3
101/04/202401/05/202420 €21010nulo
202/04/202402/05/202430 €130nulonulo
303/04/202403/05/202425 €310105
404/04/202404/05/202435 €135nulonulo

Luego tengo una tabla de pagos que se llena automáticamente con la lista de pagos esperados.

payment_idinvoice_idpayment_dateAmount_paid
1130/04/202410 €
2110/05/202410 €
3230/04/202430 €
4330/04/202410 €
5310/05/202410 €
63nulo5 €
74nulo35 €

Si no tengo que recibir los pagos, la fecha de pago es nula. Luego, esa columna se actualiza cuando recibo el pago de manera efectiva.

Ahora mi objetivo es contar el número de pagos que se reciben antes de la fecha de vencimiento de cada factura. Tenga en cuenta que la fecha de vencimiento es la fecha máxima en la que debemos recibir todos los pagos de una factura.

Ambas tablas no están vinculadas directamente entre sí, sino que están vinculadas a través de una tabla de dimensiones que contiene el invoice_id, el due_date, la cantidad, etc.

Y también ambas fechas (due_date y payment_date) están conectadas a una tabla de calendario (relaciones inactivas)

Una de las soluciones sería poner el due_date en la tabla de pagos de cada línea. Creo que hará que todo sea más fácil.

Pero, ¿es una buena práctica tener una columna de una tabla de dimensiones que esté presente en una tabla de varios hechos?

Gracias de antemano por su ayuda.

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Lo intentaré. Gracias

Aquí tienes un código de ejemplo por si lo necesitas...

let
    invoiceSource =
    Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Vc3dCcAgDEbRVUqeBfM7TXCZztOpOoka1LQPylU4fO5AUEArVUbWkZbJeL33M2Mcwn1BKx5fWjnVSdmK4jHBMhJG0pxkW0Z+SxZMg2myk2LfKdtTrQM=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [invoice_id = _t, creation_date = _t, due_date = _t, Amount = _t, #"Number of payments expected" = _t, amount_payment1 = _t, amount_payment2 = _t, amount_payment3 = _t]),
    invoiceTypeChange = 
    Table.TransformColumnTypes(invoiceSource,{{"invoice_id", Int64.Type}, {"creation_date", type date}, {"due_date", type date}, {"Amount", type text}, {"Number of payments expected", Int64.Type}, {"amount_payment1", Int64.Type}, {"amount_payment2", Int64.Type}, {"amount_payment3", Int64.Type}}),     
    paymentSource = 
    Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAWMTfWMDfSMDIxMQ30DhUdMapVidaCUjqLSpviE2aWMg1whNtzFCGszFbbgpVBqH4WZQaZAKuKA5yDiIoDFUNBYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [payment_id = _t, invoice_id = _t, payment_date = _t, Amount_paid = _t]),
    paymentTypeChange = 
    Table.TransformColumnTypes(paymentSource,{{"payment_id", Int64.Type}, {"invoice_id", Int64.Type}, {"payment_date", type date}, {"Amount_paid", type text}}),
    mergeQueries = 
    Table.NestedJoin(paymentTypeChange, {"invoice_id"}, invoiceTypeChange, {"invoice_id"}, "invoiceTable", JoinKind.LeftOuter),
    expandDueDate = 
    Table.ExpandTableColumn(mergeQueries, "invoiceTable", {"due_date"}, {"due_date"}),
    addColumn = 
    Table.AddColumn(expandDueDate, "Payment Before Due", each try if [payment_date] < [due_date] then 1 else 0 otherwise 0, Int64.Type)
in
    addColumn
Syndicate_Admin
Administrator
Administrator

Mi enfoque para esto sería combinar la fecha de vencimiento en la tabla de pagos de Power Query y, a continuación, crear una columna personalizada que compruebe si la fecha de pago es menor que la fecha de vencimiento. Si los resultados de esa columna fueran 1 para menor que y 0 para no, la medida resultante sería la suma de esa columna. Si usara "sí" para menor que y "no" para no, la medida resultante sería un recuento condicional.

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.