1. Faro

Nivel 6 · ¿Qué tipo de join necesita el merge?

La solicitud

De Sarah Mitchell, Gerente de CRM

“Quiero enviar una oferta de bienvenida a todos los que crearon una cuenta en las dos últimas semanas de diciembre pero nunca hicieron un solo pedido. Tengo los registros nuevos y sus pedidos en Power Query como dos consultas, ambas con customer_id. ¿Puedes darme solo esas personas, una fila por cada una?”

Tu objetivo

El paso Source son los 52 clientes que se registraron desde el 20 de diciembre de 2025 (customer_id, first_name, last_name, email, signup_date). Orders es otra consulta con sus 26 pedidos. Haz un merge de Orders por customer_id con el tipo de join que conserva solo a los clientes que nunca pidieron: una fila por cliente, con solo las columnas de Customers.

  • Muestra exactamente customer_id first_name last_name email signup_datependiente
  • 33 filaspendiente

Tus pasos de consulta

Power Query
La hoja de este nivel
customer_idfirst_namelast_nameemailsignup_date
11949NoahTaylornoah.taylor@yahoo.com2025-12-20
21950NathanMurphynathan.murphy@gmail.com2025-12-20
31951MichaelMendozammendoza84@outlook.com2025-12-20
41952MiguelRussellmrussell23@gmail.com2025-12-20
51953PatrickBarnespbarnes@parkrowhotels.com2025-12-20
61954GregoryBarnesgregorybarnes1989@outlook.com2025-12-20
71955DavidSullivandavid.sullivan@gmail.com2025-12-21
81956KellyCampbellkelly.campbell@gmail.com2025-12-21
91957ShirleyGomezshirleygomez1977@gmail.com2025-12-21
101958ThomasPricethomas.price@gmail.com2025-12-21
111959PeterMendozapetermendoza2002@gmail.com2025-12-21
121960RonaldSandersronaldsanders1968@yahoo.com2025-12-21
131961MelissaHarrismelissa.harris@icloud.com2025-12-22
141962BrandonMitchellbrandon.mitchell@gmail.com2025-12-22
151963SofiaWardsofia.ward@gmail.com2025-12-22
161964RobertFloresrflores61@yahoo.com2025-12-22
171965ScottJohnsonscott.johnson@comcast.net2025-12-22
181966KarenJameskarenjames1985@yahoo.com2025-12-22
191967JamesSullivanjames.sullivan@gmail.com2025-12-23
201968AndrewCookacook@willowandfern.com2025-12-23
211969DonaldJacksondjackson93@gmail.com2025-12-23
221970JasminePateljasmine.patel@gmail.com2025-12-23
231971StephenMartinsmartin74@outlook.com2025-12-23
241972EdwardBrooksedward.brooks@outlook.com2025-12-23
251973AnthonyMartinamartin67@outlook.com2025-12-23
261974BettyHarrisonbettyharrison1990@gmail.com2025-12-23
271975ShirleyCoxscox27@comcast.net2025-12-23
281976KennethRobertskennethroberts1972@outlook.com2025-12-23
291977NicoleJonesnicolejones1989@outlook.com2025-12-24
301978JerryWhitejerrywhite1972@gmail.com2025-12-24
311979MargaretPhillipsmargaret.phillips@gmail.com2025-12-26
321980JacobPerryjperry26@gmail.com2025-12-26
331981SandraBennettsandra.bennett@icloud.com2025-12-26
341982CarolynHudsonchudson81@gmail.com2025-12-26
351983JeffreyThomasjeffrey.thomas@gmail.com2025-12-26
361984RyanBaileyryanbailey1977@gmail.com2025-12-26
371985DylanHarrisdharris77@icloud.com2025-12-27
381986JosephBrooksjoseph.brooks@gmail.com2025-12-27
391987LuisHillluishill1988@yahoo.com2025-12-28
401988JerryMendozajmendoza@evergreenproperties.com2025-12-28
411989MarkBrennanmbrennan@willowandfern.com2025-12-28
421990DonaldWalkerdonald.walker@icloud.com2025-12-29
431991MargaretWrightmargaret.wright@yahoo.com2025-12-29
441992JoseMartinezjmartinez76@gmail.com2025-12-29
451993LoganHarrisonlharrison15@gmail.com2025-12-30
461994DennisLongdennislong1975@gmail.com2025-12-30
471995DonaldWooddwood55@gmail.com2025-12-30
481996CarlosMartinezcmartinez45@gmail.com2025-12-30
491997EdwardVasquezevasquez74@gmail.com2025-12-31
501998PamelaRichardsonpamela.richardson@aol.com2025-12-31
511999GabrielaSanchezgsanchez37@icloud.com2025-12-31
522000LucasJacksonljackson49@icloud.com2025-12-31

