在 Azure 流分析查询中重用子查询的结果
Posted
技术标签:
【中文标题】在 Azure 流分析查询中重用子查询的结果【英文标题】:Reuse the result from subquery in Azure Stream Analytics Query 【发布时间】:2017-11-29 15:41:08 【问题描述】:我正在使用 Azure 流分析,但在查询部分遇到了一些问题。这是我的代码。
WITH subquery as (
SELECT
messageId,
deviceId,
temperature,
humidity,
EventProcessedUtcTime,
DemoML(temperature, humidity) as result1
from DemoInput
)
SELECT
messageId as messageId,
deviceId as deviceId,
temperature as temperature,
humidity as humidity,
EventProcessedUtcTime as EventProcessedUtcTime,
result1.[Scored Labels] as result,
result1.[Scored Probabilities] as resultProbability
INTO
[DemoOutput]
FROM
[subquery]
SELECT
result1
INTO
[c2d]
FROM
[subquery]
DemoML 是一个返回结果的函数。我想将 result1 放入两个不同的输出中。但我只设法将 result1 放入一个输出中。我怎样才能做到这一点?我对 SQL 完全陌生。
【问题讨论】:
【参考方案1】:您可以使用INSERT ... OUTPUT ... INTO ... SELECT
插入两次:
WITH subquery as (
SELECT
messageId,
deviceId,
temperature,
humidity,
EventProcessedUtcTime,
DemoML(temperature, humidity) as result1
from DemoInput
)
INSERT INTO target_1(col1,...)
OUTPUT inserted.col1, ...
INTO target_2(col1, ..)
SELECT
messageId as messageId,
deviceId as deviceId,
temperature as temperature,
humidity as humidity,
EventProcessedUtcTime as EventProcessedUtcTime,
result1.[Scored Labels] as result,
result1.[Scored Probabilities] as resultProbability
FROM [subquery];
简化:
CREATE TABLE t1(i INT);
CREATE TABLE t2(i INT);
CREATE TABLE src(i INT);
INSERT INTO src(i) VALUES(10),(20);
INSERT INTO t1(i) -- target one
OUTPUT inserted.i
INTO t2(i) -- target two
SELECT i
FROM src;
DBFiddle Demo
【讨论】:
在这种情况下,我是否将相同的数据放入两个不同的目标? @SamTew 是的,只需检查演示链接,但如果需要,您可以操作列列表。 如果我想把两组不同的数据放到两个表中怎么办? @SamTew 然后你可以使用INSERT over DML
语法。你原来的问题已经解决了。
@SamTew 我在这里看到的唯一区别是 Azure ML 调用。您是否对它进行了独立测试以确保它返回一些值?以上是关于在 Azure 流分析查询中重用子查询的结果的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure 中运行的流分析查询中的语法问题:列名无效:“有效负载”
使用流分析作业查询从 EventHub 中过滤 Azure 事件
如何在 Azure 流分析查询中检查 null Json 属性?