Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как анализировать данные телефонных звонков с помощью Azure Stream Analytics. Данные телефонного звонка, созданные клиентским приложением, содержат мошеннические звонки, обнаруженные заданием Stream Analytics. Вы можете использовать методы из этого руководства для других типов обнаружения мошенничества, таких как мошенничество с кредитной картой или кража удостоверений.
В этом руководстве вы выполните следующие задачи:
- создание примера данных телефонных звонков и их отправка в Центры событий Azure;
- Создать задание Stream Analytics.
- настройка входных и выходных данных для задания;
- определение запросов для фильтрации звонков, осуществляемых в мошеннических целях;
- Протестируйте и запустите задание.
- визуализация результатов в Power BI.
Предварительные требования
Прежде чем начать, выполните следующие действия.
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
- Загрузите приложение генератора событий телефонных вызововTelcoGenerator.zip из Центра загрузки Майкрософт или получите исходный код на сайте GitHub.
- Вам нужна учетная запись Power BI .
Вход в Azure
Войдите на портал Azure.
Создание концентратора событий
Прежде чем Stream Analytics сможет проанализировать поток мошеннических вызовов, необходимо отправить некоторые примеры данных в концентратор событий. В этом руководстве вы отправляете данные в Azure с помощью Центры событий Azure.
Следуйте инструкциям ниже, чтобы создать концентратор событий и отправить в него данные вызовов:
Войдите на портал Azure.
Выберите все службы в меню слева, выберите Интернет вещей, наведите указатель мыши на центры событий и нажмите кнопку +(Добавить).
На странице "Создание пространства имен" выполните следующие действия.
Выберите подписку Azure, в которой нужно создать концентратор событий.
Для группы ресурсов выберите "Создать" и введите имя группы ресурсов. Пространство имен Центров событий создается в этой группе ресурсов.
Для имени пространства имен введите уникальное имя пространства имен Центров событий.
В поле "Расположение" выберите регион, в котором нужно создать пространство имен.
Для ценовой категории выберите "Стандартный".
В нижней части страницы выберите Review + create (Проверить и создать).
На странице "Проверка и создание" мастера создания пространства имен выберите "Создать" в нижней части страницы после просмотра всех параметров.
После успешного развертывания пространства имен выберите Перейти к ресурсу, чтобы перейти на страницу Пространство имен Центров событий.
На странице пространства имен Центров событий выберите +Концентратор событий на панели команд.
На странице Создание центра событий введите имя концентратора событий. Установите для параметра Количество разделов значение 2. Используйте параметры по умолчанию в оставшихся параметрах и выберите "Просмотр и создание".
На странице Просмотр и создание выберите Создать в нижней части страницы. Подождите, пока развертывание не будет успешно завершено.
Предоставление доступа к концентратору событий и получение строки подключения
Чтобы приложение могло отправлять данные в Центры событий Azure, в концентраторе событий должна быть политика, обеспечивающая доступ. Политика доступа создает строку подключения, которая включает сведения об авторизации.
На странице пространства имен Центров событий выберите политики общего доступа в меню слева.
Выберите RootManageSharedAccessKey из списка политик.
Затем нажмите кнопку копирования рядом со строкой подключения — первичный ключ.
Вставьте строку подключения в текстовый редактор. Эта строка подключения вам понадобится в следующем разделе.
Строка подключения выглядит следующим образом:
Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>Обратите внимание, что строка подключения содержит несколько пар "ключ-значение", разделенных точкой с запятой: Endpoint, SharedAccessKeyName и SharedAccessKey.
Запуск приложения генератора событий
Перед запуском приложения TelcoGenerator необходимо настроить его для отправки данных в созданный ранее концентратор событий Azure.
Извлеките содержимое файла TelcoGenerator.zip.
Откройте файл
TelcoGenerator\TelcoGenerator\telcodatagen.exe.configв текстовом редакторе по своему выбору. Файлов с расширением.configнесколько, поэтому убедитесь, что открываете нужный файл.Обновите элемент
<appSettings>в файле конфигурации, указав следующие сведения:- Задайте значение ключа EventHubName именем концентратора событий, созданного в предыдущем разделе.
- Установите значение ключа Microsoft.ServiceBus.ConnectionString в строку подключения к пространству имен. Если вы используете строку подключения к узлу событий, а не к пространству имен, удалите значение
EntityPath(;EntityPath=myeventhub) в конце. Обязательно удалите точку с запятой перед значением EntityPath.
Сохраните файл.
Далее откройте командное окно и перейдите в папку, в которой распаковано приложение TelcoGenerator. Затем введите следующую команду:
.\telcodatagen.exe 1000 0.2 2Эта команда принимает следующие параметры:
- Число записей данных звонков в час.
- Вероятность мошенничества, которая представляет частоту моделирования приложением мошеннических вызовов. Значение 0,2 означает, что около 20% записей звонков выглядят мошенническими.
- Продолжительность в часах, которая соответствует количеству часов, на протяжении которых должно выполняться приложение. Вы также можете в любое время остановить выполнение приложения, завершив процесс (CTRL+C) в командной строке.
Через несколько секунд приложение запустит отображение записей вызовов на экране, так как будет отправлять их в концентратор событий. Данные телефонных звонков содержат следующие поля:
Запись Определение CallrecTime Отметка времени начала вызова. SwitchNum Телефонный переключатель, используемый для совершения вызова. В этом примере переключатели выражены строками, представляющими страну или регион происхождения (США, Китай, Соединенное Королевство, Германия или Австралия). CallingNum Номер телефона звонящего. CallingIMSI Идентификатор абонента международной мобильной связи (IMSI). Это уникальный идентификатор звонящего. CalledNum Номер телефона получателя. CalledIMSI Международный идентификатор мобильного абонента (IMSI). Это уникальный идентификатор получателя звонка.
Создание задания для Stream Analytics
Теперь, когда у вас есть поток событий звонков, можно создать задание Stream Analytics, которое считывает данные из концентратора событий.
Чтобы создать задание Stream Analytics, перейдите на портал Azure.
Выберите все службы в меню слева, найдите задания Stream Analytics, наведите указатель мыши на плитку заданий Stream Analytics, а затем нажмите кнопку или нажмите кнопку +" во всплывающем окне.
На странице задания New Stream Analytics выполните следующие действия.
Для подписки выберите подписку, содержащую пространство имен Центров событий.
Для группы ресурсов выберите созданную ранее группу ресурсов.
В разделе сведений об экземпляре для Имя введите уникальное имя для задания Stream Analytics.
Для региона выберите регион, в котором нужно создать задание Stream Analytics. Рекомендуется разместить задание и концентратор событий в одном регионе, чтобы обеспечить лучшую производительность и не платить за передачу данных между регионами.
Для среды< размещения выберите облако, если оно еще не выбрано. Задания Stream Analytics можно развернуть в облаке или на граничных устройствах. Значение Cloud позволяет выполнять развертывание в облаке Azure, а значение Edge — на устройстве IoT Edge.
Для блоков потоковой передачи данных выберите 1. Единица потоковой передачи предоставляет вычислительные ресурсы, которые необходимы для выполнения задания. По умолчанию установлено значение 1. Чтобы узнать о масштабировании единиц потоковой передачи, ознакомьтесь со статьей Обзор и настройка единиц потоковой передачи.
В нижней части страницы выберите Review + create (Проверить и создать).
На странице "Просмотр и создание" проверьте параметры, затем выберите Создать, чтобы создать задание Stream Analytics.
После развертывания задания выберите Перейти к ресурсу, чтобы перейти на страницу задания Stream Analytics.
Настройка входных данных для задания
Следующий шаг — определить источник входных данных, откуда задание будет считывать данные с помощью концентратора событий, созданного в предыдущем разделе.
На странице Задание Stream Analytics в разделе Топология заданий в меню слева выберите Входные данные.
На странице Входные данные выберите + Добавить входные данные и концентратор событий.
На странице концентратора событий выполните следующие действия.
Для входного псевдонима введите CallStream. Псевдоним ввода — это понятное имя для идентификации входных данных. Псевдоним ввода может содержать только буквенно-цифровые символы и дефисы, а также должен содержать 3–63 символов.
Для подписки выберите подписку Azure, в которой вы создали концентратор событий. Концентратор событий может находиться в той же подписке, что и задание Stream Analytics, или в другой.
Для пространства имен Центров событий выберите пространство имен Центров событий, созданное в предыдущем разделе. Все пространства имен, доступные в текущей подписке, перечислены в раскрывающемся списке.
Для имени концентратора событий выберите концентратор событий, созданный в предыдущем разделе. Все центры событий, доступные в выбранном пространстве имен, перечислены в раскрывающемся списке.
Для группы потребителей концентратора событий следует выбрать параметр "Создать", чтобы создать новую группу потребителей в концентраторе событий. Для каждого задания Stream Analytics рекомендуется использовать отдельную группу получателей. Если группа потребителей не указана, задание Stream Analytics использует группу потребителей
$Default. Если задание содержит самосоединение или несколько источников входных данных, некоторые входные данные могут позднее считываться несколькими читателями. Эта ситуация влияет на количество читателей в группе потребителей.В качестве режима аутентификации выберите вариант Строка подключения. Проще протестировать учебник с помощью этого параметра.
Для имени политики концентратора событий выберите "Использовать существующий", а затем выберите политику по умолчанию: RootManageSharedAccessKey.
В нижней части страницы нажмите кнопку Сохранить.
Настройка выходных данных для задания
Осталось определить приемник выходных данных, в котором задание сможет записывать преобразованные данные. В этом руководстве вы выводите и визуализируете данные с помощью Power BI.
На портале Azure откройте Все ресурсы и выберите задание Stream Analytics ASATutorial.
В разделе Топология задания задания Stream Analytics выберите вариант Выходные данные.
Выберите + Добавить выходные данные>Power BI.
Заполните форму вывода, указав следующие данные:
Параметр Рекомендуемое значение Псевдоним выходных данных МойPBIвывод Рабочая область группы Моя рабочая область Имя набора данных ASAdataset Имя таблицы ASATable Режим проверки подлинности Токен пользователя Выберите Авторизовать и следуйте указаниям для проверки подлинности Power BI.
Выберите Сохранить в нижней части страницы Power BI.
В этом учебнике используется режим аутентификации с помощью пользовательского токена. Чтобы использовать управляемое удостоверение, см. Использование управляемого удостоверения для проверки подлинности задачи Azure Stream Analytics в Power BI.
Создание запросов для преобразования данных в режиме реального времени
На этом этапе вы настроили задание Stream Analytics для чтения входящего потока данных. Далее необходимо создать запрос для анализа данных в режиме реального времени. В запросах используется язык на основе SQL, который содержит некоторые расширения, характерные для Stream Analytics.
В этом разделе руководства вы создадите и протестируете несколько запросов, чтобы узнать несколько способов преобразования входного потока для анализа.
Запросы, создаваемые здесь, просто отображают преобразованные данные на экране. В следующем разделе вы записываете преобразованные данные в Power BI.
Дополнительные сведения о языке см. в справочнике по языку запросов Azure Stream Analytics.
Тестирование с помощью сквозного запроса
Если вы хотите архивировать каждое событие, используйте передающий запрос для чтения всех полей в нагрузке события.
Перейдите к заданию Stream Analytics на портале Azure и выберите "Запрос " в разделе "Топология заданий " в меню слева.
В окне запроса введите следующий запрос:
SELECT * FROM CallStreamПримечание.
Как и в случае с SQL, ключевые слова не учитывают регистр, и пробелы не имеют значения.
В этом запросе
CallStream— это псевдоним, который вы указали при создании входных данных. Если вы использовали другой псевдоним, используйте его.Выберите Пробный запрос.
Задание Stream Analytics выполняет запрос по образцу данных из входных данных и отображает выходные данные в нижней части окна. Такой результат означает, что Центры событий и задание Stream Analytics настроены правильно.
Точное количество записей, которые вы видите, зависит от количества записей, которые были записаны в образце.
Уменьшение количества полей с помощью проекции столбцов
Во многих случаях анализу не требуются все столбцы из входного потока. Используйте запрос для проецировать меньший набор возвращаемых полей, чем в сквозном запросе.
Выполните указанный ниже запрос и обратите внимание на выходные данные.
SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum
INTO
[MyPBIoutput]
FROM
CallStream
Количество входящих вызовов по региону: скользящее окно с агрегированием
Предположим, вам нужно посчитать число входящих вызовов на регион. При потоковой передаче данных, если вы хотите использовать агрегатные функции, такие как подсчет, вам нужно сегментировать поток на временные единицы, так как сам поток данных фактически бесконечен. Это сегментирование выполняется с помощью функции окна "Аналитика потоковой передачи". Затем вы сможете работать с данными в этом окне как с отдельными единицами.
Для этого преобразования требуется последовательность временных окон, которые не перекрываются. Каждое окно содержит дискретный набор данных, которые можно группировать и агрегировать. Такой тип окна называется "переворачивающимся" окном. В скользящем окне можно получить количество входящих вызовов, сгруппированных по SwitchNum региону, из которого поступил вызов.
Вставьте в редактор запросов следующий запрос:
SELECT System.Timestamp as WindowEnd, SwitchNum, COUNT(*) as CallCount FROM CallStream TIMESTAMP BY CallRecTime GROUP BY TUMBLINGWINDOW(s, 5), SwitchNumЭтот запрос использует ключевое слово
Timestamp Byв предложенииFROM, чтобы указать, какое поле временной метки использовать во входном потоке для определения скользящего окна. В этом случае окно делит данные на сегменты по полюCallRecTimeв каждой записи. Если поле не указано, оконная операция использует время прибытия каждого события в концентратор событий. Дополнительные сведения см. в разделе "Время прибытия и время приложения" в справочнике по языку запросов Stream Analytics.Проекция включает
System.Timestamp, который возвращает метку времени конца каждого окна.Чтобы указать, что вы хотите использовать окно "Переворачивающееся", используйте функцию TUMBLINGWINDOW в предложении
GROUP BY. В функции укажите единицу времени (от микросекунд до 24 часов) и размер окна (количество единиц). В этом примере окно "Переворачивающееся" состоит из 5-секундных интервалов, поэтому вы получаете количество по регионам каждые 5 секунд.Выберите Пробный запрос. В результатах обратите внимание на то, что метки времени в WindowEnd формируются с шагом приращения в 5 секунд.
Обнаружение мошенничества с использованием SIM-карт с помощью самосоединения
В этом примере рассмотрим мошеннические вызовы, поступающие от одного пользователя, но в разных расположениях в течение пяти секунд друг от друга. Например, один и тот же пользователь не может законным путем сделать звонок из США и Австралии одновременно.
Чтобы проверить эти случаи, используйте самосоединение потоковых данных, чтобы объединить поток с ним самим на основе значения CallRecTime. Затем можно искать записи вызовов, где CallingIMSI значение (исходное число) совпадает, но SwitchNum значение (регион источника) не совпадает.
При использовании соединения с потоковыми данными необходимо указать некоторые ограничения на то, насколько далеко соответствующие строки можно разделить во времени. Как уже отмечалось ранее, потоковая передача данных фактически бесконечна. Вы указываете границы времени для связи внутри ON предложения соединения, используя функцию DATEDIFF . В этом случае соединение основано на пятисекундном интервале данных вызова.
Вставьте в редактор запросов следующий запрос:
SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls INTO "MyPBIoutput" FROM "CallStream" CS1 TIMESTAMP BY CallRecTime JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime ON CS1.CallingIMSI = CS2.CallingIMSI AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5 WHERE CS1.SwitchNum != CS2.SwitchNum GROUP BY TumblingWindow(Duration(second, 1))Этот запрос похоже на любое соединение SQL, за исключением функции
DATEDIFFв соединении. Эта версия функцииDATEDIFFпредназначена для Stream Analytics и должна присутствовать в предложенииON...BETWEEN. Параметры представлены единицей времени (в этом примере — секундами) и псевдонимами двух источников для соединения. Эта функция отличается от стандартной функции SQLDATEDIFF.Предложение
WHEREсодержит условие, которое помечает мошеннический вызов: исходные коммутаторы не совпадают.Выберите Пробный запрос. Просмотрите выходные данные и выберите элемент Сохранить запрос.
Запуск задания и визуализация выходных данных
Чтобы запустить задание, перейдите к обзору задания и нажмите кнопку "Пуск".
Выберите Сейчас для времени начала вывода задания и нажмите Запуск. Вы можете просматривать состояние задания на панели уведомлений.
После успешного выполнения задания перейдите в Power BI и войдите с помощью рабочей или учебной учетной записи. Если запрос задания Stream Analytics выводит результаты, созданный набор данных ASAdataset отображается на вкладке наборов данных .
В рабочей области Power BI выберите + Создать, чтобы создать панель мониторинга с именем Мошеннические вызовы.
В верхней части окна выберите Изменить и Добавить плитку.
В окне "Добавить плитку" выберите "Пользовательские потоковые данные" и "Далее".
Выберите asadataset в разделе "Наборы данных" и нажмите кнопку "Далее".
Выберите Карточка из выпадающего списка Тип визуализации, добавьте мошеннические вызовы в Поля, затем выберите Далее.
Введите имя плитки (например, мошеннические вызовы), а затем нажмите Применить, чтобы создать плитку.
Выполните шаг 5 еще раз с следующими параметрами:
- В поле "Тип визуализации" выберите "Линейный график".
- Добавьте ось и выберите windowend.
- Добавьте значение и выберите фродовые вызовы.
- В списке Отображаемый интервал времени укажите последние 10 минут.
Панель мониторинга выглядит следующим образом после добавления обоих плиток. Если запущено приложение отправителя концентратора событий и приложение Streaming Analytics, панель мониторинга Power BI периодически обновляется по мере поступления новых данных.
Внедрение панели мониторинга Power BI в веб-приложение
В этой части руководства используйте пример веб-приложения ASP.NET , созданного командой Power BI для внедрения панели мониторинга. Дополнительные сведения об внедрении панелей мониторинга см. в статье о внедрении с помощью Power BI .
Чтобы настроить приложение, перейдите в репозиторий GitHub Power BI-Developer-Samples и следуйте инструкциям в разделе "Пользовательские данные " (используйте URL-адреса перенаправления и домашней страницы в подразделе интеграции веб-приложения ). Так как вы используете пример панели мониторинга, используйте пример кода интеграции веб-приложения , расположенный в репозитории GitHub. После запуска приложения в браузере выполните следующие действия, чтобы внедрить созданную ранее панель мониторинга на веб-страницу:
Выберите Sign in to Power BI (Вход в Power BI), что предоставит приложению доступ к панелям мониторинга в учетной записи Power BI.
Нажмите кнопку Get Dashboards (Получить панели мониторинга), после чего панели мониторинга учетной записи отобразятся в таблице. Найдите имя панели мониторинга, которая была создана ранее powerbi-embedded-dashboard, и скопируйте соответствующий EmbedUrl.
Наконец, вставьте EmbedUrl в соответствующее текстовое поле и выберите Embed Dashboard. Теперь вы можете просматривать ту же панель мониторинга, встроенную в веб-приложение.
Следующие шаги
В этом руководстве был создан пример задания Stream Analytics, проанализированы входные данные и представлены результаты на панели мониторинга Power BI. Чтобы узнать больше о заданиях Stream Analytics, перейдите к следующему учебному руководству.