如何在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)调用,能正常返回结果:
但把同样的语句拿到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
相关产品推荐
相关产品推荐

