我在 Excel for Microsoft 365 中使用 Power Query。
我有以下源数据:
我正在尝试确定所需的转换以获得以下所需的结果:
源数据在Col2的单元格中具有数据层次结构。我想将数据保留在Col2的第一个层次结构级别,并且我想为第二个和后续层次结构级别创建单独的列( Col2.1、Col2.2、...、Col2.N )。
单元格中的各个值由换行符 ( #(lf) ) 分隔,给定值的层次结构级别由其缩进级别确定(每个缩进级别由三个空格字符表示)。
层次结构中给定值的父级由顺序确定。例如,String1.2
位于第二个缩进级别。因此,仅基于缩进级别,它可以分层放置在 或String1
下String2
。但是,由于它出现在 之前String1
和之前String2
,因此必须按层次结构将其放置在 之下String1
。
请注意,我选择的String * 名称是经过净化的名称,它们是为了说明我想要完成的任务而选择的。我的实际数据没有可预测的前导前缀,并且并不暗示其词汇内容的层次结构。因此,分裂逻辑不能基于值本身。它必须仅基于一个值的缩进级别以及相对于其他值及其缩进级别的顺序。
这是我到目前为止的 M 语言代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Col1", type text}, {"Col2", type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Col2", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Col2")
in
#"Split Column by Delimiter"
此 M 语言代码产生以下实际结果:
接下来显示源数据/期望结果的其他示例。
我必须在 M 语言代码中添加哪些额外的应用步骤才能将给定的源数据示例转换为上面显示的所需结果?
根据您更新的问题陈述进行编辑。
M代码
数据样本
结果