在Azure流分析中结合UNION和WITH语句

问题描述

我尝试将不同的来源与Azure Stream Analytics上的UNION语句结合使用。 通常,这可以正常工作:

SELECT
    date,value
FROM source1

UNION 

SELECT
    date,value
FROM source2

但是现在我需要一些需要WITH语句的计算,所以我希望这会起作用:

SELECT
    date,value
FROM source1

UNION 

(WITH tempTab AS (
    SELECT
        date,value
    FROM source2
SELECT
    date,value
FROM tempTab
)

(我知道此WITH语句的示例完全是愚蠢的,但让我们假设我有一个现实世界中的情况是有必要的。让我们进一步假设WITH语句是独立运行的,即如果我省略了首先选择,直到UNION之后为止

在此版本中,我收到一条通知,指出“ WITH”语句附近存在语法错误。有没有办法解决语法错误,并使WITH和UNION语句在Stream Analytics上一起工作?

解决方法

对于当前的ASA语法/语义,与T-SQL不同,WITH子句只允许在查询中首先出现。

您只能执行“将step1用作(...),step2用作(...),...”,然后在select子句中使用step1,step2,...中的任何一个作为from子句中的源。

联合可以在WITH后面的select子句中使用,也可以在单个步骤定义中使用。