Compartilhar via


Usar dados de referência para pesquisas no Stream Analytics

Os dados de referência são um conjunto de dados finito que está estático ou muda lentamente por natureza. Ele é usado para executar uma pesquisa ou aumentar seus fluxos de dados. Os dados de referência também são conhecidos como uma tabela de pesquisa.

Veja um cenário de IoT como exemplo. Você pode armazenar metadados sobre sensores, que não são alterados com frequência, em dados de referência. Em seguida, você pode integrá-lo com fluxos de dados de IoT em tempo real.

O Azure Stream Analytics carrega dados de referência na memória para obter o processamento de fluxo de baixa latência. Para usar dados de referência em seu trabalho do Stream Analytics, você geralmente usará uma junção de dados de referência em sua consulta.

Example

Você pode ter um fluxo em tempo real de eventos gerados quando os carros passam por um pedágio. O pedágio pode capturar as placas em tempo real. Esses dados podem se unir a um conjunto de dados estático que tem detalhes de registro para identificar placas de licença que expiraram.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

O Stream Analytics dá suporte ao Armazenamento de Blobs do Azure, ao Azure Data Lake Storage Gen2 e ao Banco de Dados SQL do Azure como a camada de armazenamento para dados de referência. Se você tiver os dados de referência em outros armazenamentos de dados, tente usar o Azure Data Factory para extrair, transformar e carregar os dados em um dos armazenamentos de dados com suporte. Para obter mais informações, confira a visão geral da Atividade de Cópia no Azure Data Factory.

Armazenamento de Blobs do Azure ou Azure Data Lake Storage Gen2

Os dados de referência são modelados como uma sequência de blobs em ordem crescente da data/hora especificada no nome do blob. Os blobs só podem ser adicionados ao final da sequência usando uma data/hora maior que a especificada pelo último blob na sequência. Os blobs são definidos na configuração de entrada.

Para obter mais informações, consulte Usar dados de referência do Armazenamento de Blobs para uma tarefa do Stream Analytics.

Configurar dados de referência de blob

Para configurar seus dados de referência, primeiro você precisa criar uma entrada do tipo dados de referência. A tabela a seguir explica cada propriedade que você precisa fornecer ao criar a entrada de dados de referência com sua descrição.

Nome da propriedade Description
Alias de entrada Um nome amigável usado na consulta de trabalho para fazer referência a essa entrada.
Conta de armazenamento O nome da conta de armazenamento em que os blobs estão localizados. Se ele estiver na mesma assinatura do trabalho do Stream Analytics, selecione-o na lista suspensa.
Chave da conta de armazenamento A chave secreta associada à conta de armazenamento. Essa chave será preenchida automaticamente se a conta de armazenamento estiver na mesma assinatura do trabalho do Stream Analytics.
Contêiner de armazenamento Os contêineres fornecem um agrupamento lógico para blobs armazenados no Armazenamento de Blobs. Ao carregar um blob no Armazenamento de Blobs, você deve especificar um contêiner para esse blob.
Padrão de caminho Essa propriedade necessária é usada para localizar seus blobs dentro do contêiner especificado. Dentro do caminho, você pode optar por especificar uma ou mais instâncias das variáveis {date} e {time}.
Exemplo 1: products/{date}/{time}/product-list.csv
Exemplo 2: products/{date}/product-list.csv
Exemplo 3: product-list.csv

Se o blob não existir no caminho especificado, o trabalho do Stream Analytics aguardará indefinidamente para que o blob fique disponível.
Formato de data [opcional] Se você usou {date} dentro do padrão de caminho especificado, selecione o formato de data no qual os blobs são organizados na lista suspensa de formatos com suporte.
Exemplo: YYYY/MM/DD ou MM/DD/YYYY
Formato de hora [opcional] Se você usou {time} dentro do padrão de caminho especificado, selecione o formato de tempo no qual os blobs são organizados na lista suspensa de formatos com suporte.
Exemplo: HH, HH/mm ou HH-mm
Formato de serialização de eventos Para garantir que suas consultas funcionem da maneira esperada, o Stream Analytics precisa saber qual formato de serialização você está usando para fluxos de dados de entrada. Para dados de referência, os formatos com suporte são CSV e JSON.
Codificação UTF-8 é o único formato de codificação com suporte no momento.

