Compartilhar via


Usar dados de referência de um Banco de Dados SQL para um trabalho do Azure Stream Analytics

O Azure Stream Analytics dá suporte ao Banco de Dados SQL do Azure como uma fonte de entrada para dados de referência. É possível usar o Banco de Dados SQL como dados de referência para o trabalho do Stream Analytics no portal do Azure e no Visual Studio com as ferramentas do Stream Analytics. Este artigo monstra como realizar ambos os métodos.

Portal do Azure

Siga as etapas abaixo para adicionar o Banco de Dados SQL do Azure como uma fonte de entrada de referência usando o portal do Azure:

Pré-requisitos do portal

  1. Criar um trabalho do Stream Analytics.

  2. Crie uma conta de armazenamento para ser usada pelo trabalho do Stream Analytics.

    Importante

    O Azure Stream Analytics retém instantâneos nessa conta de armazenamento. Ao configurar a política de retenção, é imperativo que você se certifique de que o período de tempo escolhido englobe efetivamente a duração de recuperação desejada para o trabalho do Stream Analytics.

  3. Crie o Banco de Dados SQL do Azure com um conjunto de dados a ser usado como dados de referência pelo trabalho do Stream Analytics.

Definir a entrada de dados de referência do Banco de Dados SQL

  1. No trabalho do Stream Analytics, selecione Entradas em Topologia do trabalho. Clique em Adicionar referência de entrada e escolha Banco de Dados SQL.

    As entradas são selecionadas no painel de navegação à esquerda. Em Entradas, + Adicionar entrada de referência é selecionado, revelando uma lista suspensa que mostra os valores de Armazenamento de Blob e Banco de Dados SQL.

  2. Preencha as Configurações de entrada do Stream Analytics. Escolha o nome do banco de dados, o nome do servidor, o nome de usuário e a senha. Se quiser que os dados de referência de entrada sejam atualizados periodicamente, escolha "On" para especificar a taxa de atualização em DD:HH:MM. Se você tiver grandes conjuntos de dados com uma taxa de atualização curta. A consulta Delta permite que você acompanhe as alterações nos seus dados de referência recebendo todas as linhas no Banco de Dados SQL que foram inseridas ou excluídas dentro de uma hora de início, @deltaStartTime, e uma hora de término @deltaEndTime.

Veja a consulta delta.

Quando o Banco de Dados SQL estiver selecionado, a nova página de entrada do Banco de Dados SQL. Há um formulário de configuração no painel à esquerda e uma consulta de instantâneo no painel direito.

  1. Teste a consulta de instantâneo no editor de consultas SQL. Para obter mais informações, confira o artigo sobre como usar o editor de consultas SQL do portal do Azure para se conectar e consultar dados

Especificar a conta de armazenamento na configuração do trabalho

Navegue até Configurações da conta de armazenamento em Configurar e selecione Adicionar conta de armazenamento.

As configurações da conta de armazenamento são selecionadas no painel à esquerda. Há um botão Armazenar conta de armazenamento no painel à direita.

Iniciar o trabalho

Depois de configurar outras entradas, saídas e consultas, você poderá iniciar o trabalho do Stream Analytics.

Ferramentas para Visual Studio

Siga as etapas abaixo para adicionar o Banco de Dados SQL do Azure como uma fonte de entrada de referência usando o Visual Studio:

Pré-requisitos do Visual Studio

  1. Instale as ferramentas do Stream Analytics para o Visual Studio. Há suporte para as seguintes versões do Visual Studio:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Familiarize-se com o início rápido das Ferramentas do Stream Analytics para Visual Studio.

  3. Criar uma conta de armazenamento.

    Importante

    O Azure Stream Analytics retém instantâneos nessa conta de armazenamento. Ao configurar a política de retenção, é imperativo que você se certifique de que o período de tempo escolhido englobe efetivamente a duração de recuperação desejada para o trabalho do Stream Analytics.

Criar uma tabela do Banco de Dados SQL

Use o SQL Server Management Studio para criar uma tabela para armazenar os dados de referência. Saiba mais em Projetar seu primeiro Banco de Dados SQL do Azure usando o SSMS.

A tabela de exemplo usada a seguir foi criada com base nesta instrução:

create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));

Escolha sua assinatura

  1. No Visual Studio, no menu Exibir, selecione Gerenciador de Servidores.

  2. Clique com o botão direito do mouse em Azure, selecione Conectar-se à assinatura do Microsoft Azure e entre com a conta do Azure.

Criar um projeto do Stream Analytics

  1. Selecione Arquivo > Novo Projeto.

  2. Na lista de modelos à esquerda, selecione Stream Analytics e então selecione Aplicativo do Stream Analytics do Azure.

  3. Insira o Nome, o Local e o Nome da solução do projeto e selecione OK.

    O modelo do Stream Analytics é selecionado, o aplicativo do Azure Stream Analytics é selecionado e as caixas Nome, Local e Solução são realçadas.

