Vamos a ver la función Table.RemoveMatchingRows, esta función nos devuelve las filas no coincidentes entre dos tablas.
Esta función tiene un primer argumento que es tabla, la tabla a comparar tiene un segundo argumento que es filas, que es una lista de valores con los que comparar, por último, tiene un argumento opcional, que es equationcriteria, donde podemos controlar las comparaciones.
Esta función nos va a devolver una tabla.
Sintaxis
Table.RemoveMatchingRows(table as table, rows as list, optional equationCriteria as any) as table
Veamos un ejemplo sencillo, vamos a la pestaña datos, dentro de obtener y transformar, desplegamos obtener datos, desplegamos de otras fuentes, y, seleccionamos consulta en blanco.
Vamos a la pestaña de inicio, dentro del grupo consulta, hacemos clic en editor avanzado.
También, podemos hacer clic con botón alternativo de ratón sobre la consulta, y, seleccionamos editor avanzado.
Podemos, también, ir a la pestaña vista, dentro del grupo uso avanzado, hacemos clic en editor avanzado.
Una vez dentro del editor, borramos las comillas dobles.
Vamos a usar la función Table.FromRecords, esta función, nos permite añadir registros, la ponemos debajo de la palabra Origen.
let
Origen =
Table.FromRecords(
Abrimos unas llaves.
let
Origen =
Table.FromRecords({
Pulsamos enter, abrimos unos corchetes, vamos a añadir tres registros de dos columnas, una primera columna llamada nombre, y, otra columna llamada edad, cada registro debe de ir entre corchetes.
Cerramos las llaves, y, el paréntesis.
let
Origen =
Table.RemoveMatchingRows(
Table.FromRecords({
[Nombre = "Jaime", Edad = 20],
[Nombre = "Claudia", Edad = 23],
[Nombre = "Miguel", Edad = 50]
})
Hacemos clic en listo, y, vemos que tenemos una tabla con tres registros.
Ahora, lo que queremos es que nos devuelva esta misma tabla, pero si hay una fila cuyo nombre sea Claudia, no debe de aparecer, para ello, encima de a función Table.FromRecords, ponemos la función Table.RemoveMatchingRows, y, abrimos un paréntesis.
let
Origen =
Table.RemoveMatchingRows(
Table.FromRecords(
Después, del cierre de paréntesis de la función Table.FromRecords, ponemos coma.
Abrimos unas llaves, entre corchetes, ponemos el nombre de la columna a comparar, y, el valor, en este caso, Nombre=Claudia.
Cerramos las llaves, y, ponemos coma.
let
Origen =
Table.RemoveMatchingRows(
Table.FromRecords({
[Nombre = "Jaime", Edad = 20],
[Nombre = "Claudia", Edad = 23],
[Nombre = "Miguel", Edad = 50]
}),
{[Nombre = "Claudia"]},
Ahora, entre comillas dobles, ponemos Nombre, que es el campo para recuperar, y, cerramos paréntesis.
let
Origen =
Table.RemoveMatchingRows(
Table.FromRecords({
[Nombre = "Jaime", Edad = 20],
[Nombre = "Claudia", Edad = 23],
[Nombre = "Miguel", Edad = 50]
}),
{[Nombre = "Claudia"]},
"Nombre"
)
Hacemos clic en listo, y, vemos que aparecen todos los registros, excepto, Claudia.
Bien, ahora, tenemos dos tablas una con productos del año 2020, y, otra con productos del año 2021.
Queremos comparar la lista de productos del año 2020 con la lista de productos del año 2021, nos llevamos ambos modelos a Power Query.
Hacemos clic con botón alternativo de ratón, desplegamos nueva consulta, desplegamos otros orígenes, y, seleccionamos consulta en blanco.
Agregamos un nuevo paso.
Hay que decir que ambas consultas, año_2020, y, año_2021, deben de tener los mismos encabezados.
Vamos a comparar la tabla año_2021 con la tabla año_2020.
Ponemos el signo igual, la función, y, abrimos un paréntesis.
=Table.RemoveMatchingRows(
Ponemos la segunda tabla, que es el argumento tabla.
Coma, debemos de pasar la tabla año_2020 como una lista de valores, tenemos que trabajar con cada registro, por lo que vamos a usar la función Table.ToRecords, que convierte una tabla en registros, el único argumento que tiene es tabla, es decir, la tabla con la que vamos a trabajar, y, devuelve una lista.
Ponemos la función Table.ToRecords, abrimos un paréntesis, y, ponemos la tabla año_2020, cerramos paréntesis, y, aceptamos.
= Table.RemoveMatchingRows(Año_2021, Table.ToRecords(Año_2020))
Tenemos una tabla con los productos de la tabla año_2021 que no aparecen en la tabla año_2020.
Ahora, tenemos dos modelos, el modelo 1, datos1, son ventas de productos en diferentes centros comerciales, y, provincias, y, el modelo 2, datos 2, es el mismo, pero en la columna provincia, no todas son iguales.
Pero, en este caso, queremos indicar porque columnas queremos encontrar las filas no coincidentes, vamos a hacerlo primero para que muestre todas las filas no coincidentes.
= Table.RemoveMatchingRows(Datos2, Table.ToRecords(Datos1))
Nos devuelve una tabla con las filas no coincidentes en la datos2 respecto a datos1.
Pero, quiero comparar provincia, y, producto, y, que me devuelva las filas no coincidentes, hemos visto, que la función Table.RemoveMatchingRows, tiene un último argumento opcional, que es equationCriteria, donde podemos indicar porque columnas queremos realizar la comparación, pues, después del primer argumento, ponemos coma.
Abrimos unas llaves, y, entre comillas dobles, ponemos Provincia, coma, y, de nuevo entre comillas dobles, ponemos Centro.
= Table.RemoveMatchingRows(Datos2, Table.ToRecords(Datos1), {"Provincia", "Centro"})
Aceptamos.
Y, vemos como fila o filas no coincidentes, hay solo una, es decir, Sevilla, y, Carrefour, solo se encuentra en datos2.
Comments