Dados de referência estáticos

Talvez não se espere que os dados de referência mudem. Para habilitar o suporte para dados de referência estáticos, especifique um caminho estático na configuração de entrada.

O Stream Analytics pega o blob do caminho especificado. Os tokens de substituição {date} e {time} não são necessários. Como os dados de referência são imutáveis no Stream Analytics, não é aconselhável substituir um blob de dados de referência estático.

Gerar dados de referência em um agendamento

Seus dados de referência podem ser um conjunto de dados de alteração lenta. Para atualizar dados de referência, especifique um padrão de caminho na configuração de entrada usando os tokens de substituição {date} e {time}. O Stream Analytics seleciona as definições de dados de referência atualizadas com base nesse padrão de caminho.

Por exemplo, um padrão de sample/{date}/{time}/products.csv com formato de data YYYY-MM-DD e formato de hora HH-mm instrui o Stream Analytics a buscar o blob sample/2015-04-16/17-30/products.csv atualizado em 16 de abril de 2015, às 17h30 UTC.

O Stream Analytics verifica automaticamente os blobs de dados de referência atualizados em um intervalo de um minuto. Um blob com a marca temporal 10:30:00 pode ser carregado com um pequeno atraso, por exemplo, 10:30:30. Você percebe um pequeno atraso no trabalho do Stream Analytics fazendo referência a esse blob.

Para evitar esses cenários, envie o blob mais cedo do que o horário efetivo de destino, que é 10:30:00 neste exemplo. O trabalho do Stream Analytics agora tem tempo suficiente para detectar e carregar o blob na memória e executar operações nele.

Observação

Atualmente, os trabalhos do Stream Analytics procuram a atualização do blob somente quando o horário da máquina avança até o horário codificado no nome do blob. Por exemplo, o trabalho procura sample/2015-04-16/17-30/products.csv o mais rápido possível, mas não antes de 16 de abril de 2015, às 17h30 UTC. Ele nunca procurará um blob com um horário codificado anterior ao último horário descoberto.

Por exemplo, depois que o trabalho localiza o blob sample/2015-04-16/17-30/products.csv, ele ignora todos os arquivos com uma data codificada anterior a 16 de abril de 2015, às 17h30. Se um blob de chegada tardia for criado no mesmo contêiner, o trabalho não irá utilizá-lo.

Em outro exemplo, sample/2015-04-16/17-30/products.csv só é produzido em 16 de abril de 2015, às 22h03, mas nenhum blob com uma data anterior está presente no contêiner. Em seguida, o trabalho usa esse arquivo a partir de 16 de abril de 2015, às 22h03 e usa os dados de referência anteriores até lá.

Uma exceção a esse comportamento ocorre quando a tarefa precisa reprocessar dados voltar no tempo ou quando é iniciada pela primeira vez.

No momento de início, o trabalho procura o blob mais recente produzido antes da hora de início do trabalho especificada. Esse comportamento garante que haja um conjunto de dados de referência não vazio quando o trabalho for iniciado. Se não for encontrado, o trabalho exibirá o seguinte diagnóstico: Initializing input without a valid reference data blob for UTC time <start time>.

Quando um conjunto de dados de referência é atualizado, um log de diagnóstico é gerado: Loaded new reference data from <blob path>. Por muitos motivos, um trabalho pode precisar recarregar um conjunto de dados de referência anterior. Na maioria das vezes, o motivo é reprocessar dados passados. O mesmo log de diagnóstico é gerado nesse momento. Essa ação não implica que os dados de fluxo atuais usem dados de referência anteriores.

