Devuelve una tabla que es el resultado de combinar una lista de tablas y, nos devolverá una tabla.
Sintaxis
Table.Combine(tables as list, optional columns as any) as table
Vamos a ver ejemplos para comprenderla.
Creamos una consulta en blanco.
Vamos al editor avanzado.
let
Origen =
Table.FromRecords({
[Nombre="Jaime", Apellido="Franco", Provincia="Sevilla"]
})
Coma, y, enter.
De nuevo con Table.FromRecords voy a crear otra tabla con la misma estructura.
let
Origen =
Table.FromRecords({
[Nombre="Jaime", Apellido="Franco", Provincia="Sevilla"]
}),
Table.FromRecords({
[Nombre="Claudia", Apellido="Jimenez", Provincia="Cadiz"]
})
in
Origen
Ahora, vamos a combinar ambas tablas, para ello, después de Origen ponemos Table.Combine, abrimos paréntesis, y, llaves, como argumento tabla son las dos tablas que hemos creado, cerramos llaves, cerramos paréntesis.
let
Origen = Table.Combine({
Table.FromRecords({
[Nombre="Jaime", Apellido="Franco", Provincia="Sevilla"]
}),
Table.FromRecords({
[Nombre="Claudia", Apellido="Jimenez", Provincia="Cadiz"]
})
})
in
Origen
Clic en listo.
Tenemos una tabla que es la combinación de ambas tablas.
Veamos otro ejemplo, en este mismo libro, tenemos tres hojas, cada hoja de una provincia, los tres modelos son iguales, excepto, el ultimo que tiene tres columnas más, que son cantidad, precio, y, total.
Creamos otra consulta en blanco, en la barra de fórmulas, ponemos:
= Excel.CurrentWorkbook()
Nos vamos a traer todas las tablas del libro.
Agregamos un nuevo paso, ponemos Table.Combine, abrimos paréntesis, el primer argumento ya sabemos que es tabla, pero, como una lista, para ello, después de Origen, entre corchetes ponemos la columna Content.
= Table.Combine(Origen[Content])
Aceptamos, y, tenemos las tres tablas combinadas.
Aparecen los encabezados cantidad, precio, y, total para las dos primeras consultas aunque no las tuviera con blancos, pero, si bajamos a la ultima consulta, veremos las cantidades, precios, y, totales.
Por algún motivo, solo queremos las columnas de provincia, centro, y, producto, la funcion Table.Combine tiene un segundo argumento que es columns, donde podemos especificar como una lista las columnas con las que nos vamos a quedar.
Antes del cierre de paréntesis, abrimos llaves, y, ponemos Provincia, Producto, y, Centro, entre comillas dobles, y, entre llaves.
= Table.Combine(Origen[Content],{"Provincia”,”Producto”, Centro"})
Aceptamos, y, tenemos las tres tablas combinadas con las columnas de provincia, producto, y, centro.
Ahora, tenemos el siguiente modelo:
Debemos de crear un modelo donde aparezcan los ID seguido de la primera cantidad, pago, y, descuento, a continuación, deben de aparecer de nuevo los ID seguido de la segunda cantidad, pago, y, descuento.
El modelo esta en formato de rango.
Con una celda dentro del modelo, vamos a la pestaña datos, dentro de obtener y transformar datos, hacemos clic en de una tabla o rango.
Se abre la ventana crear tabla, desmarcamos la casilla la tabla tiene encabezados.
Añadimos un nuevo paso, ponemos la funcion Table.Combine, como argumento tabla es el paso que aparece, como argumento columns, abrimos llaves, entre comillas dobles Columna1, Columna2, Columna3, y, Column4, cerramos llaves, cerramos paréntesis.
Nos vamos a quedar con los ID y las tres primeras columnas (cantidad, pago, descuento), junto con el encabezado.
= Table.Combine({#"Tipo cambiado"},{"Columna1","Columna2","Columna3","Columna4"})
Insertamos un nuevo paso, volvemos a usar Table.Combine, como argumento tabla es el paso tipo cambiado, como argumento columns, abrimos llaves, entre comillas dobles, ponemos Columna1, Column5, Columna6, y, Columna7, cerramos llaves, cerramos paréntesis.
= Table.Combine({#"Tipo cambiado"},{"Columna1","Columna5","Columna6","Columna7"})
El encabezado no lo vamos a necesitar, porque ya lo tenemos, después del signo igual ponemos Table.RemoveRows, como argumento tabla es la función Table.Combine, como argumento offset ponemos 0.
= Table.RemoveRows(Table.Combine({#"Tipo cambiado"},{"Columna1","Columna5","Columna6","Columna7"}),0)
Ya lo tenemos quitado.
Si combinamos estas tablas no tendremos los resultados esperados, porque, el paso personalizado1, las columnas se llaman Columna1, 2, 3, y, 4, y, en el paso personalizado2, las columnas se llaman Columna1, 5, 6, y, 7, por lo que aparecerán las columnas unas al lado de la otra, lo que vamos a hacer es que al paso personalizado2, le vamos a cambiar el nombre de las columnas, y, le ponemos los mismos nombres que en el paso personalizado1.
Para ello, insertamos un nuevo paso, ponemos la función Table.RenameColumns, como argumento tabla es el paso anterior, el siguiente argumento es rename que consta de dos valores, el valor a reemplazar, y, el valor por el que será reemplazado, pero, como lista, vamos a trabajar con listas dentro de otra lista, por lo que abrimos llaves, abrimos otras llaves, entre comillas dobles ponemos Column5, coma, entre comillas dobles ponemos Columna2, es decir, Columna5, será reemplazado por Columna2, cerramos llaves.
= Table.RenameColumns(Personalizado2,{{"Columna5","Columna2"}
Coma, abrimos llaves, entre comillas dobles ponemos Column6, coma, entre comillas dobles ponemos Columna3, cerramos llaves.
= Table.RenameColumns(Personalizado2,{{"Columna5","Columna2"},{"Columna6","Columna3"}
Coma, abrimos llaves, entre comillas dobles ponemos Column7, coma, entre comillas dobles ponemos Columna4, cerramos llaves, y, paréntesis.
= Table.RenameColumns(Personalizado2,{{"Columna5","Columna2"},{"Columna6","Columna3"},{"Columna7","Columna4"}})
Aceptamos, y, ya lo tenemos.
Insertamos un nuevo paso, usamos la función Table.Combine, como argumento tabla, abrimos llaves, ponemos le paso Personalizado1, coma, ponemos el paso Personalizado2, cerramos llaves, cerramos paréntesis.
= Table.Combine({Personalizado1,Personalizado3})
Con una celda dentro del modelo, vamos a la pestaña transformar, y, hacemos clic en usar la primera fila como encabezado.
Ya lo tenemos.
Cerramos y cargamos como una conexión, y, lo cargamos como tabla al lado del modelo.
Miguel Angel Franco Garcia
Comments