Руководство по визуализации аномалий c помощью пакетного обнаружения (однопараметрического) и Power BI
Внимание
Начиная с 20 сентября 2023 г. вы не сможете создавать новые Детектор аномалий ресурсы. Служба Детектор аномалий отменяется 1 октября 2026 года.
В этом учебнике показано, как найти аномалии в наборе данных временных рядов в пакетном режиме. В Power BI Desktop в файле Excel подготовьте данные для API Детектора аномалий и визуализируйте статистические аномалии в нем.
Из этого руководства вы узнаете, как выполнять следующие задачи:
- Импорт и преобразование набора данных временных рядов в Power BI Desktop.
- Интеграция Power BI Desktop с API Детектора аномалий для пакетного обнаружения аномалий.
- Визуализация аномалий, которые находятся в данных, включая ожидаемые и видимые значения, а также границы обнаружения аномалий.
Необходимые компоненты
- Подписка Azure
- Microsoft Power BI Desktop предоставляется бесплатно.
- Файл Excel (XLSX) содержит точки данных временных рядов.
- После получения подписки Azure создайте ресурс Детектор аномалий в портал Azure, чтобы получить ключ и конечную точку.
- Для подключения приложения к API "Детектор аномалий" потребуется ключ и конечная точка из созданного ресурса. Вы сделаете это позже в этом кратком руководстве.
Примечание.
Для лучших результатов при использовании API "Детектор аномалий", данные временных рядов в формате JSON должны включать:
- точки данных, разделенные одним и тем же интервалом, при этом не более 10 % ожидаемого числа отсутствующих точек;
- по крайней мере 12 точек данных, если данные не имеют четкого шаблона;
- по крайней мере 4 экземпляра шаблона, если данные имеют четкий шаблон.
Загрузка и форматирование данных временных рядов
Чтобы начать работу, откройте Power BI Desktop и загрузите данные временных рядов, которые вы скачали при выполнении предварительных требований. Этот файл Excel содержит ряд пар меток времени в формате UTC и значений.
Примечание.
Power BI использует данные из разнообразных источников, например из CSV-файлов, баз данных SQL, хранилища BLOB-объектов Azure и других.
В главном окне Power BI Desktop выберите ленту Главная. В группе внешних данных ленты откройте раскрывающееся меню "Получить данные" и выберите Excel.
В появившемся диалоговом окне перейдите в папку, в которую вы скачали пример файла XLSX, и выберите его. После появления диалогового окна "Навигатор" выберите "Лист1" и "Изменить".
Power BI преобразует отметки времени в первом столбце в тип данных Date/Time
. Эти метки времени должны быть преобразованы в текст для отправки в API Детектора аномалий. Если редактор Power Query не открывается автоматически, выберите "Изменить запросы " на домашней вкладке.
Выберите ленту преобразования в Редактор Power Query. В группе Любой столбец откройте раскрывающееся меню Тип данных: и выберите Текстовый.
Когда вы получите уведомление об изменении типа столбца, нажмите кнопку "Заменить текущий". Затем нажмите кнопку "Закрыть" и "Применить" на ленте "Главная".
Создание функции для отправки данных и форматирования ответа
Чтобы отформатировать и отправить файл данных в API Детектора аномалий, вы можете вызвать запрос к созданной ранее таблице. В Редактор Power Query на ленте "Главная" откройте раскрывающееся меню "Новый источник" и выберите "Пустой запрос".
Убедитесь, что выбран новый запрос, а затем выберите Расширенный редактор.
В Расширенном редакторе используйте следующий фрагмент кода Power Query M для извлечения столбцов из таблицы и отправки их в API. Запрос создаст таблицу на основе ответа JSON и вернет ее. Замените переменную apiKey
на допустимый ключ API Детектора аномалий, а endpoint
на вашу конечную точку. После ввода запроса в Расширенный редактор нажмите кнопку "Готово".
(table as table) => let
apikey = "[Placeholder: Your Anomaly Detector resource access key]",
endpoint = "[Placeholder: Your Anomaly Detector resource endpoint]/anomalydetector/v1.0/timeseries/entire/detect",
inputTable = Table.TransformColumnTypes(table,{{"Timestamp", type text},{"Value", type number}}),
jsontext = Text.FromBinary(Json.FromValue(inputTable)),
jsonbody = "{ ""Granularity"": ""daily"", ""Sensitivity"": 95, ""Series"": "& jsontext &" }",
bytesbody = Text.ToBinary(jsonbody),
headers = [#"Content-Type" = "application/json", #"Ocp-Apim-Subscription-Key" = apikey],
bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody, ManualStatusHandling={400}]),
jsonresp = Json.Document(bytesresp),
respTable = Table.FromColumns({
Table.Column(inputTable, "Timestamp")
,Table.Column(inputTable, "Value")
, Record.Field(jsonresp, "IsAnomaly") as list
, Record.Field(jsonresp, "ExpectedValues") as list
, Record.Field(jsonresp, "UpperMargins")as list
, Record.Field(jsonresp, "LowerMargins") as list
, Record.Field(jsonresp, "IsPositiveAnomaly") as list
, Record.Field(jsonresp, "IsNegativeAnomaly") as list
}, {"Timestamp", "Value", "IsAnomaly", "ExpectedValues", "UpperMargin", "LowerMargin", "IsPositiveAnomaly", "IsNegativeAnomaly"}
),
respTable1 = Table.AddColumn(respTable , "UpperMargins", (row) => row[ExpectedValues] + row[UpperMargin]),
respTable2 = Table.AddColumn(respTable1 , "LowerMargins", (row) => row[ExpectedValues] - row[LowerMargin]),
respTable3 = Table.RemoveColumns(respTable2, "UpperMargin"),
respTable4 = Table.RemoveColumns(respTable3, "LowerMargin"),
results = Table.TransformColumnTypes(
respTable4,
{{"Timestamp", type datetime}, {"Value", type number}, {"IsAnomaly", type logical}, {"IsPositiveAnomaly", type logical}, {"IsNegativeAnomaly", type logical},
{"ExpectedValues", type number}, {"UpperMargins", type number}, {"LowerMargins", type number}}
)
in results
Вызовите запрос на листе данных, выбрав Sheet1
в разделе "Введите параметр" и выберите "Вызвать".
Внимание
Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье по безопасности служб ИИ Azure.
Конфиденциальность источника данных и аутентификация
Примечание.
Ознакомьтесь с политиками своей организации в отношении конфиденциальности данных и доступа к ним. Дополнительные сведения см. в статье об уровнях конфиденциальности Power BI Desktop.
При попытке выполнить запрос может появиться предупреждающее сообщение, так как в запросе используется внешний источник данных.
Чтобы устранить эту проблему, выберите "Файл" и "Параметры" и "Параметры". Затем выберите "Параметры". Под пунктом Текущий файл выберите Конфиденциальность и Игнорировать уровни конфиденциальности для возможного улучшения производительности.
Кроме того, может появиться сообщение с предложением указать способ подключения к API.
Чтобы устранить эту проблему, выберите "Изменить учетные данные" в сообщении. Когда появится диалоговое окно, выберите Анонимно для анонимного подключения к API. В этом случае выберите Подключиться.
После этого нажмите кнопку "Закрыть" и " Применить" на ленте "Главная ", чтобы применить изменения.
Визуализация ответа API Детектора аномалий
На главном экране Power BI начните использовать созданные ранее запросы для визуализации данных. Сначала выберите в разделе Визуализации тип График. Затем добавьте на ось графика метку времени из вызванной функции. Щелкните значение правой кнопкой мыши и выберите Метка времени.
Добавьте следующие поля из раздела Вызванная функция в поле Значения графика. Создайте график, используя параметры в приведенном ниже снимке экрана.
- Значение
- UpperMargins
- LowerMargins
- ExpectedValues
После добавления полей выберите диаграмму и измените его размер, чтобы отобразить все точки данных. График будет выглядеть примерно так, как на снимке экрана ниже:
Отображение точек данных с аномалиями
В правой части окна Power BI под областью FIELDS щелкните правой кнопкой мыши значение в запросе вызываемой функции и выберите "Создать быструю меру".
На появившемся экране выберите Отфильтрованное значение в качестве вычисления. В поле Базовое значение выберите значение Sum of Value
. Затем перетащите значение IsAnomaly
из полей Вызванная функция в поле Фильтр. В раскрывающемся меню Фильтр выберите значение True
.
После нажатия кнопки "ОК" в нижней части списка полей появится Value for True
поле. Щелкните его правой кнопкой мыши и переименуйте на Аномалии. Добавьте его в значения графика. Затем выберите средство Формат и задайте для оси X тип Категориальный.
Примените цвета к диаграмме, выбрав инструмент "Формат " и "Цвета данных". График должен выглядеть примерно следующим образом: