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

Posted

技术标签:

【中文标题】在 Azure 流分析中结合 UNION 和 WITH 语句【英文标题】:Combine UNION and WITH statement on Azure stream analytics 【发布时间】:2020-10-09 14:01:29 【问题描述】:

我尝试将不同的来源与 Azure 流分析上的 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 语句在流分析上协同工作?

【问题讨论】:

【参考方案1】:

使用当前的 ASA 语法/语义,与 T-SQL 不同,WITH 子句只允许出现在查询的最前面。

您只能执行“with step1 as (...), step2 as (...), ...”,后跟 select 子句,使用 step1,step2,... 作为 from 子句中的源。

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

【讨论】:

好的,重组成功了:我把“WITH”语句放在前面,其余的放在后面。不是它工作正常。

以上是关于在 Azure 流分析中结合 UNION 和 WITH 语句的主要内容,如果未能解决你的问题,请参考以下文章

天蓝色流分析同时结合数据

在 Azure 流分析查询中同时使用数组和记录类型

在 Azure 流分析中访问数组元素

使用适用于 .NET 的 Azure 流分析 API 设置和运行分析作业

在 Azure 中运行的流分析查询中的语法问题:列名无效:“有效负载”

用于部署和禁用 Azure 流分析服务的 ARM 模板