微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure流分析-计算真实价值

如何解决Azure流分析-计算真实价值

我正在尝试使用以下查询对Azure Stream Analytics中的某个值进行计数:

WITH IoTData AS
( SELECT *,CAST(iothub.time AS datetime) AS time,TRY_CAST(iothub.value AS float) AS value,ref.AssetSignalTag AS assetsignaltag

    FROM iothub TIMESTAMP BY iothub.time

    JOIN masterdatasql ref 
    ON ref.[assetsignaltag] = iothub.assetsignaltag
    WHERE iothub.value IS NOT NULL
),HISTORY AS ( 
SELECT assetsignaltag,value,COUNT(*) AS Count
CASE
 WHEN value = 1 THEN 1
 ELSE 0
END AS ConditionResult,**LAG(IoTData.value) OVER (PARTITION BY IoTData.AssetSignalTag LIMIT DURATION(hour,1)) AS PrevIoUsValue**
--this lag is used to get rid of duplicate entries coming in every minute

FROM IoTData
)


SELECT
    time,assetsignaltag,HISTORY.ConditionResult,HISTORY.Count,HISTORY.PrevIoUsValue,**COUNT(*) OVER (PARTITION BY IoTData.assetsignaltag LIMIT DURATION(minute,30) WHEN HISTORY.ConditionResult=1) AS CountThirty,**
--this COUNT should only count when I get a HISTORY.ConditionResult = 1.
    AVG(HISTORY.ConditionResultAVG) OVER(PARTITION BY IoTData.assetsignaltag LIMIT DURATION(minute,10)) AS AverageOverTen

INTO eventhub
FROM IoTData 
INNER JOIN HISTORY
ON HISTORY.assetsignaltag = IoTData.assetsignaltag
AND DATEDIFF(millisecond,IoTData,HISTORY) BETWEEN 0 AND 500

问题是,当资产提交{0,1,0,1,0}时,而不是计数2,即提交的1的计数,我得到5,即总数另外,它将在第二条语句中将HISTORY.ConditionResult中的所有值设置为1,即使在WITH语句中为0。

这是否是HISTORY语句中的LAG函数的结果,如果是的话,我如何获得真实值的计数?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。