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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Create Columns with given name if it doesn't exist.

Hi! I have some tables with different number of column with prefix "Level"

Example: 

Table1 - Level1, Level2, Level3

Table2 - Level1, Level2, Level3, Level4

 

I want make sure all tables have Level1 ~ Level10.

How can I do that with powerquery? Thanks!

1 ACCEPTED SOLUTION
Vera_33
Resident Rockstar
Resident Rockstar

Hi @Anonymous 

 

What are the values in those newly created columns? Here is one sample to have the same value with the column name

Vera_33_0-1626701845769.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKkktLlHSwUbFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [level1 = _t, level2 = _t, level3 = _t, level4 = _t]),
    columnList = {"level1","level2","level3","level4","level5","level6","level7","level8","level9","level10"},
    fxAddColumn = (T as table, N as number) =>
         [
             newColumns=List.Difference(columnList, Table.ColumnNames(Source)),
             counter = List.Count(newColumns),
             columnName = newColumns{N},
             tempTable = Table.AddColumn(T, columnName, each columnName),
             result = if N>= counter-1 then tempTable else @fxAddColumn(tempTable,N+1) 
         ][result], 

    Custom = fxAddColumn(Source,0)

in
    Custom

 

View solution in original post

4 REPLIES 4
CNENFRNL
Community Champion
Community Champion

let
    Source = #table(List.Transform({1..10}, each "Level" & Text.From(_)), {}),
    Other = #table({"Level1","Level3","Level5"},{{1,3,5}}),
    Appended = Source & Other
in
    Appended

Screenshot 2021-07-20 064806.png


Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension!

DAX is simple, but NOT EASY!

Vera_33
Resident Rockstar
Resident Rockstar

Hi @Anonymous 

 

What are the values in those newly created columns? Here is one sample to have the same value with the column name

Vera_33_0-1626701845769.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKkktLlHSwUbFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [level1 = _t, level2 = _t, level3 = _t, level4 = _t]),
    columnList = {"level1","level2","level3","level4","level5","level6","level7","level8","level9","level10"},
    fxAddColumn = (T as table, N as number) =>
         [
             newColumns=List.Difference(columnList, Table.ColumnNames(Source)),
             counter = List.Count(newColumns),
             columnName = newColumns{N},
             tempTable = Table.AddColumn(T, columnName, each columnName),
             result = if N>= counter-1 then tempTable else @fxAddColumn(tempTable,N+1) 
         ][result], 

    Custom = fxAddColumn(Source,0)

in
    Custom

 

Anonymous
Not applicable

I prefer all values of new created columns are setted as null. Thanks!

Hi @Anonymous 

 

modify this line a little bit

  tempTable = Table.AddColumn(T, columnName, each null),

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors
Top Kudoed Authors