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

Power Query条件合并表:仅合并已存在的年度数据表

解决PowerQuery合并年度表时的不存在表异常问题

原代码会生成从2011到当前年份的所有年度表名并尝试合并,但年初时当年的年度表尚未生成,直接访问会触发异常。以下是修改后的代码,仅合并实际已存在的年度表:

let
    currentYear = Date.Year(DateTime.LocalNow()),
    // 生成所有可能的年度表名格式
    allPossibleTables = List.Transform({2011..currentYear}, each "INCC_" & Text.From(_)),
    // 筛选出#shared环境中实际存在的表
    existingTables = List.Select(allPossibleTables, each Record.HasFields(#shared, {_})),
    // 合并所有存在的年度表
    combinedTable = Table.Combine(List.Transform(existingTables, each Record.Field(#shared, _)))
in
    combinedTable

关键改动说明

  • 新增existingTables筛选步骤:通过Record.HasFields检查每个表名是否在全局#shared环境中存在,只保留已加载的有效表
  • 合并逻辑仅基于筛选后的列表,彻底避免访问不存在的表引发的错误

额外优化:单个年度表的容错处理

如果年度表是通过网页抓取生成的,建议在单表获取逻辑中增加错误捕获,避免因数据未更新导致的表加载失败:

let
    year = 2024, // 可替换为动态年份参数
    // 捕获网页抓取异常,失败时返回空表
    tryGetData = try 
        let
            Fonte = Web.Page(Web.Contents("http://indiceseconomicos.secovi.com.br/indicadormensal.php?idindicador=59")),
            Data29 = Fonte{29}[Data],
            #"Tipo Alterado" = Table.TransformColumnTypes(Data29,{{"Header", type text}, {"Mês", type text}, {"índice", type number}, {"Var% Mês", Percentage.Type}, {"Acum. Ano%", Percentage.Type}, {"Acum. 12 meses%", Percentage.Type}})
        in
            #"Tipo Alterado"
    otherwise Table.FromRecords({}),
    // 空表时返回null,后续合并会自动忽略
    finalTable = if Table.RowCount(tryGetData) = 0 then null else tryGetData
in
    finalTable

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:43:40