martes, 7 de abril de 2020

Power Query: Coincidencias-Diferencias entre listas

Veremos hoy algunas formas, empleando Power Query, de detectar elementos coincidentes entre dos listas, así como elementos diferentes entre nuestras listas.

Power Query: Coincidencias-Diferencias entre 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)

Power Query: Coincidencias-Diferencias entre listas


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)

Power Query: Coincidencias-Diferencias entre listas


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)

Power Query: Coincidencias-Diferencias entre listas


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)

Power Query: Coincidencias-Diferencias entre listas



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.