Compartilhar via


Tutorial: Criar um grafo dos Gêmeos Digitais do Azure usando a CLI do Azure

Neste tutorial, você criará um grafo nos Gêmeos Digitais do Azure usando modelos, gêmeos e relações. A ferramenta usada neste tutorial é o conjunto de comandos dos Gêmeos Digitais do Azure para a CLI do Azure.

Você pode usar os comandos da CLI para executar ações essenciais dos Gêmeos Digitais do Azure, como carregar modelos, criar e modificar gêmeos e criar relações. Examine também a documentação de referência do conjunto de comandos az dt para ver o conjunto completo de comandos da CLI.

Neste tutorial, você vai...

  • Modelar um ambiente
  • Criar gêmeos digitais
  • Adicionar relações para formar um grafo
  • Consultar o grafo para responder perguntas

Pré-requisitos

Para concluir as etapas neste tutorial, primeiro conclua os pré-requisitos a seguir.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Baixar os modelos de exemplo

O tutorial usa dois modelos pré-gravados que fazem parte do projeto de exemplo de ponta a ponta de C# para os Gêmeos Digitais do Azure. Os arquivos de modelo estão localizados aqui:

Para ter os arquivos em seu computador, use os links de navegação acima e copie os corpos dos arquivos em arquivos locais no computador, usando os mesmos nomes (Room.json e Floor.json).

Preparar o ambiente para a CLI do Azure

Configurar sessão da CLI

Para começar a trabalhar com os Gêmeos Digitais do Azure na CLI, faça logon e defina o contexto da CLI da sua assinatura para esta sessão. Execute estes comandos na janela da CLI:

az login
az account set --subscription "<your-Azure-subscription-ID>"

Dica

Você também pode usar o nome da sua assinatura em vez da ID no comando acima.

Se esta é a primeira vez que você usa essa assinatura com os Gêmeos Digitais do Azure, execute este comando para se registrar no namespace dos Gêmeos Digitais do Azure. (Se você não tiver certeza disso, não haverá problemas em executá-lo novamente mesmo que já tenha feito isso no passado.)

az provider register --namespace 'Microsoft.DigitalTwins'

Em seguida, você adicionará a Extensão de IoT do Microsoft Azure para a CLI do Azure para habilitar comandos para interagir com os Gêmeos Digitais do Azure e com outros serviços de IoT. Execute este comando para verificar se você tem a última versão da extensão:

az extension add --upgrade --name azure-iot

Agora você está pronto para trabalhar com os Gêmeos Digitais do Azure na CLI do Azure.

É possível verificar isso executando az dt --help a qualquer momento para ver uma lista dos comandos dos Gêmeos Digitais do Azure de nível superior que estão disponíveis.

Preparar uma instância dos Gêmeos Digitais do Azure

Para trabalhar com os Gêmeos Digitais do Azure neste artigo, primeiro você precisa configurar uma instância dos Gêmeos Digitais do Azure e as permissões necessárias para usá-la. Se você já tiver uma instância dos Gêmeos Digitais do Azure configurada de algum trabalho anterior, poderá usar essa instância.

Caso contrário, siga as instruções descritas em Configurar uma instância e uma autenticação. As instruções também contêm etapas para confirmar se você concluiu cada etapa com êxito e está pronto para passar a usar sua nova instância.

Depois de configurar sua instância do Gêmeos Digitais do Azure, anote os seguintes valores que você precisará para se conectar à instância mais tarde:

  • O nome do host da instância
  • A assinatura do Azure usada para criar a instância

Dica

Se você souber o nome amigável da instância, poderá usar o seguinte comando da CLI para obter o nome do host e os valores da assinatura:

az dt show --dt-name <Azure-Digital-Twins-instance-name>

Eles aparecerão na saída desta forma: Captura de tela da janela do navegador do Cloud Shell mostrando a saída do comando az dt show. O campo hostName e a ID da assinatura estão realçados.

Modelar um ambiente físico com DTDL

Agora que a CLI e a instância dos Gêmeos Digitais do Azure estão configurados, você pode começar a criar um grafo de um cenário.

A primeira etapa na criação de uma solução dos Gêmeos Digitais do Azure é definir modelos gêmeos para o ambiente.

Os modelos são semelhantes às classes nas linguagens de programação orientadas a objeto; elas fornecem modelos definidos pelo usuário para os gêmeos digitais seguirem e criarem uma instância deles posteriormente. Eles são escritos em uma linguagem semelhante a JSON chamada DTDL (Linguagem de Definição dos Gêmeos Digitais) e podem definir as propriedades, as relações e os componentes de um gêmeo.

