Power Query - 循环以提取分隔符之间的文本
Power Query - Loop to extract text between delimiters
我正在尝试提取所有可用匹配项的分隔符之间的文本。输入列和所需的输出如下所示:
Index
Country (input)
Country (desired output)
0
1, USA; 2, France; 3, Germany;
USA, France, Germany
1
4, Spain;
Spain
2
1, USA; 5, Italy;
USA, Italy
我尝试通过使用 ", "
和 ";"
作为分隔符来使用“提取”和“拆分列”功能,但它没有按预期工作。我也尝试过使用 Text.BetweenDelimiters
和 Splitter.SplitTextByEachDelimiter
但我无法想出解决方案。
我想在 Power Query 中编写一个循环,可以递归地提取此数据,直到所有国家/地区都提取到每行的新列中。
有什么想法吗?提前致谢!
您所做的似乎是按分号拆分,然后按逗号拆分,然后合并结果。那么让我们这样做
右键单击该列并按分号拆分,每次出现分隔符,高级选项行
右键单击新列并以逗号分隔,每次出现分隔符,高级选项列
右键单击索引和组
在公式栏或 home..advanced editor... 中编辑分组公式...以替换默认值并以此结尾,它使用 , 分隔符组合所有行
, each Text.Combine([ColumnNameGoesHere]," "), type text}})
示例代码:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Country (input)", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv)}}), "Country (input)"),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Country (input)", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Country (input).1", "Country (input).2"}),
#"Grouped Rows" = Table.Group(#"Split Column by Delimiter1", {"Index"}, {{"Country (desired output)", each Text.Combine([#"Country (input).2"],", "), type text}})
in #"Grouped Rows"
~~~
我假设这是简化的数据,否则只需一步删除所有数字和分号会更简单
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Text" = Table.TransformColumns(Source,{{"Country (input)", each Text.RemoveRange(Text.Remove(_, {"1","2","3","4","5","6","7","8","9","0",";"}),0), type text}})
in #"Text"
我正在尝试提取所有可用匹配项的分隔符之间的文本。输入列和所需的输出如下所示:
Index | Country (input) | Country (desired output) |
---|---|---|
0 | 1, USA; 2, France; 3, Germany; | USA, France, Germany |
1 | 4, Spain; | Spain |
2 | 1, USA; 5, Italy; | USA, Italy |
我尝试通过使用 ", "
和 ";"
作为分隔符来使用“提取”和“拆分列”功能,但它没有按预期工作。我也尝试过使用 Text.BetweenDelimiters
和 Splitter.SplitTextByEachDelimiter
但我无法想出解决方案。
我想在 Power Query 中编写一个循环,可以递归地提取此数据,直到所有国家/地区都提取到每行的新列中。
有什么想法吗?提前致谢!
您所做的似乎是按分号拆分,然后按逗号拆分,然后合并结果。那么让我们这样做
右键单击该列并按分号拆分,每次出现分隔符,高级选项行
右键单击新列并以逗号分隔,每次出现分隔符,高级选项列
右键单击索引和组
在公式栏或 home..advanced editor... 中编辑分组公式...以替换默认值并以此结尾,它使用 , 分隔符组合所有行
, each Text.Combine([ColumnNameGoesHere]," "), type text}})
示例代码:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Country (input)", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv)}}), "Country (input)"),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Country (input)", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Country (input).1", "Country (input).2"}),
#"Grouped Rows" = Table.Group(#"Split Column by Delimiter1", {"Index"}, {{"Country (desired output)", each Text.Combine([#"Country (input).2"],", "), type text}})
in #"Grouped Rows"
~~~
我假设这是简化的数据,否则只需一步删除所有数字和分号会更简单
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Text" = Table.TransformColumns(Source,{{"Country (input)", each Text.RemoveRange(Text.Remove(_, {"1","2","3","4","5","6","7","8","9","0",";"}),0), type text}})
in #"Text"