Перенос аналитики временных рядов 2-го поколения в аналитику Real-Time в Microsoft Fabric
Заметка
Служба "Аналитика временных рядов" будет прекращена 7 июля 2024 года. Рассмотрите возможность переноса существующих сред в альтернативные решения как можно скорее. Для получения дополнительной информации о депрекации и миграции посетите нашу документацию .
Обзор
Eventhouse — это база данных временных рядов в системе Real-Time Intelligence. Он служит целевым местом для переноса данных из Time Series Insights.
Рекомендации по миграции высокого уровня.
Особенность | Рекомендуемая миграция |
---|---|
Прием JSON из Hub с преобразованием в плоский формат и экранированием. | Получение данных из Центров событий Azure |
Открытие холодного хранилища | OneLake Eventhouse доступность |
Коннектор Power BI | Используйте Соединитель Power BI Eventhouse. Переписать TSQ на KQL вручную. |
Соединитель Spark | Перенос данных в Eventhouse. Используйте записную книжку с Apache Spark для выполнения запросов в Eventhouse или исследуйте данные в вашем Lakehouse с помощью записной книжки |
Массовая загрузка | Получение данных из службы хранилища Azure |
Модель временных рядов | Можно экспортировать как JSON-файл. Можно импортировать в Eventhouse. Семантика графа Kusto позволяет моделировать, обходить и анализировать иерархию модели временных рядов в виде графа |
Обозреватель временных рядов | Real-Time панель мониторинга, отчет Power BI или написать настраиваемую панель с помощью KustoTrender |
Язык запросов | Перезапись запросов в KQL. |
Перенос телеметрии
Чтобы получить копию всех данных в среде, используйте папку PT=Time
в учетной записи хранения. Для получения дополнительной информации см. хранение данных.
Шаг миграции 1. Получение статистики о данных телеметрии
Данные
- Обзор среды
- Запишите идентификатор среды из первой части полного доменного имени для доступа к данным (например, d390b0b0-1445-4c0c-8365-68d6382c1c2a из .env.crystal-dev.windows-int.net)
- Обзор среды — конфигурация хранилища> — учетная запись хранилища>
- Получение статистики папок с помощью обозревателя службы хранилища
- Размер записи и количество BLOB в папке
PT=Time
.
- Размер записи и количество BLOB в папке
Шаг миграции 2. Перенос данных в хранилище событий
Создание дома событий
Чтобы настроить Eventhouse для процесса миграции, следуйте шагам, описанным в "Создание Eventhouse".
Прием данных
Чтобы получить данные для учетной записи хранения, соответствующей вашему экземпляру Time Series Insights, выполните шаги, описанные в получение данных из Azure Storage.
Убедитесь, что вы:
Выберите соответствующий контейнер и укажите URI, а также необходимый маркер SAS
или ключ учетной записи . Настройте путь к папке фильтра файлов как
V=1/PT=Time
для фильтрации соответствующих BLOB-объектов.Проверьте вычисленную схему и удалите все редко запрашиваемые столбцы, сохраняя по крайней мере метку времени, столбцы TSID и значения. Чтобы убедиться, что все ваши данные копируются в Eventhouse, добавьте еще один столбец и используйте преобразование сопоставления DropMappedFields.
Завершите процесс приема.
Запрос данных
Теперь, после успешного приема данных, вы можете начать изучение с помощью набора запросов KQL . Если вам нужно получить доступ к данным из пользовательского клиентского приложения, Eventhouse предоставляет пакеты SDK для основных языков программирования, таких как C# (ссылка), Java (ссылка) и Node.js (ссылка).
Перенос модели временных рядов в Azure Data Explorer
Модель можно скачать в формате JSON из среды TSI с помощью пользовательского интерфейса TSI Explorer или API пакетной службы TSM. Затем модель можно импортировать в Eventhouse.
Скачайте TSM из TSI UX.
Удалите первые три строки с помощью Visual Studio Code или другого редактора.
Использование Visual Studio Code или другого редактора, поиск и замена, используя regex
\},\n \{
на}{
Загрузка в ADX в виде отдельной таблицы, используя команду для получения данных из одного файла.
После переноса данных временных рядов в Eventhouse в Fabric Real-Time Intelligence можно использовать возможности Семантики Графа Kusto для контекстуализации и анализа данных. Семантика графов Kusto позволяет моделировать, обходить и анализировать иерархию модели временных рядов в виде графа. С помощью семантики Графа Kusto вы можете получить аналитические сведения о связях между различными сущностями в данных временных рядов, таких как ресурсы, сайты и точки данных. Эти аналитические сведения помогают понять зависимости и взаимодействие между различными компонентами системы.
Перевод запросов временных рядов (TSQ) на KQL
GetEvents
{
"getEvents": {
"timeSeriesId": [
"assest1",
"siteId1",
"dataId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:0.0000000Z",
"to": "2021-11-05T00:00:00.000000Z"
},
"inlineVariables": {},
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:0.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.000000Z)
| where assetId_string == "assest1" and siteId_string == "siteId1" and dataid_string == "dataId1"
| take 10000
GetEvents с фильтром
{
"getEvents": {
"timeSeriesId": [
"deviceId1",
"siteId1",
"dataId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:0.0000000Z",
"to": "2021-11-05T00:00:00.000000Z"
},
"filter": {
"tsx": "$event.sensors.sensor.String = 'status' AND $event.sensors.unit.String = 'ONLINE"
}
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:0.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.000000Z)
| where deviceId_string== "deviceId1" and siteId_string == "siteId1" and dataId_string == "dataId1"
| where ['sensors.sensor_string'] == "status" and ['sensors.unit_string'] == "ONLINE"
| take 10000
GetEvents с проецируемой переменной
{
"getEvents": {
"timeSeriesId": [
"deviceId1",
"siteId1",
"dataId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:0.0000000Z",
"to": "2021-11-05T00:00:00.000000Z"
},
"inlineVariables": {},
"projectedVariables": [],
"projectedProperties": [
{
"name": "sensors.value",
"type": "String"
},
{
"name": "sensors.value",
"type": "bool"
},
{
"name": "sensors.value",
"type": "Double"
}
]
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:0.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.000000Z)
| where deviceId_string== "deviceId1" and siteId_string == "siteId1" and dataId_string == "dataId1"
| take 10000
| project timestamp, sensorStringValue= ['sensors.value_string'], sensorBoolValue= ['sensors.value_bool'], sensorDoublelValue= ['sensors.value_double']
СерияАгрегатов
{
"aggregateSeries": {
"timeSeriesId": [
"deviceId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:00.0000000Z",
"to": "2021-11-05T00:00:00.0000000Z"
},
"interval": "PT1M",
"inlineVariables": {
"sensor": {
"kind": "numeric",
"value": {
"tsx": "coalesce($event.sensors.value.Double, todouble($event.sensors.value.Long))"
},
"aggregation": {
"tsx": "avg($value)"
}
}
},
"projectedVariables": [
"sensor"
]
}
events
| where timestamp >= datetime(2021-11-01T00:00:00.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.0000000Z)
| where deviceId_string == "deviceId1"
| summarize avgSensorValue= avg(coalesce(['sensors.value_double'], todouble(['sensors.value_long']))) by bin(IntervalTs = timestamp, 1m)
| project IntervalTs, avgSensorValue
СерияАгрегатов с фильтром
{
"aggregateSeries": {
"timeSeriesId": [
"deviceId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:00.0000000Z",
"to": "2021-11-05T00:00:00.0000000Z"
},
"filter": {
"tsx": "$event.sensors.sensor.String = 'heater' AND $event.sensors.location.String = 'floor1room12'"
},
"interval": "PT1M",
"inlineVariables": {
"sensor": {
"kind": "numeric",
"value": {
"tsx": "coalesce($event.sensors.value.Double, todouble($event.sensors.value.Long))"
},
"aggregation": {
"tsx": "avg($value)"
}
}
},
"projectedVariables": [
"sensor"
]
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:00.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.0000000Z)
| where deviceId_string == "deviceId1"
| where ['sensors.sensor_string'] == "heater" and ['sensors.location_string'] == "floor1room12"
| summarize avgSensorValue= avg(coalesce(['sensors.value_double'], todouble(['sensors.value_long']))) by bin(IntervalTs = timestamp, 1m)
| project IntervalTs, avgSensorValue
Power BI
Нет автоматизированного процесса для переноса отчетов Power BI, основанных на аналитике временных рядов. Все запросы, основанные на данных, хранящихся в аналитике временных рядов, необходимо перенести в Eventhouse.
Чтобы создать эффективные отчеты временных рядов в Power BI, мы рекомендуем ссылаться на следующие информативные статьи блога:
- возможности временных рядов в Power BI
- Использование динамических параметров M без большинства ограничений
- значения времени и длительности в KQL, Power Query и Power BI
- параметры запроса KQL в Power BI
- Фильтрация и визуализация данных Kusto по местному времени
- Отчеты почти в режиме реального времени в PBI + Kusto
- шпаргалка по моделированию Power BI с помощью ADX —
Дополнительные сведения о создании эффективных отчетов временных рядов в Power BI см. в этих ресурсах.
Панель мониторинга Real-Time
Панель мониторинга Real-Time в Fabric — это коллекция плиток, которые могут быть упорядочены в страницы. Каждая плитка имеет под собой основной запрос и визуальное представление. Вы можете экспортировать запросы языка запросов Kusto (KQL) на панель мониторинга в виде визуальных элементов, а затем изменить их базовые запросы и визуальное форматирование по мере необходимости. Помимо простоты изучения данных, эта полностью интегрированная панель мониторинга обеспечивает улучшенную производительность запросов и визуализации.
Начните с создания панели мониторинга в Fabric Real-Time Intelligence. Эта мощная функция позволяет просматривать данные, настраивать визуальные элементы, применять условное форматирование и использовать параметры. Кроме того, вы можете создавать оповещения непосредственно из панелей мониторинга Real-Time, повышая возможности мониторинга. Для получения подробных инструкций по созданию интерактивной панели, обратитесь к официальной документации.