Definir a entrada de dados de referência do Banco de Dados SQL

  1. Crie uma nova entrada.

    Em Adicionar Novo Item, Entrada está selecionado.

  2. Clique duas vezes em Input.json no Gerenciador de soluções.

  3. Preencha as Configurações de entrada do Stream Analytics. Escolha o nome do banco de dados, o nome do servidor, tipo de atualização e a taxa de atualização. Especifique a taxa de atualização no formato DD:HH:MM.

    Em Configuração de Entrada do Stream Analytics, os valores são inseridos ou selecionados nas listas suspensas.

    Se escolher "Executar apenas uma vez" ou "Executar periodicamente", um arquivo CodeBehind do SQL chamado [Alias de entrada].snapshot.sql é gerado no projeto sob o nó de arquivo Input.json.

    O arquivo CodeBehind do SQL Chemicals.snapshot.sql está realçado.

    Se escolher "Atualizar periodicamente com Delta", dois arquivos CodeBehind do SQL serão gerados: [Alias de entrada].snapshot.sql e [Alias de entrada].delta.sql.

    Os arquivos CodeBehind do SQL Chemicals.delta.sql e Chemicals.snapshot.sql são realçados.

  4. Abra o arquivo SQL no editor e grave a consulta SQL.

  5. Se estiver usando o Visual Studio 2019 e tiver instalado as ferramentas do SQL Server Data, você poderá testar a consulta clicando em Executar. Uma janela de assistente será exibida para ajudá-lo a se conectar ao Banco de Dados SQL, e o resultado da consulta será exibido na parte inferior da janela.

Especificar a conta de armazenamento

Abra o JobConfig.json para especificar a conta de armazenamento para armazenar instantâneos de referência do SQL.

A configuração de Configurar trabalho do Stream Analytics é mostrada com valores padrão. As configurações de armazenamento globais estão realçadas.

Testar localmente e implantar no Azure

Antes de implantar o trabalho no Azure, você poderá testar a lógica de consulta localmente em relação aos dados dinâmicos de entrada. Você encontra mais informações sobre esse recurso em Testar dados dinâmicos localmente usando as ferramentas do Azure Stream Analytics para Visual Studio (versão prévia). Quando você terminar o teste, clique em Enviar para o Azure. Saiba mais sobre como começar trabalho no início rápido Criar um Stream Analytics usando as ferramentas do Azure Stream Analytics para Visual Studio.

Consulta delta

Ao usar a consulta delta, são recomendadas tabelas temporais no Banco de Dados SQL do Azure.

  1. Crie uma tabela temporal no Banco de Dados SQL do Azure.

       CREATE TABLE DeviceTemporal
       (
          [DeviceId] int NOT NULL PRIMARY KEY CLUSTERED
          , [GroupDeviceId] nvarchar(100) NOT NULL
          , [Description] nvarchar(100) NOT NULL
          , [ValidFrom] datetime2 (0) GENERATED ALWAYS AS ROW START
          , [ValidTo] datetime2 (0) GENERATED ALWAYS AS ROW END
          , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
       )
       WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DeviceHistory));  -- DeviceHistory table will be used in Delta query
    
  2. Crie a consulta de instantâneo.

    Use o parâmetro @snapshotTime para instruir o runtime do Stream Analytics a obter o conjunto de dados de referência da tabela temporal válida do Banco de Dados SQL na hora do sistema. Se não fornecer esse parâmetro, você correrá o risco de obter um conjunto impreciso de dados de referência de base devido à distorção de horário. Veja a seguir um exemplo de uma consulta completa de instantâneo:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. Crie a consulta delta.

    Essa consulta recupera todas as linhas no Banco de Dados SQL que foram inseridas ou excluídas entre uma hora de início @deltaStartTime e uma hora de término @deltaEndTime. A consulta delta terá de retornar as mesmas colunas como a consulta de instantâneo, bem como a coluna operação. Esta coluna define se a linha é inserida ou excluída entre @deltaStartTime e @deltaEndTime. As linhas resultantes são sinalizadas como 1, se os registros foram inseridos, ou 2 se excluídos. A consulta também deve adicionar uma marca-d'água do lado do SQL Server para garantir que todas as atualizações no período delta sejam capturadas adequadamente. Usar a consulta delta sem a marca-d'água pode resultar em um conjunto de dados de referência incorreto.

    Quanto aos registros que foram atualizados, a tabela temporal faz a contabilidade, capturando uma operação de inserção e exclusão. O runtime do Stream Analytics aplicará os resultados da consulta delta para o instantâneo anterior a fim de manter os dados de referência atualizados. Veja a seguir um exemplo de consulta delta:

       SELECT DeviceId, GroupDeviceId, Description, ValidFrom as _watermark_, 1 as _operation_
       FROM dbo.DeviceTemporal
       WHERE ValidFrom BETWEEN @deltaStartTime AND @deltaEndTime   -- records inserted
       UNION
       SELECT DeviceId, GroupDeviceId, Description, ValidTo as _watermark_, 2 as _operation_
       FROM dbo.DeviceHistory   -- table we created in step 1
       WHERE ValidTo BETWEEN @deltaStartTime AND @deltaEndTime     -- record deleted
    

    O runtime do Stream Analytics pode executar periodicamente a consulta de instantâneo além da consulta delta para armazenar pontos de verificação.

    Importante

    Ao usar consultas delta de dados de referência, não faça atualizações idênticas à tabela de dados de referência temporal várias vezes. Isso pode fazer com que sejam produzidos resultados incorretos. Aqui está um exemplo que pode fazer com que os dados de referência produzam resultados incorretos:

     UPDATE myTable SET VALUE=2 WHERE ID = 1;
     UPDATE myTable SET VALUE=2 WHERE ID = 1;      
    

    Exemplo correto:

     UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
    

    Isso garante que nenhuma atualização duplicada seja executada.

