Руководство. Анализ данных мошеннических вызовов с помощью Stream Analytics и визуализация результатов на панели мониторинга Power BI

В этом руководстве показано, как анализировать данные телефонных звонков с помощью Azure Stream Analytics. Данные телефонных звонков, поступившие от клиентского приложения, содержат сведения о мошеннических звонках, которые обнаруживаются с помощью задания Stream Analytics. Вы можете использовать методы из этого руководства для других типов обнаружения мошенничества, таких как кредитные карта мошенничества или кражи удостоверений.

Вот какие шаги выполняются в этом руководстве:

  • создание примера данных телефонных звонков и их отправка в Центры событий Azure;
  • Создание задания Stream Analytics.
  • настройка входных и выходных данных для задания;
  • определение запросов для фильтрации звонков, осуществляемых в мошеннических целях;
  • тестирование и запуск задания;
  • визуализация результатов в Power BI.

Необходимые компоненты

Прежде чем начать работу, нужно сделать следующее:

  • Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
  • Загрузите приложение генератора событий телефонных вызововTelcoGenerator.zip из Центра загрузки Майкрософт или получите исходный код на сайте GitHub.
  • Вам нужна учетная запись Power BI .

Вход в Azure

Войдите на портал Azure.

Создание концентратора событий

Прежде чем Stream Analytics сможет проанализировать поток мошеннических вызовов, необходимо отправить некоторые примеры данных в концентратор событий. В этом руководстве вы отправляете данные в Azure с помощью Центры событий Azure.

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

  1. Войдите на портал Azure.

  2. Выберите все службы в меню слева, выберите Интернет вещей, наведите указатель мыши на центры событий и нажмите кнопку +(Добавить).

    Снимок экрана: страница создания центров событий.

  3. На странице "Создание пространства имен" выполните следующие действия.

    1. Выберите подписку Azure, в которой нужно создать концентратор событий.

    2. Для группы ресурсов выберите "Создать" и введите имя группы ресурсов. Пространство имен Центров событий создается в этой группе ресурсов.

    3. Для имени пространства имен введите уникальное имя пространства имен Центров событий.

    4. В поле "Расположение" выберите регион, в котором нужно создать пространство имен.

    5. Для ценовой категории выберите "Стандартный".

    6. В нижней части страницы выберите Review + create (Проверить и создать).

      Снимок экрана: страница

    7. На странице "Проверка и создание" мастера создания пространства имен выберите "Создать" в нижней части страницы после просмотра всех параметров.

  4. После успешного развертывания пространства имен выберите Перейти к ресурсу, чтобы перейти на страницу Пространство имен Центров событий.

  5. На странице Пространство имен Центров событий выберите +Центр событий в строке команд.

    Снимок экрана: кнопка

  6. На странице Создание центра событий введите имя концентратора событий. Установите для параметра Количество разделов значение 2. Используйте параметры по умолчанию в оставшихся параметрах и выберите "Просмотр и создание".

    Снимок экрана на котором отображается страница создания центра событий.

  7. На странице Просмотр и создание выберите Создать в нижней части страницы. Дождитесь успешного завершения развертывания.

Предоставление доступа к концентратору событий и получение строки подключения

Чтобы приложение могло отправлять данные в Центры событий Azure, в концентраторе событий должна быть политика, обеспечивающая доступ. Политика доступа создает строку подключения, которая включает сведения об авторизации.

  1. На странице пространства имен Центров событий выберите политики общего доступа в меню слева.

  2. Выберите RootManageSharedAccessKey из списка политик.

  3. Затем нажмите кнопку копирования рядом со строкой Подключение ion — первичный ключ.

  4. Вставьте строку подключения в текстовый редактор. Эта строка подключения вам понадобится в следующем разделе.

    Строка подключения выглядит следующим образом:

    Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>

    Обратите внимание, что строка подключения содержит несколько пар "ключ-значение", разделенных точкой с запятой: Endpoint, SharedAccessKeyName и SharedAccessKey.

