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

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
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.