我正在尝试在Azure数据工厂中实现一个数据流(类似于这个问题的答案中描述的工作流),它使用包含with语句的自定义SQL查询作为源(查询Azure SQL DB),如:
WITH a AS (
SELECT
--magic
)
SELECT
...
FROM a
...
会导致"语法错误"。ADF
错误但是在FROM语句中指定子查询,如:
SELECT ...
FROM (
SELECT
--magic
) AS a
...
工作得很好,但可能不是那么可读/可理解(特别是在多个堆叠子查询时)。
另一种解决方法是从with语句中获取子查询,并将其完全移动到ADF中的单独转换步骤;但是,对于许多小的子查询,这将产生相当多的开销/不透明性。
这就引出了一个问题:是ADF中可能的with语句,即使是这样,ADF允许的确切的sql语法规则是什么
?我在数据流文档中唯一能找到的是,ORDER by是不允许的,但没有提到可能适用的其他限制;在Stackoverflow上的单独问题表明,前面的例子递归查询也不支持。
希望能给点指点,谢谢!
我试图在我的Azure SQL数据库中重现一些样本数据的问题,然后将其用作我的数据流中的源数据集。同样的错误也被观察到。我尝试在查询开始时添加;
和go
关键字,但仍然得到相同的错误。
但是,您可以引用用户定义的函数,因此您可以将CTE嵌套在UDF中,然后从源选项中引用它。
请在这里找到可用的解决方案:为什么Synapse不能与我的查询一起工作?