【问题标题】:Reuse the result from subquery in Azure Stream Analytics Query在 Azure 流分析查询中重用子查询的结果
【发布时间】: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 完全陌生。

【问题讨论】:

    标签: sql azure azure-stream-analytics


    【解决方案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 调用。您是否对它进行了独立测试以确保它返回一些值?
    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多