данные перезаписываются при выводе данных из потоковой аналитики в powerbi - PullRequest
0 голосов
/ 20 декабря 2018

В последнее время я работаю с запросами Stream Analytics с PowerBI в качестве выходного приемника.Я сделал простой запрос, который извлекает общее количество http-кодов ответов запросов нашего веб-сайта с течением времени и группирует их по дате и коду ответа.Входные данные извлекаются из учетной записи хранения, в которой хранится BLOB-хранилище.Это мой запрос:

SELECT
    DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0) as datum,     
    request.ArrayValue.responseCode,
    count(request.ArrayValue.responseCode)
INTO
  [requests-httpresponsecode]
FROM
  [cvweu-internet-pr-sa-requests] R TIMESTAMP BY R.context.data.eventTime
OUTER APPLY GetArrayElements(R.request) as request
GROUP BY DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0), request.ArrayValue.responseCode, System.TimeStamp

Поскольку 3 сентября 2018 года был запущен непрерывный экспорт, я выбрал время начала работы 3 сентября 2018 года. Так как до сегодняшнего дня меня интересует статистика, я не включилинтервал дат, поэтому я ожидаю увидеть данные с 3 сентября 2018 года по настоящее время (20 декабря 2018 года).Работа выполняется без ошибок, и я выбрал PowerBI в качестве выходного приемника.Сразу же я увидел, что график распространяется с 3 сентября, сгруппированный по дням и счету.Все идет нормально.Несколько дней спустя я заметил, что выходной набор данных начинался не с 3 сентября, а с 2 декабря до настоящего времени.Видимо данные перезаписываются.

Следующая ссылка говорит:

https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-power-bi-dashboard

" defaultRetentionPolicy: BasicFIFO: данные в формате FIFO, максимум 200 000 строк. "

Но моя выходная таблица не имеет близко к 200.000 строк:

datum,count,responsecode
2018-12-02 00:00:00,332348,527387
2018-12-03 00:00:00,3178250,3282791
2018-12-04 00:00:00,3170981,4236046
2018-12-05 00:00:00,2943513,3911390
2018-12-06 00:00:00,2966448,3914963
2018-12-07 00:00:00,2825741,3999027
2018-12-08 00:00:00,1621555,3353481
2018-12-09 00:00:00,2278784,3706966
2018-12-10 00:00:00,3160370,3911582
2018-12-11 00:00:00,3806272,3681742
2018-12-12 00:00:00,4402169,3751960
2018-12-13 00:00:00,2924212,3733805
2018-12-14 00:00:00,2815931,3618851
2018-12-15 00:00:00,1954330,3240276
2018-12-16 00:00:00,2327456,3375378
2018-12-17 00:00:00,3321780,3794147
2018-12-18 00:00:00,3229474,4335080
2018-12-19 00:00:00,3329212,4269236
2018-12-20 00:00:00,651642,1195501

РЕДАКТИРОВАТЬ: я создал входной источник STREAM в соответствии с https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-quick-create-portal. Я также могу создать вход REFERENCE, но это делает мой запрос недействительным, так как APPLY и GROUPBY не поддерживаются, и я также думаю, что ввод STREAM - это то, что я хочу в соответствии с https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-add-inputs.

Что мне не хватает?Это мой запрос?

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Вы правы, что Azure Stream Analytics должен создавать набор данных "PushStreaming" или "Hybrid".Можете ли вы подтвердить, что ваш набор данных правильно настроен как «Гибридный» (вы можете проверить этот атрибут даже после создания , как показано здесь )?

Если это правильный тип, можете ли вы уточнитьследующее:

  1. Меняется ли схема ваших данных?Например, если вы отправите данные {a: 1, b: 2}, а затем {c: 3, d: 4}, Azure Stream Analytics попытается изменить схему вашей таблицы, что может сделать недействительными более старые данные.

  2. КакВы подтверждаете количество строк в наборе данных?

0 голосов
/ 04 января 2019

Похоже, мой запрос был проблемой.Мне пришлось использовать TUMBLINGWINDOW (день, 1) вместо System.TimeStamp .
TUMBLINGWINDOW и System.TimeStamp производят точно такой же вывод диаграммы на внешнем интерфейсе, но, похоже, обрабатываются другим способом в бэкэнде.Это никак не отражалось на интерфейсе, так что это сбивало с толку.Я подозреваю, что что-то происходит в бэкэнде из-за способа обработки запроса, когда не используется TUMBLINGWINDOW , и вы случайно достигли предела 200К строк на набор данных раньше, чем ожидалось.Приведенный ниже запрос приводит к ожидаемому результату.

SELECT
    request.ArrayValue.responseCode,
    count(request.ArrayValue.responseCode),
    DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0) as date     
INTO
  [requests-httpstatuscode]
FROM
  [cvweu-internet-pr-sa-requests] R TIMESTAMP BY R.context.data.eventTime
OUTER APPLY GetArrayElements(R.request) as request
GROUP BY DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0),
        TUMBLINGWINDOW(day,1), 
        request.ArrayValue.responseCode

Поскольку мы говорим, что моя работа по потоковой аналитике проходит гладко и выдает ожидаемый результат с 3 сентября до сих пор без перезаписи данных.

0 голосов
/ 20 декабря 2018

Похоже, вы транслируете на Потоковое набор данных .Потоковые наборы данных не хранят данные в базе данных, а хранят только последний час данных.Если вы хотите сохранить данные, передаваемые к нему, то вы должны включить опцию Historic data analysis при создании набора данных:

enter image description here

Это создаст PushStreaming набор данных (он же Hybrid) с политикой хранения basicFIFO (т.е. хранится около 200k-210k записей).

...