lunes, noviembre 02, 2015

Comparar listas con Power Query

Para el analista de datos, comparar listas en Excel es una tarea frecuente. Las distintas técnicas de comparar listas en Excel que hemos visto a lo largo de la historia de este blog van desde el uso de formato condicional, pasando por la función COINCIDIR, la herramienta Datos-Consolidar hasta el uso de Access y por  supuesto usando Vba (macros).

En este post vamos a mostrar cómo usar Power Query (Excel 2010 o posterior) para la tarea. La gran ventaja de usar Power Query es que obtenemos los resultados de la comparación en una nueva lista en forma inmediata.

Supongamos que tenemos dos listas de países con sus respectivos PBI. La primer lista proviene del CIA World Factbook; la segunda de las Naciones Unidas.

Para obtener estas listas hemos usado también el Power Query (Data Catalog Search). Podemos por supuesto usar todo tipo de lista en una hoja de Excel a condición que los hayamos definido previamente como Tabla.


Una vez cargadas las listas en hojas de Excel (también podemos crear la conexión sin necesidad de cargar la lista en una hoja), podemos ver en el panel de edición del Query que las listas no tienen la misma cantidad de países


Ahora queremos saber qué países en la lista de la CIA no aparecen en la lista de las Naciones Unidas y viceversa.

Para realizar la comparación vamos a usar la herramienta Merge del Power Query.



Seleccionamos la primer lista (CIA World Factbook) y con un clic marcamos el campo en común con la segunda tabla (Country/Region); hacemos lo mismo con la segunda tabla y en la ventanilla de tipo de unión (Join Kind) elegimos "Left Anti". Por Left (izquierda) señalamos la primer tabla; de la misma manera Right (derecha) indica la segunda tabla.
Apretamos OK y obtenemos es resultado en la ventana del Query


Podemos ver que la consulta resulta en 16 países o regiones en la lista de la CIA que no aparecen en la de las Naciones Unidas. Podemos eliminar la columna "New Column" y cambiar el nombre de la consulta a algo más significativo. Apretamos Close&Load para poner la consulta en una hoja del cuaderno.
Para obtener la lista de países que aparecen en las Naciones Unidas y no en la CIA, usamos el mismo proceso cambiando el orden de las tablas en la consulta y usando el tipo de unión Left Anti

Esta consulta resulta en 9 países/regiones en la lista de las Naciones Unidas que no aparecen el la lista de la CIA

Como en el caso anterior podemos eliminar la columna "NewColumn" y pasar la consulta a una hoja del cuaderno.

Ahora tenemos una hoja con 16 países/regiones que aparecen en la lista de CIA y no en la de las Naciones Unidas y otra de 9 países/regiones que aparecen en las Naciones Unidas y no en la CIA. Esto explica la diferencia de 7 países/regiones (16-7; 218 - 211) que vimos al comparar las listas


6 comentarios:

  1. Excelente articulo.
    Es de agradecer todos los artículos sobre power query, herramienta tan util como desconocida.
    Muchas gracias

    ResponderBorrar
  2. Gran aporte y eficaz forma de comparar tablas

    ResponderBorrar
  3. Hola buenos días Maestro Jorge Dulkeman.. tengo una consulta para Ud. Es la primera vez que escribo y no sé por donde es que puedo hacercela llegar. Gracias por la aclaración.

    ResponderBorrar
  4. Fijate en el enlace Ayuda, en la parte superior del blog.

    ResponderBorrar
  5. Buenos días,
    Muy buen aporte (como siempre), tengo undas dudas:
    1. ¿las tablas (datos) hay que obtenrela de datos externos (archivo excel, internet,..) ya que por ejemplo, si en un libro de excel pego directamente uan tabla..luego esa tabla no me la reconoce en el panel "Consultas de Libro" (Workbook Queries)
    2. Yo lo probé con datos de paises (2 tablas cogidas de fuentes distintas) pero le vi un problema: en una tabla por ejemplo ponía Czech y en otra ponía Czech Republic, con lo que te saltaba en que aparecía en una y en la otra tabla no, lógicamente excel lo hace bien pero en ese sentido no sería eficiente el método en estos casos.
    3. Me sorprendió (soy muy principiante en Power Query), que al obtener una tabla de una fuente externa (en mi caso de Internet), yo borré alguna columna...pero luego al ejecutar Merge, volvían a aparecerme las columnas eliminadas..¿Power Query vuelven a obtener los datos de internet y no de las tablas que tenemos en las hojas?

    Un Saludo Jorge

    ResponderBorrar
  6. Hola, vamos por partes:
    1 - Power Query trabaja con casi toda fuente de datos, externas o "intgernas", si por esto entendemos tablas que residen en el cuaderno de Excel donde estamos usando PQ. Para que PQ pueda crear una conexión la tabla tiene que estar definido como Tabla (Insertar-Tabla), cosa que PQ hace automáticamente cuando usas la opción "desde tabla de datos". Con el solo hecho de pegar o introducir manualmente una tabla no es suficiente. Hay que crear una conexión, es decir, informrle a Excel que queremos usar los datos en la ventana del PQ.
    2 - No existe ninguna herramienta que compare dos textos distintos y llegue a la conclusión que son iguales. Ese es el motivo que en manejo de datos se prefiere usar índices, así como los países usan números de identidad para identificar a las personas y no sus nombres.
    3 - Cuando creas una conexión PQ guarda todos los datos de la fuente más los cambios que hayas hecho en el editor del PQ. Cuando cargas la conexión a una hoja de Excel, los cambios que hayas hecho en la hoja yq ue no fueron hechos en el editor de PQ, son eliminados. Ai quieres mantener los cambios tienes que eliminar la conexión lo que dejará sólo la tabla en la hoja. Por supuesto que una vez eliminada la conexión esta no puede ser recuperada.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.