Observação

A DTDL também permite a definição de comandos em gêmeos digitais. No entanto, atualmente os comandos não têm suporte nos Gêmeos Digitais do Azure.

Navegue no computador até o arquivo Room.json que você criou na seção Pré-requisitos. Abra-o em um editor de código e altere-o das seguintes maneiras:

  1. Atualizar o número de versão, de modo a indicar que você está fornecendo uma versão mais atualizada do modelo. Faça isso alterando o 1 no final do valor @id para 2. Qualquer número maior que o da versão atual também funcionará.

  2. Editar uma propriedade. Altere o nome da propriedade Humidity para HumidityLevel (ou algo diferente se quiser. Caso use algo diferente de HumidityLevel, lembre-se do que usou e continue usando isso em vez de HumidityLevel ao longo do tutorial).

  3. Adicionar uma propriedade. Abaixo da propriedade HumidityLevel que termina na linha 15, cole o código a seguir para adicionar uma propriedade RoomName à sala:

    ,{
      "@type": "Property",
      "name": "RoomName",
      "schema": "string"
    }
    
  4. Adicionar uma relação. Abaixo da propriedade RoomName que você acabou de adicionar, cole o seguinte código para adicionar a capacidade desse tipo de gêmeo de gerar relações do tipo contains com outros gêmeos:

    ,{
      "@type": "Relationship",
      "name": "contains"
    }
    

Quando você terminar, o modelo atualizado deverá corresponder a:

{
    "@id": "dtmi:example:Room;2",
    "@type": "Interface",
    "displayName": "Room",
    "contents": [
      {
        "@type": "Property",
        "name": "Temperature",
        "schema": "double"
      },
      {
        "@type": "Property",
        "name": "HumidityLevel",
        "schema": "double"
      }
      ,{
        "@type": "Property",
        "name": "RoomName",
        "schema": "string"
      }
      ,{
        "@type": "Relationship",
        "name": "contains"
      }
    ],
    "@context": "dtmi:dtdl:context;3"
  }

Salve o arquivo antes de continuar.

Carregar modelos nos Gêmeos Digitais do Azure

Depois de criar modelos, você precisa carregá-los na instância dos Gêmeos Digitais do Azure. Isso vai configurar a instância de serviço dos Gêmeos Digitais do Azure com o seu vocabulário de domínio personalizado. Após carregar os modelos, será possível criar instâncias gêmeas para usá-los.

  1. Se você estiver usando uma instalação local do CLI do Azure, poderá ignorar esta etapa. Se você estiver usando o Cloud Shell, precisará carregar seus arquivos de modelo no armazenamento do Cloud Shell para que os arquivos fiquem disponíveis quando você executar o comando do Cloud Shell que os utiliza. Para fazer isso, selecione o ícone "Carregar/baixar arquivos" e escolha "Carregar".

    Captura de tela da janela do navegador do Cloud Shell mostrando a seleção do ícone Carregar.

    Navegue até o arquivo Room.json em seu computador e selecione "Abrir". Em seguida, repita a etapa em Floor.json.

  2. Em seguida, use o comando az dt model create conforme mostrado abaixo para carregar o modelo Room atualizado para sua instância dos Gêmeos Digitais do Azure. O segundo comando carrega outro modelo, Floor, que você também usará na próxima seção para criar tipos diferentes de gêmeos. Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho) e um espaço reservado de um caminho para cada arquivo de modelo. Se você estiver usando Cloud Shell, Room.json e Floor.json estarão no diretório principal de armazenamento, para que você possa usar apenas os nomes de arquivo diretamente no comando abaixo, onde um caminho é necessário.

    az dt model create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --models <path-to-Room.json>
    az dt model create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --models <path-to-Floor.json>
    

    A saída de cada comando exibirá informações sobre o modelo carregado com êxito.

    Dica

    Você também pode carregar todos os modelos em um diretório ao mesmo tempo usando a opção --from-directory para o comando model create. Para obter mais informações, confira Parâmetros opcionais para az dt model create.

  3. Verifique se os modelos foram criados com o comando az dt model list, conforme mostrado abaixo. Fazer isso imprimirá uma lista com todos os modelos que foram carregados na instância dos Gêmeos Digitais do Azure, com todas as suas informações. Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    az dt model list --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --definition
    

    Procure pelo modelo Room editado nos resultados:

    Captura de tela do Cloud Shell mostrando o resultado do comando model list, que inclui o modelo Room atualizado.

Errors

A CLI também trata erros do serviço.

Execute novamente o comando az dt model create para tentar carregar pela segunda vez um dos modelos carregados:

az dt model create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --models Room.json

Como os modelos não podem ser substituídos, a execução desse comando no mesmo modelo agora retornará o código de erro ModelIdAlreadyExists.

Criar gêmeos digitais

Agora que alguns modelos foram carregados em sua instância dos Gêmeos Digitais do Azure, você pode criar gêmeos digitais com base nas definições do modelo. Gêmeos digitais representam as entidades no seu ambiente de negócios – itens como sensores em uma fazenda, salas em um prédio ou luzes em um carro.

Para criar um gêmeo digital, use o comando az dt twin create. Você precisa referenciar o modelo em que o gêmeo se baseia e pode optar por definir valores iniciais para qualquer propriedade no modelo. Não é preciso fornecer informações sobre a relação neste estágio.

  1. Execute este código na CLI para criar vários gêmeos, com base no modelo Room que você atualizou anteriormente e em outro modelo, Floor. Lembre-se de que o modelo Room tem três propriedades. Portanto, é possível fornecer argumentos com os valores iniciais delas. (Inicializar valores de propriedade em geral é opcional, mas eles são necessários para este tutorial.) Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    az dt twin create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --dtmi "dtmi:example:Room;2" --twin-id room0 --properties '{"RoomName":"Room0", "Temperature":70, "HumidityLevel":30}'
    az dt twin create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --dtmi "dtmi:example:Room;2" --twin-id room1 --properties '{"RoomName":"Room1", "Temperature":80, "HumidityLevel":60}'
    az dt twin create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --dtmi "dtmi:example:Floor;1" --twin-id floor0
    az dt twin create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --dtmi "dtmi:example:Floor;1" --twin-id floor1
    

    Observação

    Se você estiver usando algo diferente de Cloud Shell no ambiente do Bash, talvez seja necessário fazer escape de determinados caracteres no JSON em linha para que ele seja analisado corretamente.

    Para obter mais informações, consulte Usar caracteres especiais em diferentes shells.

    A saída de cada comando mostrará informações sobre o gêmeo criado com êxito (incluindo as propriedades dos gêmeos do cômodo que foram inicializadas com eles).

  2. Verifique se os gêmeos foram criados usando o comando as dt twin query, conforme mostrado abaixo. A consulta mostrada localiza todos os gêmeos digitais em sua instância dos Gêmeos Digitais do Azure. Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT * FROM DIGITALTWINS"
    

    Procure pelos gêmeos room0, room1, floor0 e floor1 nos resultados. Veja um trecho que mostra parte do resultado da consulta.

    Captura de tela do Cloud Shell mostrando o resultado parcial da consulta de gêmeos, incluindo room0 e room1.

Observação

Após a realização de uma alteração nos dados do grafo, talvez haja uma latência de até dez segundos antes que as alterações sejam exibidas nas consultas.

A API do DigitalTwins reflete as alterações imediatamente. Portanto, se você precisar de uma resposta instantânea, use uma solicitação de API (DigitalTwins GetById) ou uma chamada de SDK (GetDigitalTwin) para obter dados dos gêmeos em vez de uma consulta.

Modificar um gêmeo digital

Você também pode modificar as propriedades de um gêmeo que criou.

  1. Execute o comando az dt twin update para alterar o RoomName de room0 do Room0 par PresidentialSuite. Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    az dt twin update --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id room0 --json-patch '{"op":"add", "path":"/RoomName", "value": "PresidentialSuite"}'
    

    Observação

    É recomendável usar a CLI no ambiente do Bash para este tutorial. Se estiver usando o ambiente do PowerShell, talvez você precise escapar os caracteres de aspas para que o valor JSON --json-patch seja analisado corretamente.

    A saída desse comando mostrará as informações atuais do gêmeo e você verá o novo valor de RoomName no resultado.

    Captura de tela do Cloud Shell mostrando o resultado do comando update, que inclui um RoomName igual a PresidentialSuite.

  2. Você pode verificar se a atualização foi bem-sucedida executando o comando az dt twin show para ver as informações de room0. Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    az dt twin show --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id room0
    

    A saída deve refletir o nome atualizado.

Criar um grafo adicionando relações

Em seguida, você pode criar algumas relações entre esses gêmeos para conectá-los em um grafo de gêmeos. Grafos de gêmeos são usados para representar todo o ambiente.

Os tipos de relações que você pode criar de um tipo de gêmeo para outro são definidos nos modelos que você carregou anteriormente. A definição de modelo para Floor especifica que os andares podem ter um tipo de relação chamado contains. Como a definição do modelo especifica essa relação, é possível criar uma relação do tipo contains de cada gêmeo Floor para a sala correspondente que ele contém.

Para adicionar uma relação, use o comando az dt twin relationship create. Especifique o gêmeo no qual a relação tem origem, o tipo de relação e o gêmeo ao qual a relação está se conectando. Por fim, dê à relação uma ID exclusiva. Se uma relação tiver sido definida para ter propriedades, você também poderá inicializar as propriedades dela nesse comando.

  1. Execute o código a seguir para adicionar uma relação do tipo contains de cada um dos gêmeos de Floor que você criou anteriormente a cada gêmeo de Room correspondente. As relações são nomeadas relationship0 e relationship1. Há um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    az dt twin relationship create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --relationship-id relationship0 --relationship contains --twin-id floor0 --target room0
    az dt twin relationship create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --relationship-id relationship1 --relationship contains --twin-id floor1 --target room1
    

    Dica

    A relação contains no modelo Floor também foi definida com duas propriedades, ownershipUser e ownershipDepartment. Portanto, você também pode fornecer argumentos com os valores iniciais para elas ao criar as relações. Para criar uma relação com essas propriedades inicializadas, adicione a opção --properties a qualquer um dos comandos acima, desta forma:

    ... --properties '{"ownershipUser":"MyUser", "ownershipDepartment":"MyDepartment"}'
    

    A saída de cada comando exibirá informações sobre a relação criada com êxito.

  2. Você pode verificar as relações com um dos comandos a seguir, que imprimem as relações na sua instância dos Gêmeos Digitais do Azure. Cada comando tem um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

    • Para ver todas as relações provenientes de cada andar (exibindo as relações de um lado):
      az dt twin relationship list --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id floor0
      az dt twin relationship list --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id floor1
      
    • Para ver todas as relações chegando em cada sala (exibindo a relação do "outro" lado):
      az dt twin relationship list --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id room0 --incoming
      az dt twin relationship list --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id room1 --incoming
      
    • Para procurar essas relações individualmente, por ID:
      az dt twin relationship show --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id floor0 --relationship-id relationship0
      az dt twin relationship show --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --twin-id floor1 --relationship-id relationship1
      

O gêmeos e as relações que você configurou neste tutorial formam o seguinte grafo conceitual:

Um diagrama mostrando um grafo conceitual. floor0 está conectado por meio de relationship0 a room0 e floor1 está conectado por meio de relationship1 a room1.

Consultar o grafo de gêmeos para responder às perguntas sobre o ambiente

Um dos principais recursos dos Gêmeos Digitais do Azure é a capacidade de consultar o grafo de gêmeos com facilidade e eficiência para responder às perguntas sobre o seu ambiente. Na CLI do Azure, a consulta é feita com o comando az dt twin query.

Observação

Após a realização de uma alteração nos dados do grafo, talvez haja uma latência de até dez segundos antes que as alterações sejam exibidas nas consultas.

A API do DigitalTwins reflete as alterações imediatamente. Portanto, se você precisar de uma resposta instantânea, use uma solicitação de API (DigitalTwins GetById) ou uma chamada de SDK (GetDigitalTwin) para obter dados dos gêmeos em vez de uma consulta.

Execute as consultas a seguir na CLI para responder algumas perguntas sobre o ambiente de exemplo. Cada comando tem um espaço reservado para o nome do host da instância (você também pode usar o nome amigável da instância com uma pequena redução no desempenho).

  1. Quais são todas as entidades do meu ambiente representadas nos Gêmeos Digitais do Azure? (consultar tudo)

    az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT * FROM DIGITALTWINS"
    

    Essa consulta permite que você faça um resumo rápido de seu ambiente e verifique se tudo está representado como você gostaria dentro dos Gêmeos Digitais do Azure. O resultado da consulta é uma saída que contém cada gêmeo digital com os detalhes. Veja um trecho:

    Captura de tela do Cloud Shell mostrando o resultado parcial da consulta de gêmeos, incluindo room0 e room1.

    Dica

    Você pode reconhecer que esse é o mesmo comando usado na seção Criar gêmeos digitais para localizar todos os Gêmeos Digitais do Azure na instância.

  2. Quais são as salas em meu ambiente? (consultar por modelo)

    az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT * FROM DIGITALTWINS T WHERE IS_OF_MODEL(T, 'dtmi:example:Room;2')"
    

    Você pode restringir a consulta aos gêmeos de um determinado tipo a fim de obter informações mais específicas sobre o que é representado. O resultado mostra room0 e room1, porém não mostra floor0 nem floor1 (pois eles são andares, não salas).

    Captura de tela do Cloud Shell mostrando o resultado da consulta de modelo, que inclui somente room0 e room1.

  3. Quais são as salas em floor0? (consultar por relação)

    az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT room FROM DIGITALTWINS floor JOIN room RELATED floor.contains where floor.\$dtId = 'floor0'"
    

    Você pode consultar com base nas relações em seu grafo para obter informações sobre como os gêmeos estão conectados ou para restringir a consulta a uma determinada área. Esta consulta também ilustra que uma ID de gêmeo (como floor0 na consulta acima) é consultada usando o campo de metadados $dtId. Somente room0 está em floor0 e, portanto, é a única sala no resultado desta consulta.

    Captura de tela do Cloud Shell mostrando o resultado da consulta de relação, que inclui room0.

    Observação

    Ao usar o Cloud Shell para executar uma consulta com campos de metadados como este, iniciados por $, você deve escapar o $ com uma barra invertida para informar ao Cloud Shell que ele não é uma variável e deve ser consumido como um literal no texto da consulta. Isso é refletido na captura de tela acima.

  4. Quais são todos os gêmeos em meu ambiente com temperatura acima de 75? (consultar por propriedade)

    az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT * FROM DigitalTwins T WHERE T.Temperature > 75"
    

    Você pode consultar o grafo com base nas propriedades para responder a diferentes tipos de perguntas, incluindo para localizar exceções no ambiente que podem precisar de atenção. Também há suporte a outros operadores de comparação (<, >, = ou !=). room1 aparece nos resultados aqui porque tem uma temperatura de 80.

    Captura de tela do Cloud Shell mostrando o resultado da consulta de propriedade, que inclui somente room1.

  5. Quais são as salas em floor0 com temperatura acima de 75? (consulta composta)

    az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT room FROM DIGITALTWINS floor JOIN room RELATED floor.contains where floor.\$dtId = 'floor0' AND IS_OF_MODEL(room, 'dtmi:example:Room;2') AND room.Temperature > 75"
    

    Você também pode combinar as consultas anteriores como faria no SQL, usando operadores de combinação como AND, OR e NOT. Essa consulta usa AND para deixar a consulta anterior sobre as temperaturas dos gêmeos mais específica. O resultado agora inclui apenas salas com temperaturas acima de 75 que estão em floor0– que, nesse caso, é nenhuma delas. O conjunto de resultados é vazio.

    Captura de tela do Cloud Shell mostrando o resultado da consulta composta, que não inclui nenhum item.

Limpar os recursos

Depois de concluir este tutorial, você poderá escolher quais recursos gostaria de remover, dependendo do que você gostaria de fazer em seguida.

  • Se planeja prosseguir para o próximo tutorial, você pode manter os recursos configurados aqui e reutilizar a instância do Gêmeos Digitais do Azure sem limpar nada por enquanto.
  • Se você quiser continuar usando a instância dos Gêmeos Digitais do Azure deste artigo, mas limpar todos os seus modelos, gêmeos e relações, execute o seguinte comando da CLI az dt job deletion:

    az dt job deletion create -n <name-of-Azure-Digital-Twins-instance> -y
    

    Se você quiser apenas excluir alguns desses elementos, poderá usar os comandos az dt twin relationship delete, az dt twin delete e az dt model delete para excluir seletivamente apenas os elementos que você deseja remover.

  • Caso não precise de nenhum dos recursos criados neste tutorial, você poderá excluir a instância dos Gêmeos Digitais do Azure e todos os outros recursos deste artigo com o comando az group delete da CLI. Isso exclui todos os recursos do Azure em um grupo de recursos, bem como o grupo de recursos em si.

    Importante

    A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos.

    Abra o Azure Cloud Shell ou uma janela da CLI local e execute o comando a seguir para excluir o grupo de recursos e tudo o que ele contém.

    az group delete --name <your-resource-group>
    

Talvez você também queira excluir os arquivos de modelo criados no computador local.

Próximas etapas

Neste tutorial, você começou a usar os Gêmeos Digitais do Azure criando um grafo em sua instância usando a CLI do Azure. Você criou modelos, gêmeos digitais e relações para formar um grafo. Você também executou algumas consultas no grafo para ter uma ideia de quais tipos de perguntas os Gêmeos Digitais do Azure podem responder sobre um ambiente.

Continue para o próximo tutorial a fim de combinar os Gêmeos Digitais do Azure com outros serviços do Azure para concluir um cenário de ponta a ponta orientado por dados: