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

Power Query合并多加拿大节假日API请求报错解决方案咨询

解决Power Query中加拿大多年份节假日API数据合并问题

错误原因

你遇到的错误是因为Table.Combine语法使用错误:原代码将两个表列表作为单独参数传入,而正确用法是把所有要合并的表放在同一个列表里。原代码中的Table.Combine({#"Lignes filtrées1"}, {#"Lignes filtrées2"})不符合语法规范,导致参数解析失败。

优化解决方案

为避免重复代码、方便扩展更多年份,建议将单一年份的API请求与数据处理逻辑封装为自定义函数,再批量处理目标年份:

修正并优化后的完整代码

let
    // 定义处理单一年份节假日的自定义函数
    GetYearHolidays = (year as number) => let
        Source = Json.Document(Web.Contents("https://canada-holidays.ca/api/v1/holidays?year=" & Text.From(year))),
        ConvertToTable = Table.FromRecords({Source}),
        ExpandHolidaysList = Table.ExpandListColumn(ConvertToTable, "holidays"),
        ExpandHolidayRecords = Table.ExpandRecordColumn(ExpandHolidaysList, "holidays", 
            {"id", "date", "nameEn", "nameFr", "federal", "observedDate"},
            {"id", "date", "nameEn", "nameFr", "federal", "observedDate"}),
        SetColumnTypes = Table.TransformColumnTypes(ExpandHolidayRecords, {
            {"id", Int64.Type},
            {"date", type date},
            {"nameEn", type text},
            {"nameFr", type text},
            {"federal", Int64.Type},
            {"observedDate", type date}
        })
    in
        SetColumnTypes,

    // 定义需要获取的年份范围(可自行修改扩展)
    TargetYears = {2021, 2022},
    // 批量调用函数获取各年份数据
    AllYearData = List.Transform(TargetYears, GetYearHolidays),
    // 合并所有年份的表
    CombinedTables = Table.Combine(AllYearData),
    // 过滤指定节假日
    FilteredHolidays = Table.SelectRows(CombinedTables, each List.Contains({
        "Boxing Day", "Canada Day", "Christmas Day", "Day of Mourning for Queen Elizabeth II",
        "Easter Monday", "Good Friday", "Labour Day", "National Day for Truth and Reconciliation",
        "New Year’s Day", "Remembrance Day", "Saint-Jean-Baptiste Day", "Thanksgiving", "Victoria Day"
    }, [nameEn]))
in
    FilteredHolidays

关键改进点

  • 自定义函数封装:将重复的API请求、数据转换逻辑打包成GetYearHolidays函数,减少冗余代码,后续添加年份只需修改TargetYears列表。
  • 批量处理年份:用List.Transform批量遍历年份列表,自动生成各年份的数据表。
  • 正确合并表:Table.Combine(AllYearData)接收包含所有表的列表,符合语法规范。
  • 简化过滤逻辑:用List.Contains替代多个or判断,代码更简洁易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:05:29