Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

How to create table from list while specifying column name as well as its type

Hi, I would like to know whether it is possible to define column name AND column type in the command Table.FromList. I have this code:       let Source = MyQuery, #"Get Column Names Tab...
  • v-jingzhang's avatar
    v-jingzhang
    4 years ago

    Hi Anonymous 

     

    Using Table.SelectColumns is still the simplest method. 

     

    In addition, to construct a single-column table with #table, it should be

    let
        Source = #table(
            type table 
                [
                    From = text
                ],
            {
                {"aa"},
                {"bb"}
            }
        )
    in
        Source

     

    When you use RenameColumnsMappings[From] to extract the column, it returns a result like {"aa", "bb"}. While the expected result in #table() should be {{"aa"},{"bb"}}. So it didn't construct the table correctly. 

     

    To convert {"aa", "bb"} into {{"aa"},{"bb"}}, you can use List.Transform - PowerQuery M

    List.Transform(#"Changed Type"[From], each {_})

     

    Full code

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSkxU0lGqqFCK1YlWSkoCsisrlWJjAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [From = _t, To = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"From", type text}, {"To", type text}}),
        Custom1 = List.Transform(#"Changed Type"[From], each {_}),
        newTable = #table(
            type table 
                [
                    From = text
                ],
            Custom1
        )
    in
        newTable

     

    Hope it helps

     

    Best Regards,
    Community Support Team _ Jing
    If this post helps, please Accept it as Solution to help other members find it.

  • Rickmaurinus's avatar
    4 years ago

    Hi Anonymous 

     

    Your question is valid, and you can indeed specify the column name and type within the Table.FromList function. Let me give you an example. The below code creates a single column table with the name "Product" and the data type Text. 

     

     

     

    = Table.FromList(
        {"Apple", "Prume" },
        null,
        type table[Product=Text.Type]
    )

     

     

     

    You can achieve something similar with the methods:

    - #table

    - Table.FromRecords

    - Table.FromColumns

    - Table.FromRows

     

    Hope this helps!

    Rick

     

    https://gorilla.bi

     

    --------------------------------------------------

    @ me in replies or I'll lose your thread

     

    Master Power Query M? -> https://powerquery.how

    Read in-depth articles? -> BI Gorilla

    Youtube Channel: BI Gorilla

     

    If this post helps, then please consider accepting it as the solution to help other members find it more quickly.