You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query M中try结合List.MatchesAny时遇Token Literal Expected错误求助

Power Query M脚本List.MatchesAny中try表达式的语法错误修复

错误原因分析

  1. 无效语法符号:代码中出现的**try **是非法格式,多余的星号导致Power Query解析器抛出"Token Literal Expected"错误。
  2. try表达式结构错误:嵌套的try没有遵循try <表达式> otherwise <默认值>的正确语法,逻辑判断的嵌套方式不符合M语言规范。

修正后的完整代码

RenameColumnsFunction = (table as table) as table => 
let 
    ColumnNames = Table.ColumnNames(table),
    // Apply transformation logic to each column name
    RenamedColumns = List.Transform(ColumnNames, (colName) =>
        // If any column values have a length of 4 and are numeric, rename the column to "Org level 2 Code"
        if 
            List.MatchesAny(Table.Column(table, colName), each 
                try 
                    Text.Length(Text.From(_)) = 4 and not (Number.FromText(Text.From(_)) is null)
                otherwise false
            ) 
        then
            {colName, "Org Level 2 Code"} 
        // If the column name matches one of the predefined names, rename it to "Headcount Label"
        else if 
            List.Contains({"ACCTG", "ADMIN", "ASM", "AWE", "CFO", "CROCOL", "CUSTSRV", "DEV", "ENGIN","FIN","FLDSP", "HOM", "HR","IT", "MERCH", "PROSVC"}, colName) 
        then
            {colName, "Headcount Label"} 
        else 
            {colName, colName}  // Keep the original name if no match 
    ),
    RenamedTable = Table.RenameColumns(table, RenamedColumns, MissingField.Ignore) 
in 
    RenamedTable, 

// Step 4: Apply the renaming function to each table query
ApplyRename = Table.AddColumn(FilteredQueries, "Transformed Data", each RenameColumnsFunction([Content])), 

// Step 5: Expand the renamed tables (ensure there's data to extract) 
RenamedTables = Table.ExpandTableColumn(ApplyRename, "Transformed Data", Table.ColumnNames(ApplyRename[Content]{0})),

// Step 6: Combine all queries into one table if needed 
CombinedData = Table.Combine(RenamedTables[Transformed Data]) 
in 
    CombinedData

关键修改点说明

  • 移除了错误的**符号,修正try表达式的语法格式。
  • 将嵌套的try合并为一个try块:尝试执行文本长度检查+数字转换验证,只要其中任意一步失败(比如非文本/非数值类型),就返回false,避免报错。
  • 修正了CombinedData步骤中引用的列名,原代码RenamedTables[TransformedData]应为RenamedTables[Transformed Data](和前面步骤的列名保持一致)。

内容的提问来源于stack exchange,提问作者Maria Isabel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:34:59