Power BI中Power Query自定义函数报错求助:文本列表包裹合并
Power Query自定义函数解决方案
错误原因分析
你碰到的Expression.Error: We cannot convert the value "[Company].[GB02]" to type List.错误,核心是使用each运算符时把单个文本值当成列表类型处理了——要么是误将单个元素的处理结果传入了需要列表参数的函数,要么是步骤逻辑混淆了列表级操作和元素级操作。
最简解决方案(无需额外拆分表格函数)
直接基于列表操作实现需求,比先转表格更高效,完整自定义函数代码如下:
let WrapCompanyCodes = (inputText as text) as text => let // 1. 按逗号拆分字符串为列表,同时去掉每个元素前后的空格 SplitList = List.Transform(Text.Split(inputText, ","), each Text.Trim(_)), // 2. 给每个元素添加[Company].[ ]包裹 WrappedList = List.Transform(SplitList, each "[Company].[" & _ & "]"), // 3. 用逗号连接列表为最终字符串 Result = Text.Combine(WrappedList, ",") in Result in WrapCompanyCodes
若要保留已有List2Table函数的调整方案
假设你的List2Table是将拆分后的列表转成表格,需先把表格转回列表再处理,调整后的代码如下:
let WrapCompanyCodes_WithTable = (inputText as text) as text => let SplitList = List.Transform(Text.Split(inputText, ","), each Text.Trim(_)), // 调用你的List2Table函数转成表格 SplitTable = List2Table(SplitList), // 从表格提取列值转回列表(假设表格列名为"Column1") ExtractedList = SplitTable[Column1], WrappedList = List.Transform(ExtractedList, each "[Company].[" & _ & "]"), Result = Text.Combine(WrappedList, ",") in Result in WrapCompanyCodes_WithTable
测试验证
输入示例"GB02, NL01, IT05, FR03",两个函数都会输出:"[Company].[GB02],[Company].[NL01],[Company].[IT05],[Company].[FR03]"
内容的提问来源于stack exchange,提问作者Tattysnuc
相关产品推荐
相关产品推荐

