【问题标题】:WITH-statements in SQL Source-Queries in Azure Data Factory & Possible Syntax RulesAzure 数据工厂中 SQL 源查询中的 WITH 语句和可能的语法规则
【发布时间】:2021-10-08 13:57:14
【问题描述】:

我正在尝试在 Azure 数据工厂中实现一个数据流(类似于 in the answer on this question 描述的工作流),它使用 custom SQL-query containing a WITH-statement, as a source(查询 Azure SQL DB),例如:

WITH a AS (
    SELECT
    --magic
)

SELECT
    ...
FROM a
    ...

导致"incorrect syntax" error in ADF

但是在 FROM 语句中指定子查询,例如:

SELECT ...
FROM (
    SELECT
    --magic
) AS a
...

工作正常,但可以说不那么可读/可理解(尤其是多个堆叠子查询)。

另一种解决方法是从 WITH 语句中获取子查询,并将其完全移至 ADF 中的单独转换步骤;但是对于很多小的子查询,这会产生相当多的开销/不透明。

这引出了一个问题:在 ADF 中是否可以使用 WITH 语句,即使可以,ADF 允许的确切 SQL 语法规则是什么

我唯一能找到的in the Data Flow docs 是不允许使用 ORDER BY,但没有提及可能适用的其他限制; separate questions here on Stackoverflow suggest that fore example recursive queries are also not supported.

希望得到一些指点,谢谢!

【问题讨论】:

  • 您是否在 CTE 声明之前正确终止了您的声明?我想不会。
  • 我不确定你的意思,你能详细说明一下吗?

标签: sql-server azure tsql azure-sql-database azure-data-factory


【解决方案1】:

我尝试使用 Azure SQL 数据库中的一些示例数据重现该问题,然后将其用作数据流中的源数据集。已观察到相同的错误。我尝试在查询开始时添加 ;go 关键字,但仍然出现相同的错误。

尽管您可以引用用户定义的函数,因此您可以将 CTE 嵌套在 UDF 中,然后从 Source Options 中引用它。

请在此处找到可用的解决方法:Why Synapse is not working with my query?

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 2023-01-04
    相关资源
    最近更新 更多