Azure 数据仓库中的“Cursor”和“FOR XML”子句

Posted

技术标签:

【中文标题】Azure 数据仓库中的“Cursor”和“FOR XML”子句【英文标题】:"Cursor" and "FOR XML" clause in Azure data warehouse 【发布时间】:2021-08-04 16:54:40 【问题描述】:

在 Azure 数据仓库中创建存储过程时,“光标”和“FOR XML”出现错误。所以想知道 Azure 数据仓库是否支持它们。如果不是,那么有什么替代方案。

此处附上带有错误消息图片的示例代码。

【问题讨论】:

【参考方案1】:

在 Azure Synapse 专用 SQL 池(以前称为 Azure SQL 数据仓库)中,per the documentation 不支持 FOR XML 或游标。对于游标,要么将它们转换为使用受支持的WHILE 循环,要么重构代码以使用基于集合的方法。另一种选择是使用外部的东西,例如 Azure 数据工厂或 Synapse Pipelines,并使用 For Each 循环。另一种选择是使用附近的 Azure SQL DB 进行一些预处理。您应该知道 Azure Synapse Analytics 的 MPP 架构不适合这种基于行的处理,并且您应该记住它是一个大数据平台,适用于大量数据、数百万、数十亿行和基于集合的数据方法应该是首选。

如果您只是使用FOR XML 来执行这种低俗的字符串连接技巧,那么您应该使用STRING_AGG 而不是 Synapse 完全支持的。有关最近的示例,请参阅 this answer。如果您实际上是在生成 XML,那么您将需要找到一种替代方法,例如附近的 Azure SQL DB。

【讨论】:

以上是关于Azure 数据仓库中的“Cursor”和“FOR XML”子句的主要内容,如果未能解决你的问题,请参考以下文章

SSIS包中的错误将数据加载到azure数据仓库中

在 Azure Synapse Analytics(Azure SQL 数据仓库)中创建外部数据源到 Oracle

Azure SQL 数据仓库计算列错误

Azure 文档 (SQL 数据仓库, Azure SQL 数据库文档)

将 Parquet 文件从 Azure 数据湖存储帐户复制到 Synapse 数据仓库表失败

Azure SQL 数据仓库 ADO.Net 错误代码