在常规SQL Server数据库中,我具有返回表类型的功能,
CREATE FUNCTION [dbo].[GetSomeStuff]
(
@UserID INT
)
RETURNS TABLE
AS
RETURN
(...
该函数从各种存储过程中调用。我想将存储过程连同此功能一起迁移到Azure SQL数据仓库,但是不支持TABLE类型。
有人能告诉我该怎么做,而不是在这里返回一个表类型的函数吗?
答案 0 :(得分:1)
是的,不支持表类型。
您可以使用CTE,这是在我的DW上运行的简单查询:
SHELL := /bin/bash
target:
sed -e '1i\'$$'\n''line to be added' file
也就是说,我经常发现CTE在复杂查询中的表现非常差,并且更喜欢将CTE单独实现,以便我可以控制其结构和分布。
我认为物化是您问题的正确答案。考虑使用在存储过程中创建的临时表来代替函数调用。 ASDW临时表是会话范围的,并保留在创建它们的过程之外。
https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-temporary