Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

¿Cómo dividir columna con lista en columnas?

Hola, tengo una columna con valores de texto y otras son listas de tamaño variable para las que estoy tratando de dividir en columnas.

Esta es la entrada de ejemplo

image.png

Esta es la muestra que tengo.

let
    Source = Table.FromList(
    {
        [Col1 = 1, Data = "abc de"],
        [Col1 = 3, Data = {1,2,3}],
        [Col1 = 5, Data = "mhwu 5"],
        [Col1 = 2, Data = {"o","p","q","r","s"}]
    },
    Record.FieldValues,
    {"Col1","Data"}
),

#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
    #"Converted to Table"

Esta es la salida que estoy tratando de obtener, pero en el paso # "Convertido a tabla", obtengo este error

"No podemos convertir un valor de tipo Table en Type List"

Gracias por cualquier ayuda

image.png

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Bastante simple

let
    Source = Table.FromRecords(
        {
            [Col1 = 1, Data = "abc de"],
            [Col1 = 3, Data = {1,2,3}],
            [Col1 = 5, Data = "mhwu 5"],
            [Col1 = 2, Data = {"o","p","q","r","s"}]
        }
    ),
    #"Added Column" = Table.AddColumn(Source, "tb", each Table.Transpose(Table.FromList(if Value.Is([Data], type text) then Text.Split([Data], " ") else [Data], Splitter.SplitByNothing()))),
    #"Expanded Data" = let cnt = List.Max(List.Transform(#"Added Column"[tb], Table.ColumnCount)) in Table.ExpandTableColumn(#"Added Column", "tb", List.Transform({1..cnt}, each "Column" & Text.From(_)))
in
    #"Expanded Data"

CNENFRNL_0-1672116548404.png

Hola @CNENFRNL. Gracias por la ayuda. Funciona, pero estoy un poco perdido con tu solución.

¿Qué significa {{[Datos]}} y {[Datos]}?

Además, veo que usaste un bloque "let - in" y definiste una variable dentro del paso #"Datos expandidos". Eso es nuevo para mí. ¿Cuáles son las reglas a usar o cuándo usar otro/anidado "dejar entrar"? Gracias

Syndicate_Admin
Administrator
Administrator

Hi cgkas,

Medidas adoptadas:

1. Se duplicó la consulta inicial.

2. Haber filtrado la Lista y los otros valores en una consulta.

3. En la otra consulta, extraiga las columnas con cualquier delimitador.

4. Divídalo en columnas por el delimitador en el paso 3.

5. Ordenado usando un orden de clasificación personalizado según la imagen.

CÓDIGO:

1) Consulta filtrada
dejar
Origen = Table.FromList(
{
[Col1 = 1, Data = "abc de"],
[col1 = 3, datos = {1,2,3}],
[Col1 = 5, Datos = "mhwu 5"],
[Col1 = 2, Datos = {"o","p","q","r","s"}]
},
Record.FieldValues,
{"col1","datos"}
),
#"Filas filtradas" = Table.SelectRows(Origen, cada uno ([Col1] = 1 o [Col1] = 5))
en
#"Filas filtradas"

2 ) Consulta anexada
dejar
Origen = Table.FromList(
{
[Col1 = 1, Data = "abc de"],
[col1 = 3, datos = {1,2,3}],
[Col1 = 5, Datos = "mhwu 5"],
[Col1 = 2, Datos = {"o","p","q","r","s"}]
},
Record.FieldValues,
{"col1","datos"}
),
#"Filas filtradas" = Table.SelectRows(Origen, cada uno ([Col1] = 2 o [Col1] = 3)),
#"Valores extraídos" = Table.TransformColumns(#"Filas filtradas", {"Data", each Text.Combine(List.Transform(_, Text.From), ","), escriba text}),
#"Dividir columna por delimitador" = Table.SplitColumn(#"Valores extraídos", "Data", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Data.1", "Data.2", "Data.3", "Data.4", "Data.5"}),
#"Changed Type" = Table.TransformColumnTypes(#"Dividir columna por delimitador",{{"Data.1", type text}, {"Data.2", type text}}),
#"columnas renombradas" = Table.RenameColumns(#"Tipo cambiado",{{"Data.1", "Data"}}),
#"Consulta anexada" = Table.Combine({#"Columnas renombradas", Query1}),
#"Added Conditional Column" = Table.AddColumn(#"Appended Query", "colsort", each if [Col1] = 3 then 2 else if [Col1] = 2 then 4 else if [Col1] = 5 then 3 else [Col1], escriba any),
#"Sorted Rows" = Table.Sort(#"Added Conditional Column",{{"colsort", Order.Ascending}}),
#"Columnas eliminadas" = Table.RemoveColumns(#"Filas ordenadas",{"colsort"})
en
#"Columnas eliminadas"

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

November Carousel

Fabric Community Update - November 2024

Find out what's new and trending in the Fabric Community.

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Top Solution Authors
Top Kudoed Authors