截断到分钟

Truncated to the minute

我在 "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”

这是我的结果文件:

另一方面,我想根据 "turnstile" 和基于分钟的 SlidingWindows 对我的结果进行分组。

但现在我在第一列中有 second 和 mi-sec。

也许将两者结合起来 - 使用 DatePart and composing it back using DateTimeFromParts 分解日期并使用零表示秒和毫秒。

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

或者您想要 HoppingWindow 而不是 SlidingWindow?以便 windows 与 1 分钟边界对齐:

谢谢杰森

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

        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))