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
logrt
Frequent Visitor

Power Query selecciona filas entre dos fechas

¿Puedes ayudarme, por favor, tengo dos mesas una se ve así

Fecha de Eqmt
A 15/08/20
B 03/09/20
C 05/08/20

Y otra que parece:

Eqmt Dev IniDate EndDate

A 1 01/jul/20 01/aug/20

A 3 01/aug/20 01/sep/20

B 4 01/jul/20 01/aug/20

B 5 01/aug/20 01/sep/20

B 2 01/sep/20 01/oct/20

C 4 01/jul/20 01/aug/20

C 3 01/aug/20 01/sep/20

Quiero capturar el valor de desarrollo que está entre IniDate y EndDate, algo como esto:

Eqmt Date Dev
A 15/08/20 3
B 03/09/20 2
C 05/08/20 3

¿Puede darme alguna respuesta, sin usar funciones DAX si es posible? Gracias por tu respuesta

1 ACCEPTED SOLUTION
HotChilli
Super User
Super User

Creo que esto lo hace. Por favor, prueba.

Agregue una columna en la primera tabla (cambie el nombre de la segunda tabla por TableB

List.First(
            Table.SelectRows(
                TableB,
                (r) =>
                    r[IniDate] < [Date]
                    and
                    r[EndDate] > [Date]
                    and
                    r[Eqmt] = [Eqmt] 
            )[Dev]
        )

View solution in original post

6 REPLIES 6
Watsky
Solution Sage
Solution Sage

Hola @logrt . Suponiendo que seas la tabla más pequeña se llama Table1 y el más grande se llama Table2 lo que hice fue:

1. Tabla 2 combinada en la Tabla 1 solo tiene dev,IniDate y EndDate agregados.

2. Se ha añadido una columna personalizada utilizando la siguiente instrucción if:

if [Date] < [EndDate] and [Date] > [IniDate] then true else false

3. Filtrado para mostrar sólo verdadero

4. Se han eliminado las columnas IniDate, EndDate y Custom dejando solo la fecha, Eqmt y Dev.

No es el más elegante, pero se realiza el trabajo en Power Query. Así es como se ve la M para él. Concedido que no querrías usar mi fuente que querrías usar la tuya.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WstA3NNU3MjAyUNJRclSK1YlWstQ3hgk4gQUs9OEqnJViYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Eqmt = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Eqmt"}, Table2, {"Eqmt"}, "Table2", JoinKind.LeftOuter),
    #"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Dev", "IniDate", "EndDate"}, {"Dev", "IniDate", "EndDate"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Table2", "Custom", each if [Date] < [EndDate] and [Date] > [IniDate] then true else false),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = true)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "IniDate", "EndDate"})
in
    #"Removed Columns"

image.png


¿Mi(s) respuesta(s) le ayudó? Dale un kudos haciendo clic en Thumbs Up! ?
¿Mi publicación respondió a tu(s) pregunta(s)? Marca mi puesto como solución. Esto ayudará a otros a encontrar la solución.


Did my answer(s) help you? Give it a kudos by clicking the Thumbs Up!
Did my post answer your question(s)? Mark my post as a solution. This will help others find the solution.

Proud to be a Super User!

HotChilli
Super User
Super User

Creo que esto lo hace. Por favor, prueba.

Agregue una columna en la primera tabla (cambie el nombre de la segunda tabla por TableB

List.First(
            Table.SelectRows(
                TableB,
                (r) =>
                    r[IniDate] < [Date]
                    and
                    r[EndDate] > [Date]
                    and
                    r[Eqmt] = [Eqmt] 
            )[Dev]
        )

Si eliminamos la parte list.first, entonces también creo que esto funcionaría bien. ¿Alguien ha probado esto? Si TableB tiene muchas columnas que coinciden con las condiciones proporcionadas, entonces podemos usar el bucle sin la lista.part fuunction.

Tengo una pregunta similar a esta. Si puede proporcionar algunas soluciones, ¡sería genial!

Me gustaría crear un selector de fecha. Tengo dos columnas, 1) start_date, 2) end_date, lo que necesito es hacer clic en el selector de fecha (elegir una fecha en particular) y si la fecha se encuentra entre el start_date y end_date, necesito la información de las filas para mostrar en una tabla. ¿Puedo usar la consulta similar para hacer esto? ¿O un parámetro de qué pasaría si funcionará? ¿O el bucle como mencionaste funcionará? Pero no estoy seguro de cómo usar el bucle....

¡Muchas gracias!

Esta es una pregunta de configuración de datos en Power Query.

Creo que quieres una cortadora de fechas usando la opción 'entre'. Entonces, diferentes requisitos.

Probablemente sea mejor plantear siempre una nueva publicación para cualquier problema: publicar en un hilo resuelto no obtendrá muchas vistas. De todos modos, pruebe la rebanadora y vea cómo se lleva.

Hola, gracias. la cortadora no es la solución. Pero publicaré una nueva publicación para discutir esta pregunta. ¡Muchas gracias por responder!

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.