azure Потоковая аналитика - первый и последний запрос - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть полезная нагрузка, как показано ниже. Мне нужно получить первые отдельные значения партии для каждого 1-минутного периода. Пожалуйста, дайте мне знать, как добиться этого в потоковой аналитике, используя isfirst и lag или last

Вывод, например:

BATCH = 01, "2015-01-01T00: 00: 01.0000000Z" BATCH = 02, «2015-01-01T00: 00: 03.0000000Z», BATCH = 03, «2015-01-01T00: 00: 06.0000000Z», BATCH = 01, «2015-01-01T00: 00: 14.0000000Z», BATCH = 02, «2015-01-01T00: 00: 18.0000000Z» ДАТА = 03, «2015-01-01T00: 00: 22.0000000Z» ДАТА = 01, «2015-01-01T00: 00: 27.0000000Z» ДАТА = 01, «2015 -01-01T00: 00: 31.0000000Z "

Pay Load:
    [{
            "Payload": {
                "Make": "BATCH1",
                "VAL": "01",
                "TS": "2015-01-01T00:00:01.0000000Z"
            }
    },
    {
    "Payload": {
            "Make": "BATCH1",
            "VAL": "01",
            "TS": "2015-01-01T00:00:02.0000000Z"
        }
    },
    {
        "Payload": {
            "Make": "BATCH1",
            "VAL": "02",
            "TS": "2015-01-01T00:00:03.0000000Z"
        }
    },
    {
        "Payload": {
            "Make": "BATCH1",
            "VAL": "02",
            "TS": "2015-01-01T00:00:04.0000000Z"
        }
    },
    {
        "Payload": {
            "Make": "BATCH1",
            "VAL": "02",
            "TS": "2015-01-01T00:00:05.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH1",
            "VAL": "03",
            "TS": "2015-01-01T00:00:06.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH1",
            "VAL": "03",
            "TS": "2015-01-01T00:00:07.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH1",
            "VAL": "03",
            "TS": "2015-01-01T00:00:10.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH1",
            "VAL": "03",
            "TS": "2015-01-01T00:00:11.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH1",
            "VAL": "03",
            "TS": "2015-01-01T00:00:12.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "01",
            "TS": "2015-01-01T00:00:13.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "01",
            "TS": "2015-01-01T00:00:14.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "01",
            "TS": "2015-01-01T00:00:15.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "01",
            "TS": "2015-01-01T00:00:16.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "01",
            "TS": "2015-01-01T00:00:17.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "02",
            "TS": "2015-01-01T00:00:18.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "02",
            "TS": "2015-01-01T00:00:20.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH2",
            "VAL": "02",
            "TS": "2015-01-01T00:00:21.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH3",
            "VAL": "02",
            "TS": "2015-01-01T00:00:22.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH3",
            "VAL": "02",
            "TS": "2015-01-01T00:00:23.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH3",
            "VAL": "02",
            "TS": "2015-01-01T00:00:24.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH3",
            "VAL": "02",
            "TS": "2015-01-01T00:00:25.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH3",
            "VAL": "02",
            "TS": "2015-01-01T00:00:26.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH4",
            "VAL": "01",
            "TS": "2015-01-01T00:00:27.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH4",
            "VAL": "01",
            "TS": "2015-01-01T00:00:28.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH4",
            "VAL": "01",
            "TS": "2015-01-01T00:00:29.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH4",
            "VAL": "01",
            "TS": "2015-01-01T00:00:30.0000000Z"
        }

    },
    {"Payload": {
            "Make": "BATCH5",
            "VAL": "01",
            "TS": "2015-01-01T00:00:31.0000000Z"
        }

    }
    ]

1 Ответ

0 голосов
/ 17 февраля 2020

Я попытался обобщить ваши требования следующим образом:

Пример ввода, в минутном окне может быть несколько изменений VAL для каждого идентификатора партии:

Марка: batch1, Val : 01, Марка: batch1, val: 01, Марка: batch1, val: 02, Марка: batch1, val: 02 × ×, ×, ×, ×: × Марка: batch2, val: 01, Марка: batch2, val: 01, Xxxxxxxxxx

Требуемый выходной сигнал, только val для каждого изменения пакета и без дубликатов:

Марка: batch1, val: 01 Марка: batch1, val: 02 Марка: batch2, val: 01

Ответ разделен на 2 части:

1. Соберите данные за период c, вы можете использовать встроенный Функция переворачивания окна , как показано ниже:

2.Нет встроенной функции ASA, например, отдельной для фильтрации дубликатов. Я бы предложил использовать GROUP BY, MAX, ASA UDF ( ссылка ) на приближение к вашему результату.

SQL:

 SELECT g.Payload.Make,g.Payload.VAL,max(udf.convertdate(g.Payload.TS)) as TS
    FROM geoinput g TIMESTAMP BY g.Payload.TS
    GROUP BY g.Payload.Make,g.Payload.VAL, TumblingWindow(Duration(minute, 1))

Тестовый вывод:

enter image description here

Кстати, я просто использую ниже код внутри UDF

var date = new Date(datetime);
    return date.getTime();

Другой рабочий Таким образом, вы можете собрать все данные в течение 1 минуты, а затем использовать функцию Azure в качестве вывода. В функции Azure вы можете обрабатывать данные так, как вам удобно. Например, используйте JSON объект для хранения данных. Структура Key-Value может фильтровать повторяющиеся строки.

...