Veremos hoy algunas formas, empleando Power Query, de detectar elementos coincidentes entre dos listas, así como elementos diferentes entre nuestras listas.
En primer lugar partiremos de nuestras dos listas de países (TblUNO y TblDOS) en los rangos B2:B10 y D2:D9 de la imagen anterior.
Cargaremos ambas tablas al Editor de Power Query en modo Solo conexión...
En primer lugar para detectar los elementos coincidentes, al mismo tiempo, en ambas tablas, nos iremos a la consulta de la TblUNO y la combinaremos con la consulta de la TblDOS empleando un tipo de combinación: Interna (todas las filas coincidentes)
Este tipo de 'join' entre consultas devuelve únicamente elementos que existan en ambas tablas... justo lo que buscamos.
Otra información relevante sería determinar qué elementos de la TblUNO no están en TblDOS.
Para ello combinaremos de forma similar ambas tablas, pero eligiendo el tipo de combinación: Anti izquierda (solo filas de la primera)
Lo que nos proporciona este tipo de join entre tablas son aquellos elementos de la primera lista sin coincidencia en la segunda.
Una tercera opción sería la inversa a la anterior, esto es, elementos de la segunda tabla que no encuentren coincidencia en la primera.
El asunto es simple, montamos una combinación entre ambas con un tipo: Anti derecha (solo filas de la segunda)
Con este último tipo de join entre tablas conseguimos extraer los elementos de la segunda tabla que no tengan coincidencia en la primera.
Estas tres maneras de realizar combinaciones nos reportan una información relevante a la hora de comparar listados, y sin duda, al usar el asistente de combinación, son de un uso muy simple.
Una segunda forma alternativa de trabajar y obtener los mismos resultados es emplear funciones M, en concreto:
List.Intersect
List.Difference
Para ello duplicaremos (para no interferir con el trabajo previo) nuestras consultas de las TblUNO y TblDOS, y a cada una de ellas les aplicaremos desde el editor de PowerQuery la acción de Convertir en lista (ficha Transformar > grupo Cualquier columna > botón Convertir en lista)
No olvides 'convertir en lista' la segunda de las consultas!
En mi caso, he renombrado mis nuevas consultas (mis dos nuevas listas) como TblUNO_M2 y TblDOS_M2.
El siguiente paso para obtener nuestros tres listados consiste en ir añadiendo 'Consultas en blanco' (desde el Editor iremos a la ficha Inicio > grupo Nueva consulta > desplegable Nuevo origen > Otros orígenes > Consulta en blanco).
Para obtener los elementos existentes en ambos listados escribiremos en la barra de fórmula de la nueva consulta en blanco:
= List.Intersect({TblUNO_M2,TblDOS_M2})
fijémosnos en que ambos listados están entre llaves!!.
También podríamos haber abierto el Editor avanzado y haber escrito:
Para encontrar los elementos de la primera lista que no se encuentren en la segunda generaremos una nueva Consulta en blanco, y en la barra de fórmula escribiremos:
= List.Difference(TblUNO_M2,TblDOS_M2)
donde es importante qué lista escribimos en primer lugar... en este caso, al indicar primero 'TblUNO_M2' implícitamente decimos que extraeremos los elementos de la primera lista diferentes de la segunda...
Como consecuencia de lo anterior, para recuperar los elementos de la segunda lista que no se encuentren en la primera generaremos una nueva Consulta en blanco, y en la barra de fórmula escribiremos:
= List.Difference(TblDOS_M2,TblUNO_M2)
Consiguiendo así los mismos resultados que con el asistente de combinación, tal como veíamos en la primera imagen.
En primer lugar partiremos de nuestras dos listas de países (TblUNO y TblDOS) en los rangos B2:B10 y D2:D9 de la imagen anterior.
Cargaremos ambas tablas al Editor de Power Query en modo Solo conexión...
En primer lugar para detectar los elementos coincidentes, al mismo tiempo, en ambas tablas, nos iremos a la consulta de la TblUNO y la combinaremos con la consulta de la TblDOS empleando un tipo de combinación: Interna (todas las filas coincidentes)
Este tipo de 'join' entre consultas devuelve únicamente elementos que existan en ambas tablas... justo lo que buscamos.
Otra información relevante sería determinar qué elementos de la TblUNO no están en TblDOS.
Para ello combinaremos de forma similar ambas tablas, pero eligiendo el tipo de combinación: Anti izquierda (solo filas de la primera)
Lo que nos proporciona este tipo de join entre tablas son aquellos elementos de la primera lista sin coincidencia en la segunda.
Una tercera opción sería la inversa a la anterior, esto es, elementos de la segunda tabla que no encuentren coincidencia en la primera.
El asunto es simple, montamos una combinación entre ambas con un tipo: Anti derecha (solo filas de la segunda)
Con este último tipo de join entre tablas conseguimos extraer los elementos de la segunda tabla que no tengan coincidencia en la primera.
Estas tres maneras de realizar combinaciones nos reportan una información relevante a la hora de comparar listados, y sin duda, al usar el asistente de combinación, son de un uso muy simple.
Una segunda forma alternativa de trabajar y obtener los mismos resultados es emplear funciones M, en concreto:
List.Intersect
List.Difference
Para ello duplicaremos (para no interferir con el trabajo previo) nuestras consultas de las TblUNO y TblDOS, y a cada una de ellas les aplicaremos desde el editor de PowerQuery la acción de Convertir en lista (ficha Transformar > grupo Cualquier columna > botón Convertir en lista)
No olvides 'convertir en lista' la segunda de las consultas!
En mi caso, he renombrado mis nuevas consultas (mis dos nuevas listas) como TblUNO_M2 y TblDOS_M2.
El siguiente paso para obtener nuestros tres listados consiste en ir añadiendo 'Consultas en blanco' (desde el Editor iremos a la ficha Inicio > grupo Nueva consulta > desplegable Nuevo origen > Otros orígenes > Consulta en blanco).
Para obtener los elementos existentes en ambos listados escribiremos en la barra de fórmula de la nueva consulta en blanco:
= List.Intersect({TblUNO_M2,TblDOS_M2})
fijémosnos en que ambos listados están entre llaves!!.
También podríamos haber abierto el Editor avanzado y haber escrito:
let Origen = List.Intersect({TblUNO_M2,TblDOS_M2}) in Origen
Para encontrar los elementos de la primera lista que no se encuentren en la segunda generaremos una nueva Consulta en blanco, y en la barra de fórmula escribiremos:
= List.Difference(TblUNO_M2,TblDOS_M2)
donde es importante qué lista escribimos en primer lugar... en este caso, al indicar primero 'TblUNO_M2' implícitamente decimos que extraeremos los elementos de la primera lista diferentes de la segunda...
Como consecuencia de lo anterior, para recuperar los elementos de la segunda lista que no se encuentren en la primera generaremos una nueva Consulta en blanco, y en la barra de fórmula escribiremos:
= List.Difference(TblDOS_M2,TblUNO_M2)
Consiguiendo así los mismos resultados que con el asistente de combinación, tal como veíamos en la primera imagen.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.