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

Dados de referência são um conjunto de dados estático ou que muda lentamente e que você junta aos seus dados de streaming para enriquecê-los, como adicionar detalhes de produtos a uma sequência de eventos de vendas. O Azure Stream Analytics suporta o Banco de Dados SQL do Azure como fonte de dados de referência, então você pode consultar e combinar esses dados com sua entrada em tempo real.

Este artigo mostra como configurar um Banco de Dados SQL do Azure como entrada de dados de referência para um trabalho de Stream Analytics, usando tanto o portal do Azure quanto o Visual Studio com ferramentas de Stream Analytics.

Adicione dados de referência do Banco de Dados SQL usando o portal do Azure

Use os seguintes passos para adicionar o Banco de Dados SQL do Azure como fonte de entrada de referência usando o portal Azure:

Pré-requisitos do portal

  1. Crie um trabalho de Stream Analytics.

  2. Crie uma conta de armazenamento para uso do trabalho do Stream Analytics.

    Importante

    Azure Stream Analytics mantém snapshots dentro desta conta de armazenamento. Ao configurar a política de retenção, certifique-se de que o intervalo de tempo escolhido inclua o tempo de recuperação que você deseja para seu trabalho de Stream Analytics.

  3. Crie seu Banco de Dados SQL do Azure com um conjunto de dados que o trabalho de Stream Analytics usa como dados de referência.

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. Selecione Adicionar entrada de referência e então selecione Banco de Dados SQL.

    Captura de tela do painel Entradas da Análise de Fluxo com Adicionar entrada de referência selecionado, mostrando uma lista suspensa com os valores Armazenamento de Blobs e Banco de Dados SQL.

  2. Preencha a configuração de entrada do Stream Analytics. Escolha o nome do banco de dados, o nome do servidor e as credenciais de login do banco de dados. Para atualizar periodicamente seus dados de referência, selecione Ativado e especifique o intervalo de atualização em DD:HH:MM. Para grandes conjuntos de dados com taxa de atualização curta, a consulta delta acompanha as mudanças dentro dos seus dados de referência ao recuperar todas as linhas no Banco de Dados SQL que foram inseridas ou excluídas entre um horário de início, @deltaStartTime, e um horário de término, @deltaEndTime.

    Para obter mais informações, consulte consulta delta.

    Captura de tela da nova página de entrada do Banco de Dados SQL com um formulário de configuração no painel esquerdo e uma consulta de snapshot no painel direito.

  3. Teste a consulta de snapshot no editor de consultas SQL. Para mais informações, veja Usar o editor de consultas SQL do portal do Azure para conectar e consultar dados.

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

Vá em Configurações da conta de armazenamento em Configurar e então selecione Adicionar conta de armazenamento.

Captura de tela do painel de configurações da conta de armazenamento com o botão Adicionar conta de armazenamento no painel direito.

Iniciar o trabalho

  1. Depois de configurar as outras entradas, saídas e consultas, inicie o trabalho de Análise de Fluxos.

Adicione dados de referência do Banco de Dados SQL usando o Visual Studio

Use os seguintes passos para adicionar o Banco de Dados SQL do Azure como 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. As ferramentas de Análise de Fluxos suportam as seguintes versões do Visual Studio:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Conheça o guia de início rápido das ferramentas do Stream Analytics para Visual Studio.

  3. Criar uma conta de armazenamento.

    Importante

    O Azure Stream Analytics armazena snapshots nesta conta de armazenamento. Ao configurar a política de retenção, certifique-se de que o intervalo de tempo escolhido inclua o tempo de recuperação que você deseja para seu trabalho de 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 seguinte afirmação cria a tabela de exemplo:

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. Selecione e segure (ou clique com o botão direito) no Azure, selecione Conectar à Assinatura do Microsoft Azure e faça login com sua conta Azure.

Criar um projeto do Stream Analytics

  1. Clique em Arquivo>Novo Projeto.

  2. Na lista de modelos, selecione Stream Analytics e depois Azure Stream Analytics Application.

  3. Digite o Nome do projeto, Local e Nome da Solução, e então selecione OK.

    Captura de tela do diálogo New Project com o template Stream Analytics e a aplicação Azure Stream Analytics selecionadas, e as caixas de Nome, Localização e Nome da Solução destacadas.

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

  1. Crie uma nova entrada.

    Captura de tela da janela de Adicionar Novo Item com Entrada selecionada.

  2. Abra Input.json em Gerenciador de Soluções.

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

    Captura de tela da Configuração de Entrada do Stream Analytics com valores preenchidos ou selecionados em listas suspensas.

    Se você escolher Executar apenas uma vez ou Executar periodicamente, Visual Studio gera um arquivo SQL CodeBehind chamado [Input Alias].snapshot.sql no projeto sob o nó do arquivo Input.json.

    Captura de tela de Gerenciador de Soluções com o arquivo SQL CodeBehind Chemicals.snapshot.sql destacado.

    Se você escolher Atualizar Periodicamente com Delta, Visual Studio gera dois arquivos SQL CodeBehind: [Input Alias].snapshot.sql e [Input Alias].delta.sql.

    Captura de tela de Gerenciador de Soluções com os arquivos SQL CodeBehind Chemicals.delta.sql e Chemicals.snapshot.sql destacados.

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

  5. Se você estiver usando o Visual Studio 2019 e instalou o SQL Server Data Tools, pode testar a consulta selecionando Executar. Um assistente se abre para ajudar você a se conectar ao Banco de Dados SQL, e o resultado da consulta aparece na janela no final.

Especificar a conta de armazenamento

Abra JobConfig.json para especificar a conta de armazenamento para armazenar snapshots de referência SQL.

Captura de tela da configuração do trabalho do Stream Analytics mostrada com valores padrão e as Configurações de Armazenamento Global destacadas.

Testar localmente e implantar no Azure

Antes de implantar o trabalho no Azure, você pode testar a lógica de consulta localmente contra dados de entrada ao vivo. Para mais informações sobre esse recurso, veja Testar dados ao vivo localmente usando as ferramentas Azure Stream Analytics para Visual Studio (Prévia). Quando terminar de testar, selecione Enviar para o Azure. Para aprender a iniciar o trabalho, consulte o guia de início rápido Criar um trabalho do Stream Analytics usando as ferramentas do Azure Stream Analytics para Visual Studio.

Consulta delta

Quando você usa a consulta delta, utilize 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 do Banco de Dados SQL válido no tempo do sistema. Se você não fornecer esse parâmetro, você corre o risco de obter um conjunto de dados de referência de base impreciso devido a desvios de relógio. O exemplo a seguir mostra uma consulta completa de snapshot:

       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 dentro de um horário de início, @deltaStartTime e um horário de término, @deltaEndTime. A consulta delta deve retornar as mesmas colunas que a consulta de snapshot, 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 um watermark no lado do SQL Server para garantir que todas as atualizações no período delta sejam capturadas corretamente. Usar uma consulta delta sem 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 então aplica os resultados da consulta delta ao snapshot anterior para manter os dados de referência atualizados. O exemplo a seguir mostra uma 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 ambiente de execução do Stream Analytics pode executar periodicamente a consulta de snapshot, além da consulta delta, para armazenar pontos de verificação.

    Importante

    Quando você usa consultas delta de dados de referência, não faça atualizações idênticas na tabela de dados de referência temporal várias vezes. Isso pode produzir resultados incorretos. Aqui está um exemplo que pode fazer com que 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);
    

    Essa condição garante que não ocorram atualizações duplicadas.

Teste sua consulta

Verifique se sua consulta retorna o conjunto de dados esperado que o trabalho de Stream Analytics usa como dados de referência. Para testar sua consulta, vá em Entradas na seção de topologia de trabalhos no portal. Depois, selecione Dados de Exemplo na entrada de referência do seu Banco de Dados SQL. Depois que o exemplo estiver disponível, você pode baixar o arquivo e verificar se os dados retornados estão conforme o esperado. Para otimizar suas iterações de desenvolvimento e teste, use as ferramentas de Análise de Fluxo para o Visual Studio. Você também pode usar qualquer outra ferramenta que preferir para primeiro garantir que a consulta retorne os resultados corretos do seu Banco de Dados SQL do Azure e, em seguida, usar essa consulta no seu trabalho de Análise de Fluxos.

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.

    Captura de tela de uma aba de editor Visual Studio Code que mostra o arquivo ReferenceSQLDatabase.json.

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

    Captura de tela do painel esquerdo com a opção Adicionar Conexão destacada.

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

    Captura de tela do formulário de conexão com as caixas de informações do banco de dados e do servidor destacadas.

  4. Selecione e segure (ou clique com o botão direito) em SQL de referência e selecione Executar Consulta.

    Captura de tela do menu de contexto com a opção Executar Consulta destacada.

  5. Escolha sua conexão.

    Captura de tela de uma caixa de diálogo que diz Criar um perfil de conexão a partir da lista abaixo, com a entrada da lista destacada.

  6. Examine e verifique o resultado da consulta.

    Captura de tela dos resultados da busca em uma aba do editor do Visual Studio Code.

Perguntas frequentes

Tenho custos extras ao usar dados de referência SQL no Azure Stream Analytics?

Não há custo extra por unidade de streaming no trabalho de Análise de Streams. No entanto, é preciso que o trabalho do Stream Analytics tenha uma conta de armazenamento do Azure associada. O trabalho de Stream Analytics consulta o Banco de Dados SQL (durante o início e o intervalo de atualização do trabalho) para recuperar o conjunto de dados de referência e armazena esse snapshot na conta de armazenamento. Armazenar esses snapshots gera custos extras detalhados na página de preços da conta de armazenamento do Azure.

Como saber se um snapshot de dados de referência está sendo consultado do SQL Database e usado no trabalho do Azure Stream Analytics?

Duas métricas, filtradas por Nome Lógico (em Métricas no portal Azure), permitem que você monitore a saúde 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 do 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.

Juntas, ambas as métricas indicam se o trabalho consulta o SQL Database para buscar o conjunto de dados de referência e depois o carrega na memória.

Preciso de um tipo especial de Banco de Dados SQL do Azure?

Azure Stream Analytics trabalha com qualquer tipo de Banco de Dados SQL do Azure. No entanto, a taxa de atualização que você configura para a entrada de dados de referência pode afetar a carga de consultas. Para usar a opção de consulta delta, use tabelas temporais no Banco de Dados SQL do Azure.

Por que o Azure Stream Analytics armazena snapshots em uma conta do Armazenamento do Azure?

Stream Analytics garante o processamento de eventos exatamente uma vez e a entrega de eventos pelo menos uma vez. Se problemas transitórios afetarem seu trabalho, é necessário um pouco de repetição para restaurar o estado. Para permitir a reprodução, esses snapshots devem ser armazenados em uma conta do Armazenamento do Azure. Para obter mais informações sobre a reexecução de ponto de verificação, consulte Conceitos de ponto de verificação e reexecução em trabalhos do Azure Stream Analytics.