为什么在 Table.TransformColumnNames 之后,列名称在后续步骤中恢复为以前的名称?
After Table.TransformColumnNames, why do column names revert back to previous names in subsequent steps?
我的代码中有一行将我的列名称转换为大写:
#"Renamed Columns3" = Table.TransformColumnNames(Source, Text.Upper),
当它是代码中的最后一步时,它工作正常。
但是,当我添加以下部分时,headers 列恢复为之前的 randomly-cased 形式。
Index= Table.AddIndexColumn(Source, "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"
正如您可能猜到的那样,我首先 upper-casing 列名称的原因是为了让接下来的步骤可以识别所有具有正确名称的列(即包含 "EMAIL_OPTIN") - 原始源数据有多种大小写,这似乎阻止了上述步骤合并所有相关列。
知道为什么 upper-casing 消失了吗?它似乎发生在列合并甚至发生之前,因为只有(最初)upper-case 列被合并,而那些最初在 lower-case 或 sentence-case 中的列仍然被排除在外。
当您添加新的代码段时,您不会参考重命名步骤 headers。相反,您参考源步骤(即 table 和 headers 重命名之前)。
只需更改此行:
Index = Table.AddIndexColumn(#"Renamed Columns3", "Index", 0, 1)
我的代码中有一行将我的列名称转换为大写:
#"Renamed Columns3" = Table.TransformColumnNames(Source, Text.Upper),
当它是代码中的最后一步时,它工作正常。
但是,当我添加以下部分时,headers 列恢复为之前的 randomly-cased 形式。
Index= Table.AddIndexColumn(Source, "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"
正如您可能猜到的那样,我首先 upper-casing 列名称的原因是为了让接下来的步骤可以识别所有具有正确名称的列(即包含 "EMAIL_OPTIN") - 原始源数据有多种大小写,这似乎阻止了上述步骤合并所有相关列。
知道为什么 upper-casing 消失了吗?它似乎发生在列合并甚至发生之前,因为只有(最初)upper-case 列被合并,而那些最初在 lower-case 或 sentence-case 中的列仍然被排除在外。
当您添加新的代码段时,您不会参考重命名步骤 headers。相反,您参考源步骤(即 table 和 headers 重命名之前)。 只需更改此行:
Index = Table.AddIndexColumn(#"Renamed Columns3", "Index", 0, 1)