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

Power BI Desktop定义ODBC数据源时如何在SQL语句中使用Firebird参数

Firebird ODBC在Power BI自定义SQL中配置参数的正确方案

报错原因说明

你之前尝试的几种参数写法都不符合Firebird ODBC驱动的要求:

  • 用:from_date格式:Firebird会将其识别为查询列名,找不到对应列就返回错误码-206 列未知
  • 用@from_date格式:Firebird原生SQL语法不支持@作为参数前缀,直接返回错误码-104 未知Token
  • 用?from_date格式:Firebird ODBC仅支持无名称的位置参数,不支持带参数名的问号写法,同样返回Token错误

操作步骤

步骤1:在Power BI中创建查询参数

  • 打开Power BI Desktop,点击顶部「主页」选项卡 >「管理参数」>「新建参数」
  • 新建第一个参数:名称填from_date,类型选择「日期/时间」,填写你常用的默认起始查询日期
  • 再新建第二个参数:名称填to_date,类型选择「日期/时间」,填写默认结束查询日期
  • 点击「确定」保存两个参数

步骤2:编写符合要求的自定义SQL

Firebird ODBC仅支持用纯?作为参数占位符,参数的顺序要和后续传参的顺序严格对应,正确SQL如下:

select s.sale_id, s.sale_date, sl.good_id, sl.price, sl.amount
  from sale_lines sl
    left join sales s on (sl.sale_id=s.sale_id)
  where s.sale_date >= ? and
        s.sale_date <= ?

上述SQL中第一个?对应起始日期from_date,第二个?对应结束日期to_date。

步骤3:修改M查询绑定参数

  • 按正常流程用ODBC连接,填入上述SQL后进入Power Query编辑器
  • 点击顶部「主页」>「高级编辑器」,找到当前ODBC连接的M代码,参考下方示例修改:
    原代码示例:
let
    Source = Odbc.Query("dsn=你自己的Firebird DSN名称", "上述的自定义SQL语句")
in
    Source

修改后代码:

let
    // 按占位符顺序排列参数
    ParamList = {from_date, to_date},
    Source = Odbc.Query("dsn=你自己的Firebird DSN名称", "上述的自定义SQL语句", ParamList)
in
    Source
  • 将代码中的你自己的Firebird DSN名称替换为你在ODBC数据源管理器中配置的DSN名称,点击「确定」保存即可。

步骤4:验证与使用

修改完成后Power Query会自动按顺序将参数值代入SQL占位符执行查询,后续如果需要修改查询日期,直接点击「主页」>「编辑参数」修改对应参数值,刷新数据即可生效,无需重新修改SQL语句。
该方案兼容Firebird 2.1、3.0、4.0全版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:57:02