La solicitud

De Sarah Mitchell, Gerente de CRM
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_idfirst_namelast_nameemailsignup_datependiente - 33 filaspendiente
Tus pasos de consulta
| customer_id | first_name | last_name | signup_date | ||
|---|---|---|---|---|---|
| 1 | 1949 | Noah | Taylor | noah.taylor@yahoo.com | 2025-12-20 |
| 2 | 1950 | Nathan | Murphy | nathan.murphy@gmail.com | 2025-12-20 |
| 3 | 1951 | Michael | Mendoza | mmendoza84@outlook.com | 2025-12-20 |
| 4 | 1952 | Miguel | Russell | mrussell23@gmail.com | 2025-12-20 |
| 5 | 1953 | Patrick | Barnes | pbarnes@parkrowhotels.com | 2025-12-20 |
| 6 | 1954 | Gregory | Barnes | gregorybarnes1989@outlook.com | 2025-12-20 |
| 7 | 1955 | David | Sullivan | david.sullivan@gmail.com | 2025-12-21 |
| 8 | 1956 | Kelly | Campbell | kelly.campbell@gmail.com | 2025-12-21 |
| 9 | 1957 | Shirley | Gomez | shirleygomez1977@gmail.com | 2025-12-21 |
| 10 | 1958 | Thomas | Price | thomas.price@gmail.com | 2025-12-21 |
| 11 | 1959 | Peter | Mendoza | petermendoza2002@gmail.com | 2025-12-21 |
| 12 | 1960 | Ronald | Sanders | ronaldsanders1968@yahoo.com | 2025-12-21 |
| 13 | 1961 | Melissa | Harris | melissa.harris@icloud.com | 2025-12-22 |
| 14 | 1962 | Brandon | Mitchell | brandon.mitchell@gmail.com | 2025-12-22 |
| 15 | 1963 | Sofia | Ward | sofia.ward@gmail.com | 2025-12-22 |
| 16 | 1964 | Robert | Flores | rflores61@yahoo.com | 2025-12-22 |
| 17 | 1965 | Scott | Johnson | scott.johnson@comcast.net | 2025-12-22 |
| 18 | 1966 | Karen | James | karenjames1985@yahoo.com | 2025-12-22 |
| 19 | 1967 | James | Sullivan | james.sullivan@gmail.com | 2025-12-23 |
| 20 | 1968 | Andrew | Cook | acook@willowandfern.com | 2025-12-23 |
| 21 | 1969 | Donald | Jackson | djackson93@gmail.com | 2025-12-23 |
| 22 | 1970 | Jasmine | Patel | jasmine.patel@gmail.com | 2025-12-23 |
| 23 | 1971 | Stephen | Martin | smartin74@outlook.com | 2025-12-23 |
| 24 | 1972 | Edward | Brooks | edward.brooks@outlook.com | 2025-12-23 |
| 25 | 1973 | Anthony | Martin | amartin67@outlook.com | 2025-12-23 |
| 26 | 1974 | Betty | Harrison | bettyharrison1990@gmail.com | 2025-12-23 |
| 27 | 1975 | Shirley | Cox | scox27@comcast.net | 2025-12-23 |
| 28 | 1976 | Kenneth | Roberts | kennethroberts1972@outlook.com | 2025-12-23 |
| 29 | 1977 | Nicole | Jones | nicolejones1989@outlook.com | 2025-12-24 |
| 30 | 1978 | Jerry | White | jerrywhite1972@gmail.com | 2025-12-24 |
| 31 | 1979 | Margaret | Phillips | margaret.phillips@gmail.com | 2025-12-26 |
| 32 | 1980 | Jacob | Perry | jperry26@gmail.com | 2025-12-26 |
| 33 | 1981 | Sandra | Bennett | sandra.bennett@icloud.com | 2025-12-26 |
| 34 | 1982 | Carolyn | Hudson | chudson81@gmail.com | 2025-12-26 |
| 35 | 1983 | Jeffrey | Thomas | jeffrey.thomas@gmail.com | 2025-12-26 |
| 36 | 1984 | Ryan | Bailey | ryanbailey1977@gmail.com | 2025-12-26 |
| 37 | 1985 | Dylan | Harris | dharris77@icloud.com | 2025-12-27 |
| 38 | 1986 | Joseph | Brooks | joseph.brooks@gmail.com | 2025-12-27 |
| 39 | 1987 | Luis | Hill | luishill1988@yahoo.com | 2025-12-28 |
| 40 | 1988 | Jerry | Mendoza | jmendoza@evergreenproperties.com | 2025-12-28 |
| 41 | 1989 | Mark | Brennan | mbrennan@willowandfern.com | 2025-12-28 |
| 42 | 1990 | Donald | Walker | donald.walker@icloud.com | 2025-12-29 |
| 43 | 1991 | Margaret | Wright | margaret.wright@yahoo.com | 2025-12-29 |
| 44 | 1992 | Jose | Martinez | jmartinez76@gmail.com | 2025-12-29 |
| 45 | 1993 | Logan | Harrison | lharrison15@gmail.com | 2025-12-30 |
| 46 | 1994 | Dennis | Long | dennislong1975@gmail.com | 2025-12-30 |
| 47 | 1995 | Donald | Wood | dwood55@gmail.com | 2025-12-30 |
| 48 | 1996 | Carlos | Martinez | cmartinez45@gmail.com | 2025-12-30 |
| 49 | 1997 | Edward | Vasquez | evasquez74@gmail.com | 2025-12-31 |
| 50 | 1998 | Pamela | Richardson | pamela.richardson@aol.com | 2025-12-31 |
| 51 | 1999 | Gabriela | Sanchez | gsanchez37@icloud.com | 2025-12-31 |
| 52 | 2000 | Lucas | Jackson | ljackson49@icloud.com | 2025-12-31 |
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Sarah, y por qué
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.
¡Linterna encendida!
Practicaste: power querymerge queriesjoin kindleft outerinner joinleft antifull outer
- Resuelto
- Sin pistas
- Al primer intento