O Azure Data Factory pode ser usado para orquestrar a tarefa de criar os blobs atualizados exigidos pelo Stream Analytics para atualizar definições de dados de referência.

O Data Factory é um serviço de integração de dados baseado em nuvem que orquestra e automatiza a movimentação e a transformação de dados. O Data Factory dá suporte à conexão a um grande número de armazenamentos de dados locais e baseados em nuvem. Ele pode mover dados facilmente em um agendamento regular que você mesmo especificar.

Para obter mais informações sobre como configurar um pipeline do Data Factory para gerar dados de referência para o Stream Analytics que são atualizados em um agendamento predefinido, consulte este exemplo do GitHub.

Dicas sobre como atualizar dados de referência de blob

  • Não substitua blobs de dados de referência porque eles são imutáveis.
  • A maneira recomendada de atualizar dados de referência é:
    • Use {date}/{time} no modelo de caminho.
    • Adicione um novo blob usando o mesmo contêiner e o mesmo padrão de caminho definidos na entrada do trabalho.
    • Use uma data/hora maior que a especificada pelo último blob na sequência.
  • Os blobs de dados de referência não são* ordenados pela hora da Última Modificação do blob. Eles são ordenados somente pela data e hora especificadas no nome do blob usando as substituições de {date} e {time}.
  • Para evitar ter que listar um grande número de blobs, exclua blobs antigos para os quais o processamento não será mais feito. O Stream Analytics pode ter que reprocessar uma pequena quantidade em alguns cenários, como uma reinicialização.

Banco de Dados SQL do Azure

Seu trabalho do Stream Analytics recupera dados de referência do Banco de Dados SQL e os armazena como um instantâneo na memória para processamento. O instantâneo dos dados de referência também é armazenado em um contêiner em uma conta de armazenamento. Especifique a conta de armazenamento nas configurações.

O contêiner é criado automaticamente quando o trabalho é iniciado. Se o trabalho parar ou entrar em um estado com falha, os contêineres criados automaticamente serão excluídos quando o trabalho for reiniciado.

Se os dados de referência forem um conjunto de dados que muda lentamente, você precisará atualizar periodicamente o snapshot usado em sua tarefa.

Com o Stream Analytics, você pode definir uma taxa de atualização ao configurar sua conexão de entrada do Banco de Dados SQL. O runtime do Stream Analytics consulta sua instância do Banco de Dados SQL no intervalo especificado pela taxa de atualização. A taxa de atualização mais rápida com suporte é uma vez por minuto. Para cada atualização, o Stream Analytics armazena um novo instantâneo na conta de armazenamento fornecida.

O Stream Analytics fornece duas opções para consultar sua instância do Banco de Dados SQL. Uma consulta de instantâneo é obrigatória e deve ser incluída em cada tarefa. O Stream Analytics executa consultas instantâneas periodicamente com base no intervalo de atualização. Ele usa o resultado da consulta (o instantâneo) como o conjunto de dados de referência.

A consulta de instantâneo deve ajustar-se à maioria dos cenários. Se você encontrar problemas de desempenho com grandes conjuntos de dados e taxas de atualização rápidas, use a opção de consulta delta. Consultas que levam mais de 60 segundos para retornar um conjunto de dados de referência resultam em um tempo limite excedido.

Com a opção de consulta delta, o Stream Analytics inicialmente executa a consulta de instantâneo para obter um conjunto de dados de referência de linha de base. Posteriormente, o Stream Analytics executa a consulta delta periodicamente com base no intervalo de atualização para recuperar alterações incrementais. Essas alterações incrementais são aplicadas continuamente ao conjunto de dados de referência para mantê-lo atualizado. Usar a opção de consulta delta pode ajudar a reduzir o custo de armazenamento e as operações de E/S de rede.

Configurar dados de referência do Banco de Dados SQL

Para configurar os dados de referência do Banco de Dados SQL, primeiro você precisa criar a entrada de dados de referência. A tabela a seguir explica cada propriedade que você precisa fornecer ao criar a entrada de dados de referência com sua descrição. Para obter mais informações, consulte Usar dados de referência de um Banco de Dados SQL para um trabalho do Stream Analytics.

Você pode usar a Instância Gerenciada de SQL do Azure como uma entrada de dados de referência. Você deve configurar um ponto de extremidade público na Instância Gerenciada de SQL. Em seguida, você define manualmente as seguintes configurações no Stream Analytics. Uma máquina virtual do Azure que executa o SQL Server com um banco de dados anexado também tem suporte ao definir manualmente essas configurações.

Nome da propriedade Description
Alias de entrada Um nome amigável usado na consulta de trabalho para fazer referência a essa entrada.
Subscription Sua assinatura.
Base de dados A instância do Banco de Dados SQL que contém seus dados de referência. Para a Instância Gerenciada de SQL, você deve especificar a porta 3342. Um exemplo é sampleserver.public.database.windows.net,3342.
Nome de usuário O nome de usuário associado à instância do Banco de Dados SQL.
Senha A senha associada à instância do Banco de Dados SQL.
Atualizar periodicamente Essa opção permite que você selecione uma taxa de atualização. Selecione Em para especificar a taxa de atualização em DD:HH:MM.
Consulta instantânea Essa opção de consulta padrão recupera os dados de referência da instância do Banco de Dados SQL.
Consulta delta Para cenários avançados com grandes conjuntos de dados e uma taxa de atualização curta, adicione uma consulta delta.

Limitação de tamanho

Use conjuntos de dados de referência com menos de 300 MB para obter o melhor desempenho. Há suporte para conjuntos de dados de referência de 5 GB ou inferiores em trabalhos com seis unidades de streaming ou mais. O uso de um conjunto de dados de referência volumoso pode afetar a latência de ponta a ponta do seu trabalho.

A complexidade da consulta pode aumentar para incluir o processamento com estado, como agregações em janelas, junções temporais e funções analíticas temporais. Quando a complexidade aumenta, o tamanho máximo com suporte dos dados de referência diminui.

Se o Stream Analytics não puder carregar os dados de referência e executar operações complexas, o trabalho fica sem memória e falha. Nesses casos, a métrica de utilização percentual da unidade de streaming atinge 100%.

Número de unidades de streaming Tamanho recomendado
1 50 MB ou inferior
3 150 MB ou inferior
6 e além 5 GB ou inferior

O suporte para compactação não está disponível para dados de referência. Para conjuntos de dados de referência com mais de 300 MB, use o Banco de Dados SQL como a origem com a opção de consulta delta para um desempenho ideal. Se a opção de consulta de delta não for usada nesses cenários, você verá picos na métrica de atraso da marca d'água sempre que o conjunto de dados de referência for atualizado.

Unir vários conjuntos de dados de referência em um trabalho

Você só pode unir uma entrada de dados de referência a uma entrada de streaming. Portanto, para unir vários conjuntos de dados de referência, divida sua consulta em várias etapas. Veja um exemplo:

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

Trabalhos do IoT Edge

Apenas dados de referência locais são suportados para tarefas de borda do Stream Analytics. Quando um trabalho é implantado em um dispositivo IoT Edge, ele carrega dados de referência do caminho de arquivo definido pelo usuário. Tenha um arquivo de dados de referência pronto no dispositivo.

Para um contêiner do Windows, coloque o arquivo de dados de referência na unidade local e compartilhe a unidade local com o contêiner do Docker. Para um contêiner do Linux, crie um volume do Docker e preencha o arquivo de dados para o volume.

Os dados de referência em uma atualização do IoT Edge são ativados por uma implantação. Depois de acionado, o módulo do Stream Analytics escolhe os dados atualizados sem interromper o trabalho em execução.

Você pode atualizar os dados de referência de duas maneiras:

  • Atualize o caminho de dados de referência em seu trabalho do Stream Analytics no portal do Azure.
  • Atualize a implantação do IoT Edge.

Próximas etapas