La función Table.FromList devuelve una tabla a partir de una lista.
Table.FromList(
list as list,
optional splitter as nullable function,
optional columns as any,
optional default as any,
optional extraValues as nullable number
) as table
- list: lista a convertir en tabla
- splitter: (opcional) función a aplicar a cada valor de la lista para su división
- columns: (opcional) número de columnas, nombres de columnas o tipo de columnas
- default: (opcional) valor por defecto a usar para sustituir a los valores inexistentes
- extraValues: (opcional) criterio a seguir cuando el número de columnas creadas sea superior al esperado
Si no se especifican los nombres de las columnas, se aplican nombres por defecto.
El argumento extraValues puede tomar los valores ExtraValues.List, ExtraValues.Error o ExtraValues.Ignore.
Las funciones de división integradas disponibles son las siguientes:
- Splitter.SplitByNothing
- Splitter.SplitTextByAnyDelimiter
- Splitter.SplitTextByCharacterTransition
- Splitter.SplitTextByDelimiter
- Splitter.SplitTextByEachDelimiter
- Splitter.SplitTextByLengths
- Splitter.SplitTextByPositions
- Splitter.SplitTextByRanges
- Splitter.SplitTextByRepeatedLengths
- Splitter.SplitTextByWhitespace
Podemos crear una tabla a partir de la lista {"a", "b", "c"} con la siguiente expresión:
Table.FromList(
{"a", "b", "c"}
)
Table
Un clic en el enlace Table nos muestra la tabla generada:
Comprobamos que se ha aplicado un nombre de columna por defecto.
Si, en el ejemplo anterior, añadimos el tercer argumento indicando el nombre de la columna...
Table.FromList(
{"a", "b", "c"},
null,
{"Product"}
)
Table
...la tabla resultante incluye dicho nombre:
En este ejemplo partimos de una lista de registros y utilizamos la función Record.FieldValues para dividir cada registro en una lista de elementos:
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2, Name = "Susan"]
},
Record.FieldValues,
{"ID", "Name"}
)
Table
La tabla devuelta es la siguiente:
Si incluimos el argumento default, éste se utilizará para sustituir a los valores inexistentes que puedan aparecer en la tabla. En el siguiente ejemplo el segundo registro no incluye el valor del campo "Name", por lo que se sustituirá por el valor "n/a" incluido como cuarto argumento:
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2]
},
Record.FieldValues,
{"ID", "Name"},
"n/a"
)
Table
La tabla devuelta es la siguiente:
Para probar el quinto argumento, extraValues, vamos a comenzar con una tabla generada a partir de una lista en la que uno de los registros (el segundo) incluye un campo adicional, "Age":
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2, Name = "Susan", Age = 45]
},
Record.FieldValues,
{"ID", "Name"},
null
)
Table
Por defecto, esto genera un error en la tabla devuelta por la función:
Si utilizamos como argumento extraValues la constante ExtraValues.Error, el resultado obtenido es exactamente el mismo que si no incluimos este argumento, pues la generación de un error es el comportamiento por defecto:
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2, Name = "Susan", Age = 45]
},
Record.FieldValues,
{"ID", "Name"},
null,
ExtraValues.Error
)
Table
La tabla resultante es, por supuesto, idéntica a la obtenida en el ejemplo anterior:
Siguiendo con el mismo ejemplo, si incluimos como argumento ExtraValues.Ignore, este valor no esperado se ignora:
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2, Name = "Susan", Age = 45]
},
Record.FieldValues,
{"ID", "Name"},
null,
ExtraValues.Ignore
)
Table
La tabla devuelta en este caso es la siguiente:
Por último, si incluimos el argumento ExtraValues.List, la función devuelve un valor de tipo List conteniendo los posibles campos adicionales. Para probarlo, vamos a partir de una expresión ligeramente distinta a la utilizada en los ejemplos anteriores en la que no vamos a fijar los nombres de los campos. Comencemos viendo la tabla resultante si no hay campos inesperados:
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2, Name = "Susan"]
},
Record.FieldValues,
null,
null,
ExtraValues.List
)
Table
La tabla resultante es la siguiente:
Comprobamos que la tabla incluye un campo adicional de tipo List en el que se agrupan los valores no esperados. En este momento estas listas están vacías. Por ejemplo, si hacemos clic en el enlace List correspondiente a Susan:
Pero modifiquemos ahora uno de los registros para incluir un campo no esperado:
Table.FromList(
{
[id = 1, Name = "Peter"],
[id = 2, Name = "Susan", Age = 45]
},
Record.FieldValues,
null,
null,
ExtraValues.List
)
Table
La tabla generada es semejante a la anterior:
...pero ahora estas listas incluyen los valores extra. Si hacemos clic en el enlace List de Susan vemos el valor correspondiente al campo Age: