kazael
Hola,
Tengo dos tablas que me gustaría fusionar:
Tabla 1: Quejas, ID de empleado
Tabla 2: ID de empleado, nombre Emp, apellido Emp
Me gustaría unir table1 con una subconsulta de table2 con la interfaz de consulta de energía en PBI.
La razón por la que quiero hacerlo es primero, obtener los detalles de los empleados que aparecen en la primera tabla solamente (Tabla2 incluye todo el emp) y para obtenga una tabla con valores distintos (cada emp aparecerá una vez) para reducir el tamaño de la tabla final creada a partir de la combinación.
Mi consulta SQL se vería así:
SELECCIONE *
FROM Tabla1 Unión externa derecha (SELECT DISTINCT EmpID FROM Tabla 2)
Sobre Tabla 1 .EmpID = Tabla 2 .EmpID
¡Gracias!
Greg_Deckler
En respuesta a kazael
No veo por qué no, es código M, puedes hacer prácticamente lo que quieras. Mira mi técnica aquí:
https://social.technet.microsoft.com/wiki/contents/articles/32915.power-bi-merge-query-with-m.aspx
Greg_Deckler
En respuesta a kazael
Bueno, si no desea escribir código M para mantenerlo todo en una consulta, simplemente puede crear una nueva consulta de referencia para Table1. Haga clic derecho en la consulta Table1 y elija «Referencia». Luego, en esa consulta, haga clic con el botón derecho en la columna EmpID y elija eliminar los duplicados. Luego, use esa tabla en su consulta de combinación. O simplemente puede escribir esos pasos en M y mantenerlo todo en una sola consulta sin crear la tabla, pero como quiera hacerlo. Por ejemplo, algo como esto probablemente funcionaría:
= Table.NestedJoin(Table.Distinct(Table1,{"EmpID"}),{"EmpID"},Table2,{"EmpID"},"Table2",JoinKind.LeftOuter)
Greg_Deckler
¿Ha mirado las consultas de combinación?
kazael
En respuesta a Greg_Deckler
Sí, los fusioné, pero no te permite fusionar una tabla con una subconsulta de otra tabla.
Greg_Deckler
En respuesta a kazael
No veo por qué no, es código M, puedes hacer prácticamente lo que quieras. Mira mi técnica aquí:
https://social.technet.microsoft.com/wiki/contents/articles/32915.power-bi-merge-query-with-m.aspx
kazael
En respuesta a Greg_Deckler
Hola @Greg_Deckler
Gracias por tu ayuda.
Sé que es posible, pero no sé cómo incluir la parte Distinct en la consulta.
Esta es la consulta que uso ahora para unir las tablas:
= Table.NestedJoin (Table1, {«EmpID«}, Table2, {» EmpID «},»Tabla 2«, JoinKind.LeftOuter)
¿Cómo modificaría la consulta para incluir solo Distinct EmpID de Table1?
Greg_Deckler
En respuesta a kazael
Bueno, si no desea escribir código M para mantenerlo todo en una consulta, simplemente puede crear una nueva consulta de referencia para Table1. Haga clic derecho en la consulta Table1 y elija «Referencia». Luego, en esa consulta, haga clic con el botón derecho en la columna EmpID y elija eliminar los duplicados. Luego, use esa tabla en su consulta de combinación. O simplemente puede escribir esos pasos en M y mantenerlo todo en una sola consulta sin crear la tabla, pero como quiera hacerlo. Por ejemplo, algo como esto probablemente funcionaría:
= Table.NestedJoin(Table.Distinct(Table1,{"EmpID"}),{"EmpID"},Table2,{"EmpID"},"Table2",JoinKind.LeftOuter)
neharaj
En respuesta a Greg_Deckler
Hola Greg,
¿Cómo podemos unirnos a través de nestedjoin en múltiples condiciones pero con o con condición?
Ejemplo: Seleccione A.id, A.Name B.Name, B.Curso de A, B donde (A.id = B.id O A.Name = B.Name).
Estaba tratando de hacerlo usando la consulta Merge, puedo seleccionar varias columnas al unirme desde A y B, pero creo que está tomando el operador And.
kazael
En respuesta a Greg_Deckler
Hola @Greg_Deckler,
Realmente no funciona, así que intentaré escribir el código M completo usando el artículo que adjuntaste.
¡Gracias!
LivioLanzo
En respuesta a kazael
@kazael
¿Podría darnos un ejemplo visual en el que podamos trabajar?
Greg_Deckler
En respuesta a kazael
De acuerdo, @ImkeF también podría ayudar, ella es una gurú de M.
ImkeF
En respuesta a Greg_Deckler
Creo que la sintaxis M equivalente a la sintaxis SQL que mencionaste en tu publicación original sería la siguiente:
= Table.NestedJoin(Table1,,{"EmpID"},Table.Distinct(Table2, {"EmpID"}),{"EmpID"},"Table2",JoinKind.LeftOuter)
Entonces, la sintaxis de @Greg_Deckler era correcta, solo que se refería a la tabla incorrecta, por lo que puedo ver.
kazael
En respuesta a ImkeF
Hola @LivioLanzo y @ImkeF, ¡gracias por tu ayuda!
Quiero unir valores distintos de la primera tabla:
EmpID | ComID |
101 | 1 |
102 | 2 |
103 | 3 |
101 | 4 |
Con valores de la segunda tabla:
EmpRefNumber | Primer nombre | Apellido |
105 | Ben | B |
101 | Ryan | GRAMO |
102 | Jaime | H |
200 | Rosa | F |
y mantenga solo los valores de la primera tabla (combinación izquierda).
La combinación debe basarse en EmpID y EmpRefNumber
¡Gracias!
LivioLanzo
En respuesta a kazael
Puedes hacerlo así:
let Source = Table.NestedJoin( Table.Distinct( Table.SelectColumns( Table1, {"EmpID"} ) ), {"EmpID"}, Table2, {"EmpRefNumber"}, "JoinedTable", JoinKind.LeftOuter ), ExpandedJoinedTable = Table.ExpandTableColumn(Source, "JoinedTable", {"FirstName", "LastName"}, {"FirstName", "LastName"}) in ExpandedJoinedTable
O en DAX:
Table = NATURALLEFTOUTERJOIN ( DISTINCT ( SELECTCOLUMNS ( Table1, "EmpID", [EmpID] + 0 ) ), SELECTCOLUMNS ( Table2, "EmpID", Table2[EmpRefNumber] + 0, "FirstName", table2[FirstName], "LastName", table2[LastName] ) )
Ashish_Mathur
En respuesta a kazael
Hola,
¿Qué resultado esperas?
kazael
En respuesta a Ashish_Mathur
Hola @Ashish_Mathur,
Table1.EmpID | Table2.EmpRefNumber | Table2.FirstName | Table2.LastName |
101 | 101 | Ryan | GRAMO |
102 | 102 | Jaime | H |
103 | NULO | NULO | NULO |
Con valores distintos en la columna Table1.EmpID