Усечено до минуты - PullRequest
0 голосов
/ 08 июня 2018

Я написал этот код в моей работе «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

В другой руке я хотел бы сгруппировать по моему результату по "турникету" и скользящим окнам, основанным на минутах.

Но теперь у меня есть secound и mi-сек в обоих первых столбцах.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Я исправил эту проблему с помощью следующего запроса

        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

0 голосов
/ 08 июня 2018

Возможно объединить два: разложение даты с использованием 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 минута:

Спасибо, Джейсон

...