Compartilhar via


Construtor de gêmeos digitais (versão prévia) no tutorial do Real-Time Intelligence parte 2: Obter e processar dados de streaming

Nesta parte do tutorial, você configura outro tipo de dados de exemplo: um fluxo de dados em tempo real de dados de ônibus de exemplo que inclui informações de série temporal sobre locais de ônibus. Você transmite os dados de exemplo para uma plataforma de eventos, executa algumas transformações nos dados e, em seguida, cria um atalho para transferir os dados da plataforma de eventos para o data lakehouse de exemplo que você criou na seção anterior. O construtor de gêmeos digitais requer que os dados estejam em uma lakehouse.

Criar uma casa de eventos

  1. Navegue até o espaço de trabalho no qual você quer criar seus recursos do tutorial. Você deve criar todos os recursos no mesmo workspace.

  2. Escolha + Novo item.

  3. Na caixa de pesquisa Filtrar por tipo de item, insira Eventhouse.

    Novo painel de itens com Eventhouse realçado.

  4. Selecione o item Eventhouse.

  5. Insira Tutorial como o nome da casa de eventos e clique em Criar. O Eventhouse e um banco de dados KQL são criados simultaneamente com o mesmo nome.

    Captura de tela da interface Eventhouse exibindo a caixa de diálogo do nome Eventhouse e o botão Criar em destaque.

  6. Quando o provisionamento for concluído, clique em Introdução na janela de boas-vindas.

    Captura de tela da interface de boas-vindas do Eventhouse com o botão Introdução realçado.

    A página de visão geral do Sistema do eventhouse é mostrada.

Criar o fluxo de eventos

Nesta seção, você criará um fluxo de eventos para enviar dados de transmissão do barramento de exemplo ao centro de eventos.

Adicionar origem

Siga estas etapas para criar o fluxo de eventos e adicionar dados de exemplo de Barramentos como a origem.

  1. Na página Visão geral do sistema da casa de eventos, selecione o novo banco de dados tutorial na lista de bancos de dados KQL .

  2. Na faixa de opções do menu, selecione Obter dados e escolha Eventstream > New eventstream.

    Captura de tela da obtenção de um novo fluxo de eventos para o banco de dados do Tutorial.

  3. Insira BusEventstream como o nome e selecione Criar. Quando o fluxo de eventos estiver pronto, ele será aberto.

  4. Selecione Usar dados de amostra.

    Captura de tela da seleção de dados de exemplo para o fluxo de eventos.

  5. Na página Adicionar origem, selecione Ônibus em Dados de Exemplo. Insira BusDataSource para o nome de origem. Selecione Adicionar.

    Captura de tela da seleção dos dados de exemplo do ônibus.

    Quando o novo fluxo de eventos estiver pronto, ele será aberto na tela de criação.

Transformar dados

Nesta seção, você adicionará uma transformação aos dados de exemplo de entrada. Esta etapa converte os campos `ScheduleTime` e `Timestamp` para o tipo DateTime, e renomeia `Timestamp` para `ArrivalTime` por clareza. Os campos de carimbo de data/hora precisam estar no formato DateTime do construtor de gêmeos digitais (versão prévia) para usá-los como dados de série temporal.

Siga estas etapas para adicionar a transformação de dados.

  1. Selecione a seta para baixo no bloco Transformar eventos ou adicionar destino, em seguida, selecione a operação predefinida Gerenciar campos. O bloco é renomeado para ManageFields.

    Captura de tela da seleção da operação Gerenciar campos.

  2. Selecione o ícone de edição (em forma de lápis) no bloco MangeFields , que abre o painel Gerenciar campos .

  3. Selecione Adicionar todos os campos. Essa ação garante que todos os campos dos dados de origem estejam presentes por meio da transformação.

    Dica

    Se nenhum campo estiver disponível para ser adicionado, aguarde alguns minutos para que os dados de exemplo sejam inicializados e tente novamente. Você pode selecionar os nós anteriores no painel para visualizar seus dados e confirmar se os dados de exemplo os alcançaram.

  4. Selecione o campo Carimbo de Data/Hora . Alterne o tipo de alteração para Sim. Para Tipo Convertido, selecione DateTime na lista suspensa. Para Nome, insira o novo nome de ActualTime.

    Captura de tela da alteração do campo Timestamp.

  5. Selecione o campo ScheduleTime . Alterne o tipo de alteração para Sim. Para Tipo Convertido, selecione DateTime na lista suspensa. Deixe o nome como ScheduleTime.

    Selecione Salvar para salvar ambas as propriedades atualizadas.

  6. O painel Gerenciar campos é fechado. O bloco ManageFields continua a exibir um erro até que você o conecte a um destino.

