Power Query中Table.TransformColumnNames后列名还原问题咨询
问题原因与解决方案:Power Query列名大写转换失效的问题
嘿,这个问题的核心其实特别清晰:你把列名转成大写的操作确实生效了,但后续所有步骤都没基于这个处理后的表,反而又用回了原始的Source表!
你看,你写的#"Renamed Columns3" = Table.TransformColumnNames(Source, Text.Upper)这一步已经把列名统一成大写了,但后面的Index= Table.AddIndexColumn(Source, "Index", 0, 1)还是直接用了未处理的Source——这就相当于你费了半天劲把列名转成大写,转头又回到原始数据重新操作,之前的转换自然等于白做了。
结果就是,后续的List.Select只能识别原始数据里本来就是大写的"EMAIL_OPTIN"列,那些大小写混乱的列因为没经过转换,自然被遗漏了。
修正后的代码
只需要把后续所有步骤的起始数据源从Source替换成你转完大写的#"Renamed Columns3"就行,另外因为列名已经统一为大写,匹配字符串用大写的"EMAIL_OPTIN"会更稳妥:
#"Renamed Columns3" = Table.TransformColumnNames(Source, Text.Upper), Index= Table.AddIndexColumn(#"Renamed Columns3", "Index", 0, 1), // 列名已统一大写,直接匹配大写字符串更可靠 EmailList= List.Select(Table.ColumnNames(Index), each Text.Contains(_, "EMAIL_OPTIN")), Merged = Table.CombineColumns(Index,EmailList,Combiner.CombineTextByDelimiter("", QuoteStyle.None),"MergedE"), #"Merged Queries" = Table.NestedJoin(Index,{"Index"},Merged,{"Index"},"MergedE",JoinKind.LeftOuter), #"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "MergedE", {"MergedE"}, {"MergedE"}), #"Removed Columns3" = Table.RemoveColumns(#"Expanded Table2",{"Index"}) in #"Removed Columns3"
关键说明
- 确保整个数据处理流程的每一步都基于转大写后的表,而不是原始的
Source,这样所有后续操作才能用到统一大小写的列名。 - 统一列名后,用大写的匹配字符串可以彻底避免大小写不匹配的问题,不用再担心遗漏任何包含目标关键词的列。
内容的提问来源于stack exchange,提问作者s.turn
相关产品推荐
相关产品推荐