Запуск приложения генератора событий

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

  1. Извлеките содержимое файла TelcoGenerator.zip.

  2. Откройте файл TelcoGenerator\TelcoGenerator\telcodatagen.exe.config в текстовом редакторе по своему выбору. Файлов с расширением .config несколько, поэтому убедитесь, что открываете нужный файл.

  3. Обновите элемент <appSettings> в файле конфигурации, указав следующие сведения:

    • Задайте для ключа EventHubName значение EntityPath в конце строки подключения.
    • Задайте значение Microsoft.ServiceBus.ПодключениеКлюч ionString к строка подключения пространству имен. Если в концентраторе событий используется строка подключения, а не пространство имен, удалите EntityPath значение (;EntityPath=myeventhub) в конце. Обязательно удалите точку с запятой перед значением EntityPath.
  4. Сохраните файл.

  5. Далее откройте командное окно и перейдите в папку, в которой распаковано приложение TelcoGenerator. Затем введите следующую команду:

    .\telcodatagen.exe 1000 0.2 2
    

    Эта команда принимает следующие параметры:

    • Число записей данных звонков в час.
    • Вероятность мошенничества, которая представляет частоту моделирования приложением мошеннических вызовов. Значение 0,2 означает, что около 20% записей звонков выглядят мошенническими.
    • Продолжительность в часах, которая соответствует количеству часов, на протяжении которых должно выполняться приложение. Вы также можете в любое время остановить выполнение приложения, завершив процесс (CTRL+C) в командной строке.

    Через несколько секунд приложение запустит отображение записей вызовов на экране, так как будет отправлять их в концентратор событий. Данные телефонных звонков содержат следующие поля:

    Запись Определение
    CallrecTime Метка времени начала вызова.
    SwitchNum Телефонный переключатель, используемый для совершения вызова. В этом примере переключатели выражены строками, представляющими страну или регион происхождения (США, Китай, Соединенное Королевство, Германия или Австралия).
    CallingNum Номер телефона звонящего.
    CallingIMSI Идентификатор абонента международной мобильной связи (IMSI). Это уникальный идентификатор звонящего.
    CalledNum Номер телефона получателя.
    CalledIMSI Идентификатор IMSI. Это уникальный идентификатор получателя звонка.

Создание задания Stream Analytics

Теперь, когда у вас есть поток событий звонков, можно создать задание Stream Analytics, которое считывает данные из концентратора событий.

  1. Чтобы создать задание Stream Analytics, перейдите на портал Azure.
  2. Выберите Создать ресурс и выполните поиск по фразе Задание Stream Analytics. Выберите плитку Задание Stream Analytics и щелкните Создать.
  3. На странице задания New Stream Analytics выполните следующие действия.
    1. Для подписки выберите подписку, содержащую пространство имен Центров событий.

    2. Для группы ресурсов выберите созданную ранее группу ресурсов.

    3. В разделе сведений об экземпляре введите уникальное имя задания Stream Analytics.

    4. Для региона выберите регион, в котором нужно создать задание Stream Analytics. Рекомендуется разместить задание и концентратор событий в одном регионе, чтобы обеспечить лучшую производительность и не платить за передачу данных между регионами.

    5. Для среды< размещения выберите Cloud , если она еще не выбрана. Задания Stream Analytics можно развернуть в облаке или на граничных устройствах. Значение Cloud позволяет выполнять развертывание в облаке Azure, а значение Edge — на устройстве IoT Edge.

    6. Для единиц потоковой передачи выберите 1. Единица потоковой передачи предоставляет вычислительные ресурсы, которые необходимы для выполнения задания. По умолчанию установлено значение 1. Чтобы узнать о масштабировании единиц потоковой передачи, ознакомьтесь со статьей Обзор и настройка единиц потоковой передачи.

    7. В нижней части страницы выберите Review + create (Проверить и создать).

      Снимок экрана: страница создания задания Azure Stream Analytics.

  4. На странице "Просмотр и создание" проверьте параметры и нажмите кнопку "Создать", чтобы создать задание Stream Analytics.
  5. После развертывания задания на странице развертывания выберите Перейти к ресурсу, чтобы перейти на страницу Задание Stream Analytics.

Настройка входных данных для задания

Следующий шаг — определить источник входных данных, откуда задание будет считывать данные с помощью концентратора событий, созданного в предыдущем разделе.

  1. На странице Задание Stream Analytics в разделе Топология заданий в меню слева выберите Входные данные.

  2. На странице "Входные данные" выберите +Добавить входные данные и концентратор событий.

    Снимок экрана: страница

  3. На странице концентратора событий выполните следующие действия.

    1. Для псевдонима входных данных введите CallStream. Псевдоним ввода — это понятное имя для идентификации входных данных. Входной псевдоним может содержать только буквенно-цифровые символы, дефисы и знаки подчеркивания. Длина должна составлять от 3 до 63 символов.

    2. Для подписки выберите подписку Azure, в которой вы создали концентратор событий. Концентратор событий может находиться в той же подписке, что и задание Stream Analytics, или в другой.

    3. Для пространства имен Центров событий выберите пространство имен Центров событий, созданное в предыдущем разделе. Все пространства имен, доступные в текущей подписке, перечислены в раскрывающемся списке.

    4. Для имени концентратора событий выберите концентратор событий, созданный в предыдущем разделе. Все центры событий, доступные в выбранном пространстве имен, перечислены в раскрывающемся списке.

    5. Для группы потребителей концентратора событий следует выбрать параметр "Создать", чтобы создать новую группу потребителей в концентраторе событий. Для каждого задания Stream Analytics рекомендуется использовать отдельную группу получателей. Если группа потребителей не указана, задание Stream Analytics использует группу потребителей $Default . Если задание содержит самосоединение или несколько источников входных данных, некоторые входные данные могут позднее считываться несколькими читателями. Эта ситуация влияет на количество читателей в группе потребителей.

    6. В качестве режима аутентификации выберите вариант Строка подключения. Проще протестировать учебник с помощью этого параметра.

    7. Для имени политики концентратора событий выберите "Использовать существующую", а затем выберите созданную ранее политику.

    8. В нижней части страницы нажмите кнопку Сохранить.

      Снимок экрана: страница конфигурации Центров событий для входных данных.