Adicionar destino

  1. Na faixa de opções do menu, selecione Adicionar destino e, em seguida, selecione Eventhouse.

    Captura de tela da seleção do destino da casa de eventos.

  2. Insira as seguintes informações no painel Eventhouse:

    Campo Valor
    modo de ingestão de dados Processamento de eventos antes da ingestão
    Nome do destino TutorialDestination
    Área de trabalho Selecione o espaço de trabalho em que você criou seus recursos.
    Eventhouse Tutorial
    Banco de dados KQL Tutorial
    Tabela de destino KQL Criar novo – insira bus_data_raw como o nome da tabela
    Formato de dados de entrada Json
    Ativar a ingestão depois de adicionar a fonte de dados Verificado
  3. Clique em Salvar.

  4. Na tela de criação, selecione o bloco ManageFields e arraste a seta para o bloco TutorialDestination para conectá-los. Essa ação resolve todas as mensagens de erro no fluxo.

  5. Na faixa de opções do menu, selecione Publicar. O fluxo de eventos agora começa a enviar os dados de streaming de exemplo para sua casa de eventos.

  6. Após alguns minutos, o cartão TutorialDestination na visualização eventstream exibe dados de exemplo na guia Visualização de dados. Talvez seja necessário atualizar a visualização algumas vezes enquanto espera a chegada dos dados.

    Captura de tela dos dados de visualização.

  7. Verifique se a tabela de dados está ativa em sua casa de eventos. Acesse o banco de dados KQL do Tutorial e atualize o modo de exibição. Agora ele contém uma tabela chamada bus_data_raw que contém dados.

    Captura de tela da tabela bus_data_raw com dados.

Transformar os dados usando políticas de atualização

Agora que os dados de streaming do ônibus estão em um banco de dados KQL, você pode usar funções e uma política de atualização do Kusto para transformar ainda mais os dados. As transformações executadas nesta seção preparam os dados para uso no construtor de gêmeos digitais (versão prévia) e incluem as seguintes ações:

  • Divide o campo Properties JSON em colunas separadas para cada um de seus itens de dados contidos BusStatus e TimeToNextStation. O construtor de gêmeos digitais não tem recursos de análise JSON, portanto, você precisa separar esses valores antes que os dados vão para o construtor de gêmeos digitais.
  • Adiciona a coluna StopCode, que é uma chave exclusiva que representa cada ponto de ônibus. A finalidade desta etapa é apenas concluir o conjunto de dados de exemplo para dar suporte a este cenário de tutorial. Instâncias de entidade conectáveis de fontes de dados separadas devem conter uma coluna comum que o digital twin builder pode usar para ligá-las, então esta etapa adiciona um conjunto simulado de valores int que corresponde ao campo Stop_Code no conjunto de dados de paradas de ônibus estáticas. No mundo real, os conjuntos de dados relacionados já contêm algum tipo de commonalidade.
  • Cria uma tabela nova chamada bus_data_processed que contém os dados de barramento transformados.
  • Habilita a disponibilidade do OneLake para a nova tabela, permitindo usar um atalho para acessar os dados no TutorialLH lakehouse.

Para executar as consultas de transformação, siga estas etapas.

  1. Abra o editor de consultas KQL selecionando Tutorial_queryset em seu banco de dados KQL.

    Captura de tela da abertura do editor de consultas.

  2. Copie e cole os snippets de código a seguir no editor de consultas (você pode substituir as consultas de exemplo ou adicioná-las na parte inferior). Execute cada bloco de código em ordem.

    // 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)
    

    Dica

    Você também pode habilitar a disponibilidade do OneLake para a nova tabela por meio da interface do usuário em vez de usar o código. Selecione a tabela e alterne a disponibilidade do OneLake.

    Captura de tela da habilitação da disponibilidade do OneLake na interface do usuário.

    Com a opção de interface do usuário, a latência padrão é de 15 minutos a várias horas, dependendo do volume de dados. Para reduzir a latência para cinco minutos, use o comando .alter-merge table , conforme mostrado no bloco de código anterior.

  3. Opcionalmente, renomeie a guia de consulta para Bus Data Processing para que você possa identificá-la mais tarde.

  4. Depois de executar as consultas, uma nova tabela é criada em seu banco de dados chamada bus_data_processed. Depois de uma breve espera, ele começa a preencher com os dados de ônibus processados.

    Captura de tela da tabela bus_data_processed com dados.

Criar atalho do lakehouse

Por fim, crie um atalho que expõe os dados de barramento processados no TutorialLH lakehouse, que contém dados de exemplo para o digital twin builder (preview). Essa etapa é necessária porque o construtor de gêmeos digitais exige que sua fonte de dados seja um "lakehouse" (um tipo de armazenamento de dados híbrido).

  1. Acesse seu TutorialLH lakehouse (você o criou anteriormente na primeira parte, carregar dados contextuais). Na faixa de opções do menu, selecione Obter dados>Nova atalho.

    Captura de tela do botão Novo atalho.

  2. Em Fontes internas, selecione Microsoft OneLake. Em seguida, escolha o banco de dados Tutorial KQL.

  3. Expanda a lista de Tabelas e marque a caixa ao lado de bus_data_processed. Selecione Próximo.

  4. Examine os detalhes do atalho e selecione Criar.

    Captura de tela da criação do atalho.

  5. A tabela bus_data_processed agora está disponível em sua casa do lago. Verifique se ele contém dados (isso pode levar alguns minutos).

    Captura de tela de bus_data_processed na casa do lago.

Em seguida, use esses dados do Lakehouse como fonte para criar uma ontologia no construtor de gêmeos digitais.

Próxima etapa