You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将Excel查询复制到Power BI时遇错误:无法找到Excel表'Request'

解决Power BI复制Excel Power Query代码的报错问题

我帮你拆解下这个问题,核心是Excel和Power BI的数据源上下文完全不一样,导致原来的代码在Power BI里跑不通,咱们一步步解决:

为什么会报错?

你遇到的Expression.Error: We couldn't find an Excel table named 'Request'错误,本质原因是:

  • 在Excel里,Excel.CurrentWorkbook()指的是你正在编辑的那个Excel文件,能直接读取里面的'Request'、'CurrentDate'这些命名表;
  • 但到了Power BI里,Excel.CurrentWorkbook()指向的是Power BI内部的临时工作簿,根本不存在你Excel里的那些表,自然找不到。

你提到的日期判断错误,也是同一个道理——Power BI读不到Excel表中的日期字段。

分步解决办法

1. 替换Excel表引用为Power BI能识别的内容

首先得把原来依赖Excel表的参数(文件路径、起始日期、当前日期)替换成Power BI可用的形式,有两种方式:

方式一:手动定义参数(推荐,灵活易维护)

在Power BI查询编辑器里点击「管理参数」,创建几个参数:

  • Filepath1:填Excel中'Request'表第3行的文件路径(对应原代码里的{2}[Path]
  • Filepath2:填Excel中'Request'表第4行的文件路径(对应原代码里的{3}[Path]
  • StartDate:填Excel中'Request'表第6行的起始日期(对应原代码里的{5}[start]
  • CurrentDate:填你需要的当前日期(可以设成动态的DateTime.LocalNow(),或者固定日期)

方式二:直接硬编码(适合临时测试)

如果只是临时用,直接把路径和日期写死在代码里就行,比如:

let
    Filepath1 = "X:\你的第一个文件路径.txt",
    Filepath2 = "X:\你的第二个文件路径.txt",
    StartDate = #date(2024,5,1),
    CurrentDate = #date(2024,5,20)

2. 修改日期判断逻辑

把原来依赖Excel表的日期判断,换成咱们定义的参数,修改后的逻辑是:

#"Appended Query" = if Date.Month(StartDate) = Date.Month(CurrentDate) 
                    then Source 
                    else Table.Combine({Source, Csv.Document(File.Contents(Filepath2),null,{0, 55, 62, 134, 145, 386, 398, 410},null,1200)})

3. 完整可运行的代码示例

这里用参数的方式给出完整代码,你可以直接复制到Power BI查询编辑器里,替换成自己的参数值:

let
    // 替换成你自己的参数值,或者用「管理参数」统一配置
    Filepath1 = "X:\第一个文件的完整路径.txt",
    Filepath2 = "X:\第二个文件的完整路径.txt",
    StartDate = #date(2024,5,1),
    CurrentDate = DateTime.LocalNow(), // 动态获取当前日期,也可以改成固定日期
    
    // 读取第一个CSV文件
    Source = Csv.Document(File.Contents(Filepath1),null,{0, 55, 62, 134, 145, 386, 398, 410},null,1200),
    
    // 根据月份判断是否追加第二个文件
    #"Appended Query" = if Date.Month(StartDate) = Date.Month(CurrentDate) 
                        then Source 
                        else Table.Combine({Source, Csv.Document(File.Contents(Filepath2),null,{0, 55, 62, 134, 145, 386, 398, 410},null,1200)})
in
    #"Appended Query"

额外优化小技巧

  • 如果需要动态读取Excel里的参数,可以在Power BI中直接导入包含'Request'和'CurrentDate'表的Excel文件,然后在查询里引用这个导入的表,这样不用手动改参数;
  • 日期格式尽量用Power Query标准格式#date(年,月,日),避免因格式不兼容报错;
  • 给参数设置「从文件加载」的选项,以后更新路径或日期直接改Excel文件就行,不用动代码。

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

火山引擎 最新活动