SQL数据仓库 - 无法创建表值函数

时间:2016-07-18 17:55:52

标签: azure-sqldw

背景:

我正在将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返回类型是错误,因为我能够创建返回单个值的函数。

我不确定是否支持表值函数,如果是,我需要做些什么才能让它们正常工作。

2 个答案:

答案 0 :(得分:1)

Azure SQL数据仓库当前不支持内联或多语句表值函数。这时只有标量函数。与SQL Server相比,还有一个额外的限制。标量函数体不能引用表。有关更多详细信息,请参阅功能正文部分:

function_body msdn

指定一系列不引用数据库数据(表或视图)的Transact-SQL语句定义函数的值。

根据您的情况,您需要使用替代方法;带有一些额外元数据的proc或显式查询。

答案 1 :(得分:0)

正如JRJ所述,不允许使用非标量类型,游标和表格。我们将更新文档以明确地将其调用为。