Поделиться через


Перенос аналитики временных рядов 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. Получение статистики о данных телеметрии

Данные

  1. Обзор среды
    • Запишите идентификатор среды из первой части полного доменного имени для доступа к данным (например, d390b0b0-1445-4c0c-8365-68d6382c1c2a из .env.crystal-dev.windows-int.net)
  2. Обзор среды — конфигурация хранилища> — учетная запись хранилища>
  3. Получение статистики папок с помощью обозревателя службы хранилища
    • Размер записи и количество BLOB в папке PT=Time.

Шаг миграции 2. Перенос данных в хранилище событий

Создание дома событий

Чтобы настроить Eventhouse для процесса миграции, следуйте шагам, описанным в "Создание Eventhouse".

Прием данных

Чтобы получить данные для учетной записи хранения, соответствующей вашему экземпляру Time Series Insights, выполните шаги, описанные в получение данных из Azure Storage.

Убедитесь, что вы:

  1. Выберите соответствующий контейнер и укажите URI, а также необходимый маркер SAS или ключ учетной записи.

  2. Настройте путь к папке фильтра файлов как V=1/PT=Time для фильтрации соответствующих BLOB-объектов.

  3. Проверьте вычисленную схему и удалите все редко запрашиваемые столбцы, сохраняя по крайней мере метку времени, столбцы TSID и значения. Чтобы убедиться, что все ваши данные копируются в Eventhouse, добавьте еще один столбец и используйте преобразование сопоставления DropMappedFields.

  4. Завершите процесс приема.

Запрос данных

Теперь, после успешного приема данных, вы можете начать изучение с помощью набора запросов KQL . Если вам нужно получить доступ к данным из пользовательского клиентского приложения, Eventhouse предоставляет пакеты SDK для основных языков программирования, таких как C# (ссылка), Java (ссылка) и Node.js (ссылка).

Перенос модели временных рядов в Azure Data Explorer

Модель можно скачать в формате JSON из среды TSI с помощью пользовательского интерфейса TSI Explorer или API пакетной службы TSM. Затем модель можно импортировать в Eventhouse.

  1. Скачайте TSM из TSI UX.

  2. Удалите первые три строки с помощью Visual Studio Code или другого редактора.

    снимок экрана миграции TSM в Azure Data Explorer— удаление первых 3 строк

  3. Использование Visual Studio Code или другого редактора, поиск и замена, используя regex \},\n \{ на }{

    снимок экрана миграции TSM в Azure Data Explorer — поиск и замена

  4. Загрузка в 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 см. в этих ресурсах.

Панель мониторинга Real-Time

Панель мониторинга Real-Time в Fabric — это коллекция плиток, которые могут быть упорядочены в страницы. Каждая плитка имеет под собой основной запрос и визуальное представление. Вы можете экспортировать запросы языка запросов Kusto (KQL) на панель мониторинга в виде визуальных элементов, а затем изменить их базовые запросы и визуальное форматирование по мере необходимости. Помимо простоты изучения данных, эта полностью интегрированная панель мониторинга обеспечивает улучшенную производительность запросов и визуализации.

Начните с создания панели мониторинга в Fabric Real-Time Intelligence. Эта мощная функция позволяет просматривать данные, настраивать визуальные элементы, применять условное форматирование и использовать параметры. Кроме того, вы можете создавать оповещения непосредственно из панелей мониторинга Real-Time, повышая возможности мониторинга. Для получения подробных инструкций по созданию интерактивной панели, обратитесь к официальной документации.