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.

    Inputs is selected in the left navigation pane. On Inputs, + Add reference input is selected, revealing a drop-down list that shows the values Blob storage and SQL Database.

  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.

When SQL Database is selected, the SQL Database New input page appears. There is a configuration form in the left pane, and a Snapshot query in the right pane.

  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.

Storage account settings is selected in the left pane. There is an Add storage account button in the right pane.

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.

    The Stream Analytics template is selected, Azure Stream Analytics Application is selected, and the Name, Location, and Solution names boxes are highlighted.

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

  1. Crie uma nova entrada.

    On Add New Item, Input is selected.

  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.

    In Stream Analytics Input Configuration, values are entered or selected from drop-down lists.

    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.

    The SQL CodeBehind file Chemicals.snapshot.sql is highlighted.

    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.

    The SQL CodeBehind files Chemicals.delta.sql and Chemicals.snapshot.sql are highlighted.

  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.

Stream Analytics Job Configure Configuration is shown with default values. The Global Storage Settings are highlighted.

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.

    A Visual Studio Code editor (tab) shows ReferenceSQLDatabase.json.

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

    + Add Connection appears in the left pane and is highlighted.

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

    The two boxes for database and server information are highlighted.

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

    Execute Query is highlighted in the context menu.

  5. Escolha sua conexão.

    The dialog box says

  6. Examine e verifique o resultado da consulta.

    The query search results are in a VS Code editor tab.

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