Table.SplitColumn

La función Table.SplitColumn divide la columna indicada en varias columnas usando una cierta función de división.

Sintaxis

Table.SplitColumn(
    table as table,
    sourceColumn as text,
    splitter as function,
    optional columnNamesOrNumber as any,
    optional default as any,
    optional extraColumns as any
) as table

Parámetros
  • table: tabla en la que dividir la columna indicada
  • sourceColumn: columna a dividir
  • splitter: función de división a usar
  • columnNamesOrNumber: (opcional) nombres de las columnas a crear o número de columnas a crear
  • default: (opcional) valor a asignar a los valores nulos que surjan en la división de los valores
  • extraColumns: (opcional) criterio a seguir cuando el número de columnas creadas sea superior al esperado
Información adicional

Aparentemente, el número de columnas a crear viene determinado por el número de bloques identificados en la división del valor del campo sourceColumn en la primera fila de la tabla (información no documentada).

Si el parámetro columnNamesOrNumber es un número, las columnas creadas recibirán el nombre de la columna siendo dividida seguidas de un punto y un número de columna (de 1 en adelante).

El argumento extraValues puede tomar los valores ExtraValues.List, ExtraValues.Error o ExtraValues.Ignore.

Las funciones de división integradas disponibles son las siguientes:

Ejemplos

En este ejemplo partimos de la siguiente tabla:

let
    Source = Table.FromRecords(
        {
            [name = "John", phone = "34-941-524-250"],
            [name = "Alfonso", phone = "45-264-432-113"],
            [name = "John", phone = "34-254-756-110"],
            [name = "Marta", phone = "14-681-137-984"]
        }
    )
in
    Source

Función M Table.SplitColumn

Vemos que el campo "phone" está formado por cuatro bloques separados por guiones. Si quisiéramos dividir este campo en otras tantas columnas, una para cada bloque, podríamos hacerlo con el siguiente código:

let
    Source = Table.FromRecords(
        {
            [name = "John", phone = "34-941-524-250"],
            [name = "Alfonso", phone = "45-264-432-113"],
            [name = "John", phone = "34-254-756-110"],
            [name = "Marta", phone = "14-681-137-984"]
        }
    )
in
    Table.SplitColumn(
        Source,
        "phone",
        Splitter.SplitTextByDelimiter("-")
    )

Función M Table.SplitColumn

En este segundo ejemplo queremos forzar que el número de columnas sea 4, pues uno de los teléfonos tiene cuatro bloques y el resto solo tres:

let
    Source = Table.FromRecords(
        {
            [name = "John", phone = "34-941-524"],
            [name = "Alfonso", phone = "45-264-432-113"],
            [name = "John", phone = "34-254-756"],
            [name = "Marta", phone = "14-681-137"]
        }
    )
in
    Table.SplitColumn(
        Source,
        "phone",
        Splitter.SplitTextByDelimiter("-"),
        4
    )

Función M Table.SplitColumn

Siguiendo con el mismo ejemplo, podemos dar nombres a las cuatro columnas creadas y sustituir los valores nulos con, por ejemplo, una cadena de texto vacía con el siguiente código:

let
    Source = Table.FromRecords(
        {
            [name = "John", phone = "34-941-524"],
            [name = "Alfonso", phone = "45-264-432-113"],
            [name = "John", phone = "34-254-756"],
            [name = "Marta", phone = "14-681-137"]
        }
    )
in
    Table.SplitColumn(
        Source,
        "phone",
        Splitter.SplitTextByDelimiter("-"),
        {"Code", "Block 1", "Block 2", "Block 3"},
        ""
    )

Función M Table.SplitColumn
Categoría
Funciones de tabla
Enviado por admin el Dom, 06/09/2020 - 12:40