Настройка выходных данных для задания

Осталось определить приемник выходных данных, в котором задание сможет записывать преобразованные данные. В этом руководстве данные выводятся и визуализируются с помощью Power BI.

  1. На портале Azure откройте Все ресурсы и выберите задание Stream Analytics ASATutorial.

  2. В разделе Топология задания задания Stream Analytics выберите вариант Выходные данные.

  3. Выберите + Добавить>Power BI.

  4. Заполните форму вывода, указав следующие данные:

    Параметр Рекомендуемое значение
    Псевдоним выходных данных MyPBIoutput
    Рабочая область группы Моя рабочая область
    Имя набора данных ASAdataset
    Имя таблицы ASATable
    Режим проверки подлинности Токен пользователя
  5. Выберите Авторизовать и следуйте указаниям для проверки подлинности Power BI.

    Настройка выходных данных Stream Analytics

  6. Выберите Сохранить в нижней части страницы Power BI.

    В этом учебнике используется токен проверки подлинности пользователей. Сведения об использовании управляемого удостоверения см. в статье Использование управляемого удостоверения для проверки подлинности задач Azure Stream Analytics для вывода данных в Power BI.

Создание запросов для преобразования данных в режиме реального времени

На этом этапе задание Stream Analytics настроено на считывание входящего потока данных. Далее необходимо создать запрос для анализа данных в режиме реального времени. В запросах используется язык на основе SQL, который содержит некоторые расширения, характерные для Stream Analytics.

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

Запросы, созданные в рамках этого руководства, выведут преобразованные данные на экран. При работе с одним из следующих разделов вы запишете преобразованные данные в Power BI.

Дополнительные сведения о языке см. в разделе Справочник по языку запросов Azure Stream Analytics.

Проверка с помощью запроса к серверу

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

  1. Перейдите к заданию Stream Analytics на портале Azure и выберите элемент Запрос в разделе Топология задания в левом меню.

  2. В окне запроса введите следующий запрос:

    SELECT 
        *
    FROM 
        CallStream
    

    Примечание.

    Как и при использовании SQL, регистр ключевых слов не учитывается, пробел не имеет значения.

    В этом запросе CallStream — это входной псевдоним, указанный при создании входных данных для задания. Если вы использовали другой псевдоним, используйте его, соответственно.

  3. Выберите Пробный запрос.

    Задание Stream Analytics выполнит запрос примера данных из входных данных и отобразит выходные данные в нижней части окна. Такой результат означает, что Центры событий и задание Stream Analytics настроены правильно.

    Пример выходных данных из тестового запроса.

    Точное количество записей, которые вы видите, зависит от количества записей, которые были записаны в образце.

Уменьшение числа полей с помощью заполнения столбцов

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

Выполните указанный ниже запрос и обратите внимание на выходные данные.

SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum 
INTO
    [MyPBIoutput]
FROM 
    CallStream

Количество входящих вызовов по региону: "переворачивающееся" окно с агрегированием

Предположим, вам нужно посчитать число входящих вызовов на регион. При потоковой передаче данных, если вы хотите использовать агрегатные функции, например подсчет, вам нужно сегментировать поток на временные единицы, так как сам поток данных является цельным. Это можно сделать с помощью функции окна Streaming Analytics. Затем вы сможете работать с данными в этом окне как с отдельными единицами.

Для этого преобразования требуется последовательность временных окон, которые не перекрываются. Каждое окно содержит дискретный набор данных, которые можно группировать и агрегировать. Такой тип окна называется "переворачивающимся" окном. В "переворачивающемся" окне вы можете получить число входящих вызовов, сгруппированных SwitchNum — переключателем, который представляет страну/регион (расположение) вызова.

  1. Вставьте в редактор запросов следующий запрос:

    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 секунд.

  2. Выберите Пробный запрос. В результатах обратите внимание на то, что метки времени в WindowEnd формируются с шагом приращения в 5 секунд.

Выявление мошенничества в отношении SIM-карт с помощью самосоединения

В этом примере мы рассмотрим мошеннические вызовы, выполненные одним пользователем из различных регионов с интервалом в 5 секунд. Например, один и тот же пользователь не может законным путем сделать звонок из США и Австралии одновременно.

Чтобы проверить такие случаи, вы можете использовать самосоединение потоковой передачи данных, чтобы выполнить самосоединение потока на основе значения CallRecTime. Затем вы можете найти записи вызовов, в которых значение CallingIMSI (исходящий номер) остается неизменным, а значение SwitchNum (страна/регион происхождения) изменяется.

При использовании соединения с потоковой передачей данных соединение должно предоставить некоторые ограничения в отношении того, насколько совпадающие строки могут быть разделены по времени. Как уже отмечалось выше, потоковая передача данных является цельной. Пределы времени для такой связи задаются в предложении соединения ON с помощью функции DATEDIFF. В этом случае соединение основано на 5-секундном интервале данных вызова.

  1. Вставьте в редактор запросов следующий запрос:

    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. Параметры представлены единицей времени (в этом примере — секундами) и псевдонимами двух источников для соединения. Эта функция отличается от стандартной функции SQL DATEDIFF.

    Предложение WHERE содержит условие, которое помечает мошеннический вызов: исходящие переключатели не совпадают.

  2. Выберите Пробный запрос. Просмотрите выходные данные и выберите элемент Сохранить запрос.

Запуск задания и визуализация выходных данных

  1. Перейдите к панели задания Обзор и выберите Запуск, чтобы запустить задание.

  2. Выберите время начала создания выходных данных задания Сейчас, а затем — Запуск. Вы можете просматривать состояние задания на панели уведомлений.

  3. После успешного выполнения задания перейдите на сайт Power BI и войдите с помощью рабочей или учебной учетной записи. Если запрос задания Stream Analytics выдает результаты, то созданный набор данных ASAdataset находится на вкладке Наборы данных.

  4. В рабочей области Power BI выберите + Создать, чтобы создать панель мониторинга с именем Мошеннические вызовы.

  5. В верхней части окна выберите Изменить и Добавить плитку. Затем выберите Пользовательские данные потоковой передачи и нажмите кнопку Далее. Выберите ASAdataset в разделе Ваши наборы данных. Выберите Карточка из раскрывающегося списка Тип визуализации и добавьте fraudulent calls в Поля. Нажмите кнопку Далее, чтобы ввести имя для плитки, а затем выберите Применить для создания плитки.

    Создание плитки панели мониторинга Power BI

  6. Выполните шаг 5 снова, выбрав следующие параметры:

    • В поле "Тип визуализации" выберите "График".
    • Добавьте ось и выберите windowend.
    • Добавьте значение и выберите fraudulent calls.
    • В списке Отображаемый интервал времени укажите последние 10 минут.
  7. Панель мониторинга должна выглядеть так, как показано в следующем примере после добавления обоих плиток. Обратите внимание, что если приложение отправки концентратора событий и приложение Streaming Analytics запущены, панель мониторинга Power BI будет периодически обновляться по мере поступления новых данных.

    Снимок экрана: результаты на панели мониторинга Power BI.

Внедрение панели мониторинга Power BI в веб-приложение

В этой части руководства вы используете пример веб-приложения ASP.NET , созданного командой Power BI для внедрения панели мониторинга. Дополнительные сведения о внедрении панелей мониторинга см. в этой статье.

Чтобы настроить приложение, перейдите к репозиторию GitHub PowerBI-Developer-Samples и следуйте инструкциям из раздела о владении данными (используйте URL-адреса переадресации и домашней страницы в подразделе integrate-web-app). Так как мы используем пример панели мониторинга, используйте пример кода integrate-web-app, который находится в репозитории GitHub. После запуска приложения в браузере выполните следующие действия, чтобы внедрить созданную ранее панель мониторинга на веб-страницу:

  1. Выберите Sign in to Power BI (Вход в Power BI), что предоставит приложению доступ к панелям мониторинга в учетной записи Power BI.

  2. Нажмите кнопку Get Dashboards (Получить панели мониторинга), после чего панели мониторинга учетной записи отобразятся в таблице. Найдите имя панели мониторинга, которая была создана ранее powerbi-embedded-dashboard, и скопируйте соответствующий EmbedUrl.

  3. Наконец, вставьте EmbedUrl в соответствующее текстовое поле и выберите Embed Dashboard (Внедрение панели мониторинга). Теперь та же панель мониторинга будет внедрена в веб-приложение.

Следующие шаги

В этом руководстве был создан пример задания Stream Analytics, проанализированы входные данные и представлены результаты на панели мониторинга Power BI. Чтобы узнать больше о заданиях Stream Analytics, перейдите к следующему руководству: