Azure 流分析 - 编译查询失败

Azure stream analyics - Compiling query failed

当我尝试使用最后一个函数时 (https://msdn.microsoft.com/en-us/library/azure/mt421186.aspx)。我收到以下错误:

Compiling query failed.

SELECT
    deviceId
    ,System.TimeStamp as timestamp
    ,avg(events.externaltemp) as externaltemp
    ,LAST(System.Timestamp) OVER (PARTITION BY deviceId LIMIT DURATION(second, 1) when [externaltemp] is not null ) as Latest
INTO
    [powerBI]
FROM
    [EventHub] as events timestamp by [timestamp]

GROUP BY deviceId, TumblingWindow(second,1)

我的最后一个函数看起来与msdn示例中的非常相似,所以我不确定为什么会出现问题。

您在查询中使用了 [externaltemp],但它未包含在分组依据中。这就是原因。并且 "last" 函数不允许在其内部进行聚合,因此下面的方法也无法正常工作

LAST(System.Timestamp) OVER (PARTITION BY deviceId LIMIT DURATION(second, 1) when avg([externaltemp]) is not null ) as Latest

可以通过将查询分成两步来实现,像这样

with DeviceAggregates
as
(
SELECT
    System.TimeStamp as [Timestamp],
    deviceId,
    avg(events.externaltemp) as [externaltemp]
FROM
    [EventHub] as events timestamp by [timestamp]
GROUP BY 
    deviceId, 
    TumblingWindow(second,1)
),

DeviceAggregatesWithLast as
(
select 
    *,
    last([Timestamp]) over (partition by deviceId limit duration(second,1) when [externaltemp] is not null) [LastTimeThereWasANonNullTemperature] 
from 
    DeviceAggregates
)


select * 
INTO
    [powerBI]
from
    DeviceAggregatesWithLast