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
Anonymous
Not applicable

Filtrar combinar paso por otra columna

¿Cómo puede filtrar una columna de un campo "Combinado" por otro campo de la consulta? Por ejemplo, filtre cada "SECOND"[DATES_SECOND] > [DATE_FIRST].

AlejandroG_0-1600685923202.png

DATE_FIRST de identificación

120/08/2020
220/09/2020
312/09/2020

DATES_SECOND de identificación

119/08/2020
120/08/2020
121/08/2020
219/09/2020
220/09/2020
221/09/2020
311/09/2020
312/09/2020
313/09/2020
2 ACCEPTED SOLUTIONS

Hola @AlejandroG ,

por razones de rendimiento, recomendaría encarecidamente expandir, luego filtrar y volver a agrupar si es necesario.

Vea esta entrada de blog para más detalles: https://www.thebiccountant.com/2019/10/28/performance-tip-for-aggregations-after-joins-in-power-quer...

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

View solution in original post

Hola @AlejandroG ,

ha habido un error de sintaxis en mi última respuesta. Esto funciona:

Table.SelectRows([SECOND], (row) => [DATE_FIRST] > row[DATES_SECOND] )

Pero también una variación en su enfoque de función también funcionaría:

let
    Sort = Table.Sort([SECOND],{{"DATES_SECOND", Order.Descending}}),
    Add = Table.AddColumn(Sort, "Custom", (row) => [DATE_FIRST] > row[DATES_SECOND] )
in
    Add

Consulte el archivo adjunto.

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

View solution in original post

11 REPLIES 11
v-eqin-msft
Community Support
Community Support

Hola @AlejandroG ,

Puede seguir estos pasos:

1.Haga clic en el botón Expandir , seleccione DATES_SECOND (podría denominarlo)

2.Agregar una columna condicional

3.Eliminar cuando el valor de null

4.Elimine la columna Personalizado creada en el paso 2.

let
    Source = Table.NestedJoin(FirstTable, {"ID"}, SecondTable, {"ID"}, "SecondTable", JoinKind.LeftOuter),
    #"Expanded SecondTable" = Table.ExpandTableColumn(Source, "SecondTable", {"DATES_SECOND"}, {"SecondTable.DATES_SECOND"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded SecondTable",{{"SecondTable.DATES_SECOND", "DATES_SECOND"}}),
    #"Added Conditional Column" = Table.AddColumn(#"Renamed Columns", "Custom", each if [DATE_FIRST] < [DATES_SECOND] then [ID] else null),
    #"Filtered Rows" = Table.SelectRows(#"Added Conditional Column", each [Custom] <> null and [Custom] <> ""),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom"})
in
#"Removed Columns"

9.22.2.1.png

Mi mesa final se ve así:

9.22.2.2.png

¿He respondido a tu pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no es así, cargue algunas muestras de datos insensibles y la salida esperada.

Saludos
Eyelyn Qin

Anonymous
Not applicable

Hola @Eyelyn9 ,

gracias por la respuesta. Sí, lo sé, eso es lo que @ImkeF sugirió en su primera respuesta,pero me gustaría aprender a operar dentro de la columna de fusión en caso de que necesite hacer algo más complejo.

Hola @AlejandroG ,

Cuando tiene una o más columnas que desea agregar a otra consulta, combina las consultas.

Usted podría echar un vistazo a estos documentos para obtener más información .

https://radacad.com/append-vs-merge-in-power-bi-and-power-query

https://www.powerbi-pro.com/en/power-bi-seven-types-of-table-joins/

Saludos

Eyelyn Qin

Hola @AlejandroG ,

ha habido un error de sintaxis en mi última respuesta. Esto funciona:

Table.SelectRows([SECOND], (row) => [DATE_FIRST] > row[DATES_SECOND] )

Pero también una variación en su enfoque de función también funcionaría:

let
    Sort = Table.Sort([SECOND],{{"DATES_SECOND", Order.Descending}}),
    Add = Table.AddColumn(Sort, "Custom", (row) => [DATE_FIRST] > row[DATES_SECOND] )
in
    Add

Consulte el archivo adjunto.

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

amitchandak
Super User
Super User

@AlejandroG , creo que usted tiene que fusionar primero usando expandir. Cree una columna calculada y elimine las filas en función de esa

refere al tema antiguo:https://community.powerbi.com/t5/Desktop/M-Power-Query-Removing-entire-rows-based-on-condition/td-p/...

Hola @AlejandroG ,

por razones de rendimiento, recomendaría encarecidamente expandir, luego filtrar y volver a agrupar si es necesario.

Vea esta entrada de blog para más detalles: https://www.thebiccountant.com/2019/10/28/performance-tip-for-aggregations-after-joins-in-power-quer...

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

Anonymous
Not applicable

Hola @ImkeF , @amitchandak

Gracias por su respuesta. Tal vez no me estoy explicando correctamente, no creo que las agregaciones tienen nada que ver aquí?

Desafortunadamente, expandir, filtrar y la agrupación de nuevo sería un dolor, ya que hay un montón de columnas, pero voy a tratar de que y ver cómo va gracias. Lo que estoy luchando es cómo operar entre los valores de un colum después de una fusión, donde cada celda es de hecho una tabla, y el resto de la primera tabla. Tal vez quiero agregar una columna personalizada basada en los valores de "DATE_FIRST":

AlejandroG_0-1600751832825.png

Tal vez quiera filtrar DATES_SECOND por el valor de DATE_FIRST como dije antes.

He estado tratando de hacer esto con una función como:

(MyTable) =>

let
Sort = Table.Sort(MyTable,{{"DATES_SECOND", Order.Descending}}),
Add = Table.AddColumn(Sort, "Custom", each if "DATES_SECOND" > "DATE_FIRST" then 1 else 0),
Keep = Table.SelectRows(Add, each ([Custom] = 1))
in
Keep

Pero el resultado está vacío, creo que no puede "encontrar" DATE_FIRST.

AlejandroG_1-1600752854556.png

Hola @AlejandroG ,

era sólo un pensamiento que la expansión sería más rápida, ya que las operaciones son bastante similares.

Si desea utilizar una función, debe declarar al menos algunas de sus variables explitely y ahora utilizar el azúcar de sintaxis "cada uno" dos veces. Porque eso lo hace ambiguo:

Table.SelectColumns([SECOND], "Custom", (row) => if row([DATE_FIRST]) > [DATES_SECOND] )

por lo que aquí la "fila" es una variable de función explícita que le permite direccionar específicamente cada fila de la tabla combinada.

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

Anonymous
Not applicable

Hola @ImkeF ,

He hecho varios intentos con la sintaxis (fila) pero aún no he llegado allí:

AlejandroG_5-1600759301165.png

AlejandroG_6-1600759321364.png

AlejandroG_1-1600758878638.png

AlejandroG_2-1600758965589.png

AlejandroG_3-1600759007391.png

AlejandroG_4-1600759055894.png

Lo siento @AlejandroG ,

el "si" no debería estar allí. La expresión tiene que devolver un valor booleano que determina si la fila iterada actualmente se mantendrá o no. Así que esto debería ponerte en marcha.

De lo contrario, pase el enlace al archivo con datos de muestra.

Table.SelectColumns([SECOND], "Custom", (row) => row([DATE_FIRST]) > [DATES_SECOND] )

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

Anonymous
Not applicable

Gracias por la ayuda @ImkeF,

aquí está el ejemplo .pbix que estoy usando: https://1drv.ms/u/s!AiWqeJuU1-S3akALKVh42fxmfkk?e=nirahP

El uso de Table.SelectRows sigue dándome el Expression.Error "no se puede convertir Record to Function".

Uso de esta función:

(MyTable) =>
let
    Sort = Table.Sort(MyTable,{{"DATES_SECOND", Order.Descending}}),
    Add = Table.AddColumn(Sort, "Custom", (row) => row([DATE_FIRST]) > [DATES_SECOND] )
in
    Add

También da el Expression.Error "no se puede convertir Registro a función":

AlejandroG_0-1600767001530.png

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.