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. Você pode usar o Banco de Dados SQL como dados de referência para seu trabalho do Stream Analytics no portal do Azure e no Visual Studio com ferramentas do Stream Analytics. Este artigo demonstra como fazer ambos os métodos.

Portal do Azure

Use as seguintes etapas 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 uma tarefa 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 nesta conta de armazenamento. Ao configurar a política de retenção, é imperativo garantir que o período de tempo escolhido abranja efetivamente a duração de recuperação desejada para seu trabalho do Stream Analytics.

  3. Crie seu 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 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 entrada de referência 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, nome do servidor, nome de usuário e senha. Se desejar que a entrada de dados de referência seja atualizada periodicamente, escolha "Ativado" 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ê controle alterações em seus dados de referência recuperando todas as linhas no Banco de dados SQL que foram inseridas ou excluídas dentro de uma hora de início e uma hora @deltaStartTime@deltaEndTimede término.

Consulte 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, consulte Usar o editor de consultas SQL do portal do Azure para conectar e consultar dados

Especificar 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 a tarefa

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

Ferramentas para o Visual Studio

Use as seguintes etapas 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 Visual Studio. As seguintes versões do Visual Studio são suportadas:

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

  3. Criar uma conta de armazenamento.

    Importante

    O Azure Stream Analytics retém instantâneos nesta conta de armazenamento. Ao configurar a política de retenção, é imperativo garantir que o período de tempo escolhido abranja efetivamente a duração de recuperação desejada para seu trabalho do Stream Analytics.

Criar uma tabela do Banco de dados SQL

Use o SQL Server Management Studio para criar uma tabela para armazenar seus dados de referência. Consulte Criar seu primeiro Banco de Dados SQL do Azure usando o SSMS para obter detalhes.

A tabela de exemplo usada no exemplo a seguir foi criada a partir da seguinte instrução:

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

Selecione a sua subscrição

  1. No Visual Studio, no menu Ver, selecione Explorador de Servidores.

  2. Clique com o botão direito do rato no Azure, selecione Ligar à Subscrição do Microsoft Azure e inicie sessão com a sua conta do Azure.

Criar um projeto do Stream Analytics

  1. Selecione Arquivo > Novo Projeto.

  2. Na lista de modelos, no lado esquerdo, selecione Stream Analytics e, em seguida, selecione Aplicação do Azure Stream Analytics.

  3. Insira o nome do projeto, o local e o nome da solução 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 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 a Configuração de entrada do Stream Analytics. Escolha o nome do banco de dados, o nome do servidor, o 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 você escolher "Executar apenas uma vez" ou "Executar periodicamente", um arquivo SQL CodeBehind chamado [Input Alias].snapshot.sql será gerado no projeto no nó do arquivo Input.json .

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

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

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

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

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

Especificar conta de armazenamento

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

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

Teste localmente e implante no Azure

Antes de implantar o trabalho no Azure, você pode testar a lógica de consulta localmente em relação aos dados de entrada em tempo real. Para obter mais informações sobre esse recurso, consulte Testar dados ao vivo localmente usando as ferramentas do Azure Stream Analytics para Visual Studio (Visualização). Quando terminar o teste, clique em Enviar para o Azure. Consulte o Guia de início rápido Criar um Stream Analytics usando as ferramentas do Azure Stream Analytics para Visual Studio para saber como iniciar o trabalho.

Consulta delta

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

  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 tempo de execução do Stream Analytics a obter o conjunto de dados de referência da tabela temporal do Banco de dados SQL válida no momento do sistema. Se você não fornecer esse parâmetro, corre o risco de obter um conjunto de dados de referência de base impreciso devido a distorções de relógio. Um exemplo de consulta de instantâneo completo é mostrado abaixo:

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

    Essa consulta recupera todas as linhas do Banco de dados SQL que foram inseridas ou excluídas em uma @deltaEndTime de hora de início, @deltaStartTime e hora de término. A consulta delta deve retornar as mesmas colunas que a consulta de instantâneo, bem como a operação de coluna. 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 marca d'água do lado do SQL Server para garantir que todas as atualizações no período delta sejam capturadas adequadamente. Usar consulta delta sem marca d'água pode resultar em conjunto de dados de referência incorreto.

    Para registros que foram atualizados, a tabela temporal faz a escrituração capturando uma operação de inserção e exclusão. O tempo de execução do Stream Analytics aplicará os resultados da consulta delta ao instantâneo anterior para manter os dados de referência atualizados. Um exemplo de consulta delta é mostrado abaixo:

       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
    

    Observe que o tempo de execução 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 na tabela de dados de referência temporal várias vezes. Isso pode causar 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 sua consulta está retornando o conjunto de dados esperado que o trabalho do Stream Analytics usará como dados de referência. Para testar sua consulta, vá para Entrada na seção Topologia de trabalho no portal. Em seguida, você pode selecionar Dados de Exemplo na entrada de Referência do Banco de Dados SQL. Depois que o exemplo estiver disponível, você poderá baixar o arquivo e verificar se os dados retornados estão conforme o esperado. Se você quiser otimizar suas iterações de desenvolvimento e teste, é recomendável usar as ferramentas do Stream Analytics para Visual Studio. Você também pode qualquer outra ferramenta de sua preferência para primeiro garantir que a consulta esteja retornando os resultados corretos do Banco de Dados SQL do Azure e, em seguida, usar isso em seu trabalho do Stream Analytics.

Teste sua consulta com o Visual Studio Code

Instale o Azure Stream Analytics Tools e o SQL Server (mssql) no Visual Studio Code e configure seu projeto ASA. Para obter mais informações, consulte Guia de início rápido: criar um trabalho do 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 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 em SQL de referência e selecione Executar consulta.

    Execute Query is highlighted in the context menu.

  5. Escolha a sua ligação.

    The dialog box says

  6. Reveja e verifique o resultado da consulta.

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

FAQs do

Incorrerei em custos adicionais usando a entrada de dados de referência SQL no Azure Stream Analytics?

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

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

Há duas métricas filtradas por Nome Lógico (em Portal do Azure de Métricas) que você pode usar para monitorar a integridade da entrada de dados de referência do Banco de Dados SQL.

  • InputEvents: essa métrica mede o número de registros carregados do conjunto de dados de referência do Banco de dados SQL.
  • InputEventBytes: essa 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 está consultando o Banco de dados SQL para buscar o conjunto de dados de referência e, em seguida, carregando-o na memória.

Vou precisar de um tipo especial de Banco de Dados SQL do Azure?

O Azure Stream Analytics funcionará com qualquer tipo de Banco de Dados SQL do Azure. No entanto, é importante entender que a taxa de atualização definida para a entrada de dados de referência pode afetar a carga da 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 um processamento de eventos e pelo menos uma entrega de eventos. Nos casos em que problemas transitórios afetam seu trabalho, uma pequena quantidade de repetição é necessária para restaurar o estado. Para habilitar a repetição, é necessário ter esses instantâneos armazenados em uma conta de Armazenamento do Azure. Para obter mais informações sobre a repetição de pontos de verificação, consulte Conceitos de ponto de verificação e repetição em trabalhos do Azure Stream Analytics.

Próximos passos