Testar a consulta

É importante verificar se a consulta está retornando o conjunto de dados esperado que o trabalho de Stream Analytics usará como dados de referência. Para testar sua consulta, vá para entrada na seção Topologia do Trabalho no portal. Em seguida, você pode selecionar dados de exemplo em sua entrada de Referência do Banco de Dados SQL. Depois que o exemplo for disponibilizado, você poderá baixar o arquivo e verificar se os dados estão sendo retornados conforme o esperado. Se você quiser otimizar suas iterações de desenvolvimento e teste, é recomendável usar ferramentas do Stream Analytics para Visual Studio. Você também pode usar qualquer outra ferramenta de sua preferência para primeiro garantir que a consulta esteja retornando os resultados certos do Banco de Dados SQL do Azure e, em seguida, usá-la em seu trabalho do Stream Analytics.

Testar sua consulta com o Visual Studio Code

Instale as Ferramentas do Azure Stream Analytics e SQL Server (mssql) no Visual Studio Code e configure seu projeto ASA. Para obter mais informações, consulte Início Rápido: criar um trabalho de Azure Stream Analytics no Visual Studio Code e o Tutorial de extensão do SQL Server (mssql).

  1. Configure sua entrada de dados de referência do SQL.

    Um editor de Visual Studio Code (guia) mostra ReferenceSQLDatabase.json.

  2. Selecione o ícone do SQL Server e clique em Adicionar Conexão.

    + Adicionar Conexão aparece no painel esquerdo e é realçado.

  3. Preencha as informações de conexão.

    As duas caixas de informações de banco de dados e servidor são realçadas.

  4. Clique com o botão direito do mouse no SQL de referência e selecione Executar Consulta.

    Executar Consulta é realçado no menu de contexto.

  5. Escolha sua conexão.

    A caixa de diálogo informa

  6. Examine e verifique o resultado da consulta.

    Os resultados da pesquisa de consulta estão em uma guia do editor de VS Code.

Perguntas frequentes

Haverá custos adicionais se eu usar a entrada de dados de referência do SQL no Azure Stream Analytics?

Não há custos por unidade de streaming adicionais no trabalho do Stream Analytics. No entanto, é preciso que o trabalho do Stream Analytics tenha uma conta de armazenamento do Azure associada. O trabalho do Stream Analytics consulta o Banco de Dados SQL (durante o início do trabalho e o intervalo de atualização) para recuperar o conjunto de dados de referência e armazena esse instantâneo na conta de armazenamento. O armazenamento desses instantâneos acarretará cobranças adicionais, conforme detalhadas na página de preços da conta de armazenamento do Azure.

Como saber se o instantâneo de dados de referência está sendo consultado pelo Banco de Dados SQL e está sendo usado no trabalho do Azure Stream Analytics?

Há duas métricas filtradas pelo Nome lógico (nas Métricas do portal do Azure) que você pode usar para monitorar a integridade da entrada dos dados de referência do Banco de Dados SQL.

  • InputEvents: esta métrica mede o número de registros carregados do conjunto de dados de referência de Banco de Dados SQL.
  • InputEventBytes: esta métrica mede o tamanho do instantâneo de dados de referência carregado na memória do trabalho do Stream Analytics.

A combinação de ambas as métricas pode ser usada para inferir se o trabalho é a consulta do Banco de Dados SQL para buscar o conjunto de dados de referência e, então, carregá-lo na memória.

É necessário um tipo especial de Banco de Dados SQL do Azure?

O Azure Stream Analytics funciona com qualquer tipo de Banco de Dados SQL do Azure. No entanto, é importante entender que a taxa de atualização definida para sua entrada de dados de referência pode afetar sua carga de consulta. Para usar a opção de consulta delta, é recomendável usar tabelas temporais no Banco de Dados SQL do Azure.

Por que o Azure Stream Analytics armazena instantâneos na conta de armazenamento do Azure?

O Stream Analytics garante exatamente o processamento de eventos exatamente uma vez e pelo menos uma entrega de eventos. Nos casos em que problemas transitórios impactarem seu trabalho, será necessária um pequena reprodução para restaurar o estado. Para habilitar a reprodução, é necessário que esses instantâneos estejam armazenados em uma conta de Armazenamento do Azure. Confira mais informações sobre a reprodução de ponto de verificação em Conceitos de ponto de verificação e de reprodução em trabalhos do Azure Stream Analytics.

Próximas etapas