0

背景:

我正在将 SQL Server 数据仓库迁移到 Azure SQL 数据仓库。该数据库是 SSAS OLAP 多维数据集的源。

一些度量值组已被分区并依赖表值函数来查询分区的相关数据。

问题:

我无法在 Azure-DWH 中创建这些函数。

示例函数:创建函数 udm.MyFunction() 以返回表的形式返回 (select getdate(), getutcdate())

错误消息:消息 104051,级别 16,状态 1,第 46 行不支持的数据类型错误。语句引用了并行数据仓库中不支持的数据类型,或者存在产生不受支持的数据类型的表达式。修改语句并重新执行。

MSDN 链接:https : //msdn.microsoft.com/en-US/library/mt203952.aspx 列出了“return_data_type”并提到“是标量用户定义函数的返回值。对于 Transact-SQL 函数,所有允许 SQL 数据仓库中支持的标量数据类型。时间戳(行版本)数据类型不是受支持的类型。

我的假设是 TABLE 返回类型是错误,因为我已经能够创建返回单个值的函数。

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

4

2 回答 2

1

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

函数体(msdn

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

对于您的情况,您将需要使用另一种方法;带有一些附加元数据的过程或显式查询。

于 2016-07-19T11:29:09.117 回答
0

正如 JRJ 所说,非标量类型,游标和表,是不允许的。我们将更新 out 文档以明确地调用它。

于 2016-07-20T19:41:21.533 回答