Cargando el editor…

    ResultadoPresiona Comprobar para comparar el resultado de la consulta

    Mote revisa tu resultado

    Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.

    La lección

    Merge Queries es el join de Power Query: hace coincidir las filas de dos consultas por una columna clave, igual que el JOIN de SQL y el XLOOKUP de Excel. El tipo de join decide qué filas sobreviven, y es el ajuste que la gente más a menudo deja en su valor predeterminado sin pensar.

    Dónde está

    En Power BI: Home → Transform data, selecciona la consulta de clientes y luego Home → Merge Queries (añade un paso a esa consulta) o Merge Queries as New (crea una tercera consulta y deja intactas las dos de entrada). En el cuadro de diálogo, elige Orders como segunda tabla, haz clic en customer_id en ambas vistas previas y elige el Join Kind. Abajo, el cuadro te dice cuántas filas coinciden.

    La tabla combinada tiene una columna nueva que contiene una pequeña tabla con las filas coincidentes de Orders; el icono de expandir en su encabezado elige cuáles de esas columnas traer.

    Los seis tipos de join

    Tipo de join Conserva Clientes nuevos + Orders aquí
    Left Outer (predeterminado) todas las filas de la primera tabla, con coincidencias o nulls 59 filas
    Right Outer todas las filas de la segunda tabla, con coincidencias o nulls 26 filas
    Full Outer todas las filas de ambos lados 59 filas
    Inner solo las filas que coinciden en ambos lados 26 filas
    Left Anti filas de la primera tabla sin coincidencia 33 filas
    Right Anti filas de la segunda tabla sin coincidencia 0 filas

    Los conteos de filas son después de expandir order_id: cada cliente con pedidos aparece una vez por pedido, por eso left outer llega a 59 filas desde 52 clientes.

    En el editor de práctica

    Escribe el tipo de join después de la clave; si lo omites, el merge es un left outer join, como en el cuadro de diálogo:

    Merge queries: Orders on customer_id, left anti
    Merge queries: Orders on customer_id, inner, expand order_id, order_date
    Merge queries: Orders on customer_id, full outer, expand order_id

    Un anti join no trae nada del otro lado (toda coincidencia desaparece), así que no necesita expandir. Right outer, full outer y right anti sí: añaden filas de la segunda tabla, y las columnas de la primera tabla son null en esas filas.

    En M, el tipo es el último argumento del paso de join:

    Table.NestedJoin(Source, {"customer_id"}, Orders, {"customer_id"}, "Orders", JoinKind.LeftAnti)

    Elegir uno

    • Left outer: añades columnas a una tabla y todas las filas deben quedarse, como al buscar la categoría de cada línea de pedido. El predeterminado, y la elección correcta la mayoría de las veces.
    • Inner: solo quieres las filas que existen en ambas, por ejemplo líneas de pedido cuyo producto está en una lista de promoción.
    • Left anti: «¿cuáles de estos no tienen pareja?», la pregunta de Sarah.
    • Right anti: la misma pregunta desde el otro lado. Aquí, pedidos cuyo cliente falta en la lista: ninguno, lo que es una buena comprobación de que los datos están completos.
    • Full outer: conciliar dos listas, como nuestros pedidos contra el archivo de liquidación de un marketplace, donde pueden faltar filas en cualquiera de los dos lados.

    Lee el conteo de coincidencias

    El cuadro de Merge dice algo como «The selection matches 19 of 52 rows from the first table». Léelo siempre. Si esperabas que todo coincidiera y no es así, mira las claves: tipos distintos (texto 0127 frente al número 127), espacios sueltos o mayúsculas diferentes. Use fuzzy matching en el mismo cuadro puede emparejar texto casi idéntico, pero revisa qué emparejó antes de confiar en ello.

    La lista de Sarah

    Left anti da 33 clientes. En toda la tabla de clientes el mismo merge encuentra 247, y dieciocho de ellos son segundas cuentas (ids 2001 a 2018) de personas que ya están en Customers con un id anterior, con el mismo correo salvo por mayúsculas o un espacio suelto. La consulta de este nivel las deja fuera; en la tabla completa, elimínalas antes de enviar, porque esas personas bien pueden haber pedido con su primera cuenta.

    Errores comunes

    • Dejar Left Outer en una pregunta de «quién no». Funciona, con un filtro extra por null, y muchas más filas.
    • Inner en lugar de anti. Inner conserva a las personas que sí pidieron: la lista opuesta.
    • Expandir todas las columnas. Trae solo las columnas que el informe necesita.
    • Ignorar el conteo de coincidencias. Un merge que no coincidió con nada se ejecuta igual sin error.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.