SQL 数据仓库 - 无法创建 table 值函数
SQL Data Warehouse - unale to create table-valued functions
背景:
我正在将 SQL 服务器数据仓库迁移到 Azure SQL 数据仓库。该数据库是 SSAS OLAP 多维数据集的源。
一些度量值组已经分区,并依赖table值函数来查询分区的相关数据。
问题:
我无法在 Azure-DWH 中创建这些函数。
示例函数:
创建函数 udm.MyFunction () returns table as return ( select getdate(), getutcdate() )
错误信息:
消息 104051,级别 16,状态 1,第 46 行
不支持的数据类型错误。语句引用了并行数据仓库中不支持的数据类型,或者存在生成不受支持的数据类型的表达式。修改语句重新执行
MSDN link:https://msdn.microsoft.com/en-US/library/mt203952.aspx
列出 "return_data_type" 并提到 "Is the return value of a scalar user-defined function. For Transact-SQL functions, all scalar data types supported in SQL Data Warehouse are allowed. The timestamp (rowversion) data type is not a supported type."
我的假设是 TABLE return 类型是错误的,因为我已经能够创建函数 returning 单个值。
我不确定是否支持 table-values 函数,如果支持,我需要做什么才能让它们正常工作。
Azure SQL 数据仓库当前不支持内联或多语句 table 值函数。此时只有标量函数。与 SQL 服务器相比,还有一个额外的限制。标量函数体不能引用 table。详情请参考函数体部分:
function_body (msdn)
指定不引用数据库数据(table或视图)的一系列 Transact-SQL 语句定义函数的值。
对于您的情况,您需要使用替代方法;带有一些额外元数据或显式查询的过程。
正如 JRJ 所述,非标量类型游标和 table 是不允许的。我们将更新文档以明确调用它。
背景:
我正在将 SQL 服务器数据仓库迁移到 Azure SQL 数据仓库。该数据库是 SSAS OLAP 多维数据集的源。
一些度量值组已经分区,并依赖table值函数来查询分区的相关数据。
问题:
我无法在 Azure-DWH 中创建这些函数。
示例函数: 创建函数 udm.MyFunction () returns table as return ( select getdate(), getutcdate() )
错误信息: 消息 104051,级别 16,状态 1,第 46 行 不支持的数据类型错误。语句引用了并行数据仓库中不支持的数据类型,或者存在生成不受支持的数据类型的表达式。修改语句重新执行
MSDN link:https://msdn.microsoft.com/en-US/library/mt203952.aspx 列出 "return_data_type" 并提到 "Is the return value of a scalar user-defined function. For Transact-SQL functions, all scalar data types supported in SQL Data Warehouse are allowed. The timestamp (rowversion) data type is not a supported type."
我的假设是 TABLE return 类型是错误的,因为我已经能够创建函数 returning 单个值。
我不确定是否支持 table-values 函数,如果支持,我需要做什么才能让它们正常工作。
Azure SQL 数据仓库当前不支持内联或多语句 table 值函数。此时只有标量函数。与 SQL 服务器相比,还有一个额外的限制。标量函数体不能引用 table。详情请参考函数体部分:
function_body (msdn)
指定不引用数据库数据(table或视图)的一系列 Transact-SQL 语句定义函数的值。
对于您的情况,您需要使用替代方法;带有一些额外元数据或显式查询的过程。
正如 JRJ 所述,非标量类型游标和 table 是不允许的。我们将更新文档以明确调用它。