Построитель цифровых двойников (предварительная версия) в руководстве Real-Time Intelligence, часть 2. Получение и обработка потоковых данных

В этой части руководства вы настраиваете другой тип примеров данных: поток данных в режиме реального времени с примеров данных автобуса, включающих временные ряды с информацией о расположениях автобусов. Вы передаете образец данных в хранилище событий (eventhouse), выполняете некоторые преобразования данных, а затем создаете ярлык для получения данных из хранилища событий в образце озера данных, созданном в предыдущем разделе. Для конструктора цифровых двойников требуется, чтобы данные были в озерном доме.

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

  1. Перейдите в рабочую область, в которой вы хотите создать ресурсы учебника. Необходимо создать все ресурсы в одной рабочей области.

  2. Выберите +Создать элемент.

  3. В поле поиска "Фильтр по типу элемента " введите Eventhouse.

    Новая панель элементов с выделенной вкладкой Eventhouse.

  4. Выберите элемент Eventhouse.

  5. Введите Учебное пособие в качестве названия платформы событий и нажмите «Создать». Хранилище событий и база данных KQL создаются одновременно под одним и тем же именем.

    Снимок экрана интерфейса Eventhouse, на котором отображено диалоговое окно

  6. После завершения подготовки нажмите кнопку "Начать работу " в окне приветствия.

    Снимок экрана интерфейса приветствия Eventhouse с выделенной кнопкой

    Отображается страница обзора системы eventhouse.

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

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

Добавление источника

Следуйте этим шагам, чтобы создать EventStream и добавить данные Buses в качестве источника.

  1. На странице обзора системы в хранилище событий выберите новую базу данных Учебника из списка баз данных KQL .

  2. На ленте меню выберите "Получить данные " и выберите "Eventstream > New eventstream".

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

  3. Введите BusEventstream в качестве имени и нажмите кнопку "Создать". Когда поток событий будет готов, он откроется.

  4. Выберите "Использовать примеры данных".

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

  5. На странице "Добавить источник " выберите "Автобусы " в разделе "Пример данных". Введите BusDataSource для исходного имени. Нажмите кнопку "Добавить".

    Снимок экрана: выбор данных примера автобуса.

    Когда новый поток событий будет готов, он открывается на холсте разработки.

Преобразование данных

В этом разделе описано, как добавить одно преобразование в входящие примеры данных. На этом шаге выполняется приведение строковых полей ScheduleTime и Timestamp к типу DateTime, а также переименование TimestampArrivalTime для ясности. Поля временных меток должны быть в формате DateTime, чтобы построитель цифровых двойников (предварительная версия) мог использовать их как данные временных рядов.

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

  1. Нажмите стрелку вниз на Transform events or add destination, затем выберите предопределенную операцию "Управление полями". Плитка переименована в ManageFields.

    Снимок экрана: выбор операции

  2. Щелкните значок редактирования (в виде карандаша) на плитке MangeFields , которая открывает панель "Управление полями ".

  3. Выберите "Добавить все поля". Это действие гарантирует, что все поля из исходных данных присутствуют через преобразование.

    Подсказка

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

  4. Выберите поле метки времени . Переключите тип "Изменить " на "Да". Для Преобразованного Типа выберите ДатаВремя в раскрывающемся списке. В поле "Имя" введите новое имя ActualTime.

    Снимок экрана: изменение поля метки времени.

  5. Выберите поле ScheduleTime . Переключите тип "Изменить " на "Да". Для Преобразованного Типа выберите ДатаВремя в раскрывающемся списке. Оставьте имя ScheduleTime.

    Нажмите кнопку "Сохранить", чтобы сохранить оба обновленных свойства.

  6. Область "Управление полями " закрывается. Плитка ManageFields продолжает отображать ошибку, пока не подключите ее к месту назначения.

Добавление назначения

  1. На ленте меню выберите "Добавить назначение", а затем выберите Eventhouse.

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

  2. Введите следующие сведения в панели Eventhouse:

    Поле Ценность
    Режим приема данных Обработка событий перед поглощением
    Имя назначения УчебникDestination
    Рабочая область Выберите рабочую область, в которой вы создали ресурсы.
    Eventhouse Руководство
    База данных KQL Руководство
    Целевая таблица KQL Создание нового— ввод bus_data_raw в качестве имени таблицы
    Формат входных данных Json
    Включите погрузку данных после добавления источника Проверено
  3. Нажмите кнопку "Сохранить".

  4. На холсте разработки выберите плитку ManageFields и перетащите стрелку на плитку TutorialDestination , чтобы подключить их. Это действие разрешает все сообщения об ошибках в потоке.

  5. На ленте меню выберите "Опубликовать". Теперь поток событий начинает отправлять образцы потоковых данных в ваше хранилище событий.

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

    Снимок экрана: предварительный просмотр данных.

  7. Убедитесь, что таблица данных активна в вашем хранилище событий. Перейдите в базу данных KQL учебника и обновите представление. Теперь она содержит таблицу с именем bus_data_raw который содержит данные.

    Снимок экрана: таблица bus_data_raw с данными.

Преобразование данных с помощью политик обновления

Теперь, когда данные потоковой передачи шины находится в базе данных KQL, можно использовать функции и политику обновления Kusto для дальнейшего преобразования данных. Преобразования, выполняемые в этом разделе, подготавливают данные для использования в построителе цифровых двойников (предварительная версия) и включают следующие действия:

  • Разбивает поле Properties JSON на отдельные столбцы для каждого из содержащихся в нем элементов данных и BusStatusTimeToNextStation . Построитель цифровых двойников не имеет возможностей синтаксического анализа JSON, поэтому перед переходом данных в построитель цифровых двойников необходимо разделить эти значения.
  • Добавляет столбец StopCode, который представляет собой уникальный ключ, представляющий каждую остановку автобуса. Этот шаг предназначен только для завершения примера набора данных для поддержки этого сценария руководства. Присоединенные экземпляры сущностей из отдельных источников данных должны содержать общий столбец, который построитель цифровых моделей может использовать для их связывания, поэтому на этом этапе добавляется имитированный набор целых чисел, соответствующий Stop_Code полю в наборе данных о статических автобусных остановках. В реальном мире связанные наборы данных уже содержат нечто общее.
  • Создает новую таблицу с именем bus_data_processed , которая содержит преобразованные данные шины.
  • Включает доступность OneLake для новой таблицы, чтобы можно было использовать ярлык для доступа к данным в вашем TutorialLH lakehouse.

Чтобы выполнить запросы преобразования, выполните следующие действия.

  1. Откройте редактор запросов KQL, выбрав Tutorial_queryset в базе данных KQL.

    Снимок экрана: открытие редактора запросов.

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

    // Set columns
    .create-or-alter function extractBusData ()
    {
        bus_data_raw
        | extend BusState = tostring(todynamic(Properties).BusState)
            , TimeToNextStation = tostring(todynamic(Properties).TimeToNextStation)
            , StopCode = toint(10000 + abs(((toint(BusLine) * 100) + toint(StationNumber)) % 750))
        | project-away Properties
    }
    
    // Create table
    .create table bus_data_processed (ActualTime:datetime, TripId:string, BusLine:long, StationNumber:long, ScheduleTime:datetime, BusState:string, TimeToNextStation:string, StopCode:int)
    
    //Load data into table
    .alter table bus_data_processed policy update
    ```
    [{
        "IsEnabled": true,
        "Source": "bus_data_raw",
        "Query": "extractBusData",
        "IsTransactional": false,
        "PropagateIngestionProperties": true
    }]
    ```
    
    // Enable OneLake availability
    .alter-merge table bus_data_processed policy mirroring dataformat=parquet with (IsEnabled=true, TargetLatencyInMinutes=5)
    

    Подсказка

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

    Снимок экрана: включение доступности OneLake в пользовательском интерфейсе.

    При использовании параметра пользовательского интерфейса задержка по умолчанию составляет 15 минут до нескольких часов в зависимости от объема данных. Чтобы уменьшить задержку до пяти минут, используйте команду .alter-merge table, как показано в предыдущем блоке кода.

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

  4. После выполнения запросов в базе данных создается новая таблица с именем bus_data_processed. После короткого ожидания он начинает заполняться обработанными данными шины данных.

    Снимок экрана: таблица bus_data_processed с данными.

Создать ярлык для lakehouse

Наконец, создайте ярлык, предоставляющий обработанные данные шины в TutorialLH lakehouse, содержащем примеры данных для конструирования цифровых двойников (предварительная версия). Этот шаг необходим, так как конструктор цифровых двойников требует, чтобы источник данных был озерохранилищем.

  1. Перейдите в TutorialLH lakehouse (вы создали его ранее в первой части, Загрузить контекстные данные). На ленте меню выберите Получить данные>Новая ссылка.

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

  2. В разделе "Внутренние источники" выберите Microsoft OneLake. Затем выберите базу данных KQL Учебник.

  3. Разверните список таблиц и установите флажок рядом с bus_data_processed. Нажмите кнопку Далее.

  4. Просмотрите сведения о ярлыке и нажмите кнопку "Создать".

    Снимок экрана: создание ярлыка.

  5. Таблица bus_data_processed теперь доступна в вашем хранилище данных. Убедитесь, что он содержит данные (это может занять несколько минут).

    Снимок экрана: bus_data_processed в лейкхаусе.

Затем вы используете эти данные Lakehouse в качестве источника для создания онтологии в конструкторе цифровых двойников.

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