截断到一分钟

时间:2018-06-08 20:15:31

标签: azure azure-stream-analytics

我已在“Azure Stream Analytics”工作中编写此代码。

SELECT
    DateAdd(minute,-1,System.TimeStamp) AS WinStart,
    System.TimeStamp AS WinEnd,
    turnstile,
    COUNT(*) AS entries
INTO [output-blobstorage]
FROM [input-iot] TIMESTAMP BY entrytime
GROUP BY turnstile,  SlidingWindow (duration(second, 60))

我希望将“WinStart”和“WinEnd”截断为分钟。

例如:如果WinStart是“2018-06-08T18:15:01.5160000Z”,我想要“2018-06-08T18:15:00.0000000Z”

这是我的结果文件:

enter image description here

另一方面,我想把我的结果分组为“旋转门”和SlidingWindows,分钟。

但是现在我在第一列中都有了secound和mi-sec。

2 个答案:

答案 0 :(得分:1)

也许组合两个 - 使用DatePart分解日期并使用DateTimeFromParts将其组合回来,并使用零作为秒和毫秒。

DATETIMEFROMPARTS(DATEPART(yyyy,WinStart), 
     DATEPART(mm,WinStart),DATEPART(dd,WinStart), DATEPART(hh,WinStart), 
     DATEPART(mi,WinStart), 0, 0) As WinStartRounded

或者你想要HoppingWindow而不是SlidingWindow?这样窗户就会对齐1分钟的边界:

谢谢,杰森

答案 1 :(得分:0)

我通过以下查询解决了这个问题

        SELECT
                DATETIMEFROMPARTS(
                    DATEPART(yyyy,DateAdd(minute,-1,System.TimeStamp)), 
                    DATEPART(mm,DateAdd(minute,-1,System.TimeStamp)),
                    DATEPART(dd,DateAdd(minute,-1,System.TimeStamp)), 
                    DATEPART(hh,DateAdd(minute,-1,System.TimeStamp)), 
                    DATEPART(mi,DateAdd(minute,-1,System.TimeStamp)), 0, 0)
                  As WinStart,
                DATETIMEFROMPARTS(
                    DATEPART(yyyy,System.TimeStamp), 
                    DATEPART(mm,System.TimeStamp),
                    DATEPART(dd,System.TimeStamp), 
                    DATEPART(hh,System.TimeStamp), 
                    DATEPART(mi,System.TimeStamp), 0, 0) As WinEnd,
                turnstile,
                COUNT(*) AS entries
        INTO [output-blobstorage]
        FROM [input-iot] TIMESTAMP BY entrytime
        GROUP BY 
            turnstile, 
            HoppingWindow (duration(second, 60),hop(second, 60))

enter image description here