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

如何在Power BI调用SQL Server表值自定义函数时传递默认日期参数

SQL Server表值函数在Power BI调用默认参数报错的解决办法

问题情况

我在SQL Server里建了个带日期默认参数的表值用户定义函数,代码如下:

create function [dbo].[udfGetSomeDay]
(   
     @TheDay date = '1/1/2025'
)
returns table 
as
return 
(
    select @TheDay as TheReturnedDay
)

在SSMS里用select * from [dbo].[udfGetSomeDay](default)调用,能正常返回结果:
SSMS执行结果
但把同样的语句拿到Power BI里调用,就会报错:
Power BI报错

解决办法

Power BI的SQL查询不支持用default关键字触发函数的默认参数,试试下面几种方案:

1. 显式传入默认值

直接把函数定义里的默认日期值写进调用语句里,用标准日期格式更稳妥:

select * from [dbo].[udfGetSomeDay]('2025-01-01')

2. 加个无参数的重载函数

在SQL Server里新增一个不带参数的同名函数,内部调用原函数并传入默认值:

create function [dbo].[udfGetSomeDay]()
returns table 
as
return 
(
    select * from [dbo].[udfGetSomeDay]('2025-01-01')
)

之后在Power BI里直接用select * from [dbo].[udfGetSomeDay]()就能调用了。

3. 调整函数逻辑兼容NULL

如果不想改调用语句,也可以修改原函数,让它在接收到NULL时自动用默认值:

alter function [dbo].[udfGetSomeDay]
(   
     @TheDay date = NULL
)
returns table 
as
return 
(
    select ISNULL(@TheDay, '2025-01-01') as TheReturnedDay
)

然后在Power BI里传入NULL就行:

select * from [dbo].[udfGetSomeDay](NULL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:33:20