流分析:源 'subquery' 只能在使用 'datediff' 函数的时间谓词中使用

Stream Analytics: Source 'subquery' can only be used in temporal predicate using 'datediff' function

我正在使用 WITH 通过两个子查询查询流分析中的数据。我想合并来自两个子查询的数据并将它们放入SQL。所以,我正在使用 JOIN 函数。

WITH subquery as (
    SELECT
        id as id,
        deviceId as deviceId,
        username as username,
        try_cast(localtime as datetime) as localtime,
        AC as AC, FM as FM, UC as UC, 
        DL as DL, DS as DS, DP as DP,
        LB as LB, ASTV as ASTV, MSTV as MSTV,
        ALTV as ALTV, MLTV as MLTV, Width as Width,
        Min as Min, Max as Max, Nmax as Nmax,
        Nzeros as Nzeros, Mode as Mode, Mean as Mean,
        Median as Median, Variance as Variance, Tendency as Tendency,
        EventProcessedUtcTime as EventProcessedUtcTime,
        Distress(AC,FM,UC,DL,DS,DP,1,LB,ASTV,MSTV,ALTV,MLTV,
            Width,Min,Max,Nmax,Nzeros,Mode,Mean,Median,Variance,
            Tendency,1,1,1,1,1,1,1,1,1,1,1,1) as resultFHR
    FROM
        iot
    ),

subquery2 as (
    SELECT
        id as id,
        deviceId as deviceId,
        username as username,
        try_cast(localtime as datetime) as localtime,
        rms,fmed,fpeak,sample_entropy,
        EventProcessedUtcTime as EventProcessedUtcTime,
        Labour("",1,1,1,"",rms,fmed,fpeak,sample_entropy,"","") as resultUC
    FROM
        iot
    )

SELECT
    id as id,
    deviceId as deviceId,
    username as username,
    localtime as localtime,
    AC as AC, FM as FM, UC as UC, 
    DL as DL, DS as DS, DP as DP,
    LB as LB, ASTV as ASTV, MSTV as MSTV,
    ALTV as ALTV, MLTV as MLTV, Width as Width,
    Min as Min, Max as Max, Nmax as Nmax,
    Nzeros as Nzeros, Mode as Mode, Mean as Mean,
    Median as Median, Variance as Variance, Tendency as Tendency,
    EventProcessedUtcTime as EventProcessedUtcTime,
    resultFHR.[classes] as distress,
    resultFHR.[probabilities] as distressProbability,
    resultUC.[classes] as labour,
    resultUC.[probabilities] as labourProbability
INTO
    sql
FROM
    subquery 
INNER JOIN 
    subquery2 ON subquery.id = subquery2. id 
              AND DATEDIFF(second, subquery, subquery2) BETWEEN 0 AND 20

它在最后一行抛出错误:

Source 'subquery' can only be used in temporal predicate using 'datediff' function.

Example:

SELECT input1.a, input2.b FROM input1 JOIN input2 ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10.

Please make sure there is no 'or' in temporal predicates.

我已经按照给定的例子做了,但是还是有错误。如何合并这两个子查询?

语法错误可能是由您在最后两行中的拼写错误引起的。尝试将 "subquerry" 替换为 "subquery",如下所示:

FROM
    subquery 
INNER JOIN 
    subquery2 ON subquery.id = subquery2.id 
              AND DATEDIFF(second, subquery, subquery2) BETWEEN 0 AND 20