0

最後の関数 ( https://msdn.microsoft.com/en-us/library/azure/mt421186.aspx ) を使用しようとすると。次のエラーが表示されます。

クエリのコンパイルに失敗しました。

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 サンプルの関数と非常によく似ているため、なぜ問題があるのか​​わかりません。

4

1 に答える 1

1

クエリで [externaltemp] を使用していますが、group by には含まれていません。それが理由です。また、「最後の」関数はその中に集計を許可しないため、以下ではうまくいきません

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

このように、クエリを2つのステップに分割することで実現できます

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
于 2015-11-16T18:52:02.190 に答える