背景:
我正在将SQL Server数据仓库迁移到Azure SQL数据仓库。该数据库是SSAS OLAP多维数据集的源。
某些度量值组已经过分区,并依赖于表值函数来查询分区的相关数据。
问题:
我无法在Azure-DWH中创建这些功能。
示例功能: create function udm.MyFunction()返回表作为return(select getdate(),getutcdate())
错误讯息: Msg 104051,Level 16,State 1,Line 46 不支持的数据类型错误。语句引用Parallel Data Warehouse中不支持的数据类型,或者有一个表达式产生不支持的数据类型。修改语句并重新执行它。
MSDN链接:https://msdn.microsoft.com/en-US/library/mt203952.aspx 列出" return_data_type"和提及"是标量用户定义函数的返回值。对于Transact-SQL函数,允许SQL数据仓库中支持的所有标量数据类型。时间戳(rowversion)数据类型不是受支持的类型。"
我的假设是TABLE返回类型是错误,因为我能够创建返回单个值的函数。
我不确定是否支持表值函数,如果是,我需要做些什么才能让它们正常工作。
答案 0 :(得分:1)
Azure SQL数据仓库当前不支持内联或多语句表值函数。这时只有标量函数。与SQL Server相比,还有一个额外的限制。标量函数体不能引用表。有关更多详细信息,请参阅功能正文部分:
function_body (msdn)
指定一系列不引用数据库数据(表或视图)的Transact-SQL语句定义函数的值。
根据您的情况,您需要使用替代方法;带有一些额外元数据的proc或显式查询。
答案 1 :(得分:0)
正如JRJ所述,不允许使用非标量类型,游标和表格。我们将更新文档以明确地将其调用为。