Forum Discussion
Ignore missing column while summing column
- 7 years ago
Hey Stachu,
I found a solution courtesy to the following two links
https://blog.crossjoin.co.uk/2015/02/26/handling-added-or-missing-columns-in-power-query/
My Base headers are following - Table 0 (2)
let Source = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data0 = Source{0}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Bottom Rows" = Table.RemoveLastN(#"Changed Type",3), Custom1 = Table.ColumnNames(#"Removed Bottom Rows") in Custom1I create a another query - Table 0 (3) to find which column is missing from Base headers to the current table
let Source = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data0 = Source{0}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"C3"}), PresentColumns = Table.ColumnNames(#"Removed Columns"), Source1 = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data01 = Source1{0}[Data], #"Promoted Headers1" = Table.PromoteHeaders(Data01, [PromoteAllScalars=true]), #"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers1",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Bottom Rows" = Table.RemoveLastN(#"Changed Type1",3), ExpectedColumns = Table.ColumnNames(#"Removed Bottom Rows"), Custom1 = List.Difference(ExpectedColumns, PresentColumns), #"Converted to Table" = Table.FromList(Custom1, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Promoted Headers2" = Table.PromoteHeaders(#"Converted to Table", [PromoteAllScalars=true]), #"Changed Type2" = Table.TransformColumnTypes(#"Promoted Headers2",{{"C3", type any}}) in #"Changed Type2"Finally - Table 0 - to add the missing column to the current table, Replace all null with 0 and then add the columns
let Source = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data0 = Source{0}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"C3"}), #"Appended Query" = Table.Combine({#"Removed Columns", #"Table 0 (3)"}), Custom1 = Table.TransformColumns(#"Appended Query",{},(x) => Replacer.ReplaceValue(x,null,0)), #"Inserted Sum" = Table.AddColumn(Custom1, "Addition", each List.Sum({[C1], [C2], [C3]}), type number) in #"Inserted Sum"
new column like this will work
(try [C1] otherwise 0) + (try [C2] otherwise 0) + (try [C3] otherwise 0)
not sure about the performance impact though
Hi Stachu,
Thank you very much for your reply. You taught me something new today.However, there is glitch.
My basic query is following after incorporating what you suggested.
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Project", type text}, {"C1", Int64.Type}, {"C2 ", Int64.Type}, {"C3", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each (try [C1] otherwise 0) + (try [#"C2 "] otherwise 0)+ (try [C3] otherwise 0))
in
#"Added Custom"Now there is #"Changed Type" step which generates an error once it is missing any column. This step can't be avoided. Now, Is there a way "M" can ignore the transormation of column types in #"Changed Type" step as well.
Thank you in advance.
- smpa017 years agoCommunity Champion
Hey Stachu,
I found a solution courtesy to the following two links
https://blog.crossjoin.co.uk/2015/02/26/handling-added-or-missing-columns-in-power-query/
My Base headers are following - Table 0 (2)
let Source = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data0 = Source{0}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Bottom Rows" = Table.RemoveLastN(#"Changed Type",3), Custom1 = Table.ColumnNames(#"Removed Bottom Rows") in Custom1I create a another query - Table 0 (3) to find which column is missing from Base headers to the current table
let Source = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data0 = Source{0}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"C3"}), PresentColumns = Table.ColumnNames(#"Removed Columns"), Source1 = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data01 = Source1{0}[Data], #"Promoted Headers1" = Table.PromoteHeaders(Data01, [PromoteAllScalars=true]), #"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers1",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Bottom Rows" = Table.RemoveLastN(#"Changed Type1",3), ExpectedColumns = Table.ColumnNames(#"Removed Bottom Rows"), Custom1 = List.Difference(ExpectedColumns, PresentColumns), #"Converted to Table" = Table.FromList(Custom1, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Promoted Headers2" = Table.PromoteHeaders(#"Converted to Table", [PromoteAllScalars=true]), #"Changed Type2" = Table.TransformColumnTypes(#"Promoted Headers2",{{"C3", type any}}) in #"Changed Type2"Finally - Table 0 - to add the missing column to the current table, Replace all null with 0 and then add the columns
let Source = Web.Page(Web.Contents("https://community.powerbi.com/t5/Desktop/Ignore-missing-column-while-summing-column/m-p/552485")), Data0 = Source{0}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Project", type text}, {"C1", Int64.Type}, {"C2", Int64.Type}, {"C3", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"C3"}), #"Appended Query" = Table.Combine({#"Removed Columns", #"Table 0 (3)"}), Custom1 = Table.TransformColumns(#"Appended Query",{},(x) => Replacer.ReplaceValue(x,null,0)), #"Inserted Sum" = Table.AddColumn(Custom1, "Addition", each List.Sum({[C1], [C2], [C3]}), type number) in #"Inserted Sum"- v-cherch-msft7 years agoMicrosoft Employee
Hi smpa01
It seems you've solved it,right? If so, please accept your answer as solution, that way, other community members will easily find the solution when they get same issue.
Regards,
Cherie
- smpa017 years agoCommunity Champion
v-cherch-msftyes I have solved it in a way and I did not want to accept the solution in case someone else can provide a better solution to this.
Anyway, I have accepted my own solution now.