Tutorial: Analise dados de chamadas fraudulentas com o Stream Analytics e visualize resultados no painel do Power BI

Este tutorial mostra como analisar dados de chamadas telefônicas usando o Azure Stream Analytics. Os dados da chamada telefônica, gerados por um aplicativo cliente, contêm chamadas fraudulentas, que são detetadas pelo trabalho do Stream Analytics. Você pode usar técnicas deste tutorial para outros tipos de deteção de fraude, como fraude de cartão de crédito ou roubo de identidade.

Neste tutorial, vai realizar as seguintes tarefas:

  • Gere dados de chamada telefônica de exemplo e envie-os para os Hubs de Eventos do Azure.
  • Criar uma tarefa do Stream Analytics.
  • Configure a entrada e saída de trabalho.
  • Defina consultas para filtrar chamadas fraudulentas.
  • Teste e inicie o trabalho.
  • Visualize os resultados no Power BI.

Pré-requisitos

Antes de começar, certifique-se de que concluiu os seguintes passos:

Iniciar sessão no Azure

Inicie sessão no portal do Azure.

Criar um hub de eventos

Você precisa enviar alguns dados de exemplo para um hub de eventos antes que o Stream Analytics possa analisar o fluxo de dados de chamadas fraudulentas. Neste tutorial, você envia dados para o Azure usando os Hubs de Eventos do Azure.

Use as seguintes etapas para criar um hub de eventos e enviar dados de chamada para esse hub de eventos:

  1. Inicie sessão no portal do Azure.

  2. Selecione Todos os serviços no menu à esquerda, selecione Internet das coisas, passe o mouse sobre Hubs de Eventos e selecione o botão + (Adicionar ).

    Captura de tela mostrando a página de criação de Hubs de Eventos.

  3. Na página Criar namespace, execute estas etapas:

    1. Selecione uma assinatura do Azure onde você deseja criar o hub de eventos.

    2. Em Grupo de recursos, selecione Criar novo e insira um nome para o grupo de recursos. O namespace Hubs de Eventos é criado neste grupo de recursos.

    3. Em Nome do namespace, insira um nome exclusivo para o namespace Hubs de Eventos.

    4. Em Local, selecione a região na qual você deseja criar o namespace.

    5. Em Nível de preço, selecione Padrão.

    6. Selecione Rever + criar na parte inferior da página.

      Captura de tela mostrando a página Criar namespace.

    7. Na página Revisão + criação do assistente de criação de namespace, selecione Criar na parte inferior da página depois de revisar todas as configurações.

  4. Depois que o namespace for implantado com êxito, selecione Ir para o recurso para navegar até a página Namespace dos Hubs de Eventos .

  5. Na página Namespace de Hubs de Eventos , selecione +Hub de Eventos na barra de comandos.

    Captura de tela mostrando o botão Adicionar hub de eventos na página Namespace de Hubs de Eventos.

  6. Na página Criar Hub de Eventos, insira um Nome para o hub de eventos. Defina a contagem de partições como 2. Use as opções padrão nas configurações restantes e selecione Revisar + criar.

    Captura de tela mostrando a página Criar hub de eventos.

  7. Na página Rever + criar, selecione Criar na parte inferior da página. Em seguida, aguarde até que a implementação seja executada com êxito.

Conceder acesso ao hub de eventos e obter uma cadeia de ligação

Antes que um aplicativo possa enviar dados para os Hubs de Eventos do Azure, o hub de eventos deve ter uma política que permita o acesso. A política de acesso produz uma cadeia de ligação que inclui as informações de autorização.

  1. Na página Namespace de Hubs de Eventos , selecione Políticas de acesso compartilhado no menu à esquerda.

  2. Selecione RootManageSharedAccessKey na lista de políticas.

  3. Em seguida, selecione o botão de cópia ao lado de Cadeia de conexão - chave primária.

  4. Cole a cadeia de ligação num editor de texto. Vai precisar desta cadeia de ligação na secção seguinte.

    A cadeia de ligação é semelhante à seguinte:

    Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>

    Observe que a cadeia de conexão contém vários pares chave-valor separados por ponto-e-vírgula: Endpoint, SharedAccessKeyName e SharedAccessKey.

Iniciar a aplicação geradora de eventos

Antes de iniciar a aplicação TelcoGenerator, deve configurá-la para enviar dados para os Hubs de Eventos do Azure que criou anteriormente.

  1. Extraia o conteúdo do ficheiro TelcoGenerator.zip.

  2. Abra o TelcoGenerator\TelcoGenerator\telcodatagen.exe.config arquivo em um editor de texto de sua escolha Há mais de um .config arquivo, então certifique-se de abrir o correto.

  3. Atualize o elemento <appSettings> no ficheiro de configuração com os seguintes detalhes:

    • Defina o valor da chave EventHubName como o valor do EntityPath no final da cadeia de conexão.
    • Defina o valor da chave Microsoft.ServiceBus.ConnectionString para a cadeia de conexão para o namespace. Se você usar uma cadeia de conexão para um hub de eventos, não um namespace, remova EntityPath o valor (;EntityPath=myeventhub) no final. Não se esqueça de remover o ponto-e-vírgula que precede o valor EntityPath.
  4. Guarde o ficheiro.

  5. Em seguida, abra uma janela de comando e mude para a pasta onde deszipou a aplicação TelcoGenerator. Em seguida, introduza o seguinte comando:

    .\telcodatagen.exe 1000 0.2 2
    

    Este comando recebe os seguintes parâmetros:

    • Número de registos de dados de chamada por hora.
    • Percentagem de probabilidade de fraude, que corresponde à frequência com que a aplicação deve simular uma chamada fraudulenta. O valor 0,2 significa que cerca de 20% dos registos de chamadas parecem fraudulentos.
    • Duração em horas, que corresponde ao número de horas que a aplicação deve ser executada. Você também pode parar o aplicativo a qualquer momento, encerrando o processo (Ctrl+C) na linha de comando.

    Após alguns segundos, a aplicação começa a apresentar registos de chamadas telefónicas no ecrã, à medida que os envia para o hub de eventos. Os dados das chamadas telefónicas contêm os seguintes campos:

    Registo Definição
    CallrecTime O carimbo de data/hora da hora de início da chamada.
    SwitchNum O comutador de telefone utilizado para estabelecer a chamada. Neste exemplo, as opções são cadeias de caracteres que representam o país/região de origem (EUA, China, Reino Unido, Alemanha ou Austrália).
    CallingNum O número de telefone do chamador.
    CallingIMSI A Identidade Internacional de Assinante Móvel (IMSI). É um identificador exclusivo do chamador.
    CalledNum O número de telefone do destinatário da chamada.
    CalledIMSI Identidade Internacional de Assinante Móvel (IMSI). É um identificador exclusivo do destinatário da chama.

Criar uma tarefa do Stream Analytics

Agora que tem um fluxo de eventos de chamada, pode criar uma tarefa do Stream Analytics que lê os dados do hub de eventos.

  1. Para criar uma tarefa do Stream Analytics, navegue até ao portal do Azure.
  2. Selecione Criar um recurso e procure um trabalho do Stream Analytics. Selecione o bloco de trabalho do Stream Analytics e selecione Criar.
  3. Na página de trabalho Novo Stream Analytics , siga estas etapas:
    1. Em Assinatura, selecione a assinatura que contém o namespace Hubs de Eventos.

    2. Em Grupo de recursos, selecione o grupo de recursos criado anteriormente.

    3. Na seção Detalhes da instância, Para Nome, insira um nome exclusivo para o trabalho do Stream Analytics.

    4. Em Região, selecione a região na qual você deseja criar o trabalho do Stream Analytics. Recomendamos que você coloque o trabalho e o hub de eventos na mesma região para obter o melhor desempenho e para não pagar para transferir dados entre regiões.

    5. Em Ambiente de hospedagem< , selecione Nuvem se ainda não estiver selecionado. As tarefas do Stream Analytics podem ser implementadas na cloud ou no Edge. A nuvem permite que você implante na Nuvem do Azure e o Edge permite que você implante em um dispositivo IoT Edge.

    6. Em Unidades de streaming, selecione 1. As unidades de transmissão em fluxo representam os recursos informáticos que são necessários para executar uma tarefa. Por predefinição, este valor está definido como 1. Para saber mais sobre o dimensionamento de unidades de transmissão em fluxo, veja o artigo Compreender e ajustar as unidades de transmissão em fluxo.

    7. Selecione Rever + criar na parte inferior da página.

      Captura de tela que mostra a página de trabalho Criar o Azure Stream Analytics.

  4. Na página Rever + criar, reveja as definições e, em seguida, selecione Criar para criar o trabalho do Stream Analytics.
  5. Depois que o trabalho for implantado, selecione Ir para o recurso para navegar até a página de trabalho do Stream Analytics.

Configurar a entrada da tarefa

A próxima etapa consiste em definir uma origem de entrada para a tarefa ler dados com o hub de eventos que criou na secção anterior.

  1. Na página de trabalho do Stream Analytics, na seção Topologia de trabalho no menu à esquerda, selecione Entradas.

  2. Na página Entradas, selecione + Adicionar entrada e Hub de eventos.

    Captura de tela mostrando a página Entrada para um trabalho do Stream Analytics.

  3. Na página Hub de eventos, siga estas etapas:

    1. Em Alias de entrada, digite CallStream. Alias de entrada é um nome amigável para identificar sua entrada. O alias de entrada só pode conter carateres alfanuméricos, hífenes e carateres de sublinhado, e tem de ter entre 3 e 63 carateres.

    2. Em Assinatura, selecione a assinatura do Azure onde você criou o hub de eventos. O hub de eventos pode estar na mesma subscrição ou numa subscrição diferente da tarefa do Stream Analytics.

    3. Para namespace Hubs de Eventos, selecione o namespace Hubs de Eventos que você criou na seção anterior. Todos os namespaces disponíveis em sua assinatura atual estão listados na lista suspensa.

    4. Em Nome do hub de eventos, selecione o hub de eventos criado na seção anterior. Todos os hubs de eventos disponíveis no namespace selecionado são listados na lista suspensa.

    5. Para o grupo de consumidores do hub de eventos, mantenha a opção Criar novo selecionada para que um novo grupo de consumidores seja criado no hub de eventos. Recomendamos que você use um grupo de consumidores distinto para cada trabalho do Stream Analytics. Se nenhum grupo de consumidores for especificado, o trabalho do Stream Analytics usará o grupo de $Default consumidores. Quando um trabalho contém uma associação automática ou tem várias entradas, algumas entradas posteriores podem ser lidas por mais de um leitor. Esta situação afeta o número de leitores num único grupo de consumidores.

    6. Em Modo de autenticação, selecione Cadeia de conexão. É mais fácil testar o tutorial com esta opção.

    7. Para Nome da política do hub de eventos, selecione Usar existente e selecione a política criada anteriormente.

    8. Selecione Salvar na parte inferior da página.

      Captura de tela mostrando a página de configuração dos Hubs de Eventos para uma entrada.

Configurar a saída da tarefa

A última etapa é definir um coletor de saída onde o trabalho pode gravar os dados transformados. Neste tutorial, vai produzir e visualizar dados com o Power BI.

  1. No portal do Azure, abra Todos os recursos e selecione o trabalho ASATutorial Stream Analytics.

  2. Na seção Topologia de trabalho do trabalho do Stream Analytics, selecione a opção Saídas.

  3. Selecione + Adicionar>Power BI.

  4. Preencha o formulário de saída com os seguintes detalhes:

    Definição Valor sugerido
    Alias de saída MyPBIoutput
    Área de trabalho de Grupo A minha área de trabalho
    Nome do conjunto de dados ASAdataset
    Nome da tabela ASATable
    Modo de autenticação Token de utilizador
  5. Selecione Autorizar e siga as instruções para autenticar o Power BI.

    Configurar a saída do Stream Analytics

  6. Selecione Salvarna parte inferior da página do Power BI.

    Este tutorial usa o modo de autenticação de token de usuário. Para usar a Identidade Gerenciada, consulte Usar a Identidade Gerenciada para autenticar seu trabalho do Azure Stream Analytics no Power BI.

Crie consultas para transformar dados em tempo real

Neste ponto, você tem um trabalho do Stream Analytics configurado para ler um fluxo de dados de entrada. O próximo passo é criar uma consulta que analise os dados em tempo real. As consultas usam uma linguagem semelhante a SQL que tem algumas extensões específicas para o Stream Analytics.

Nesta seção do tutorial, você cria e testa várias consultas para aprender algumas maneiras pelas quais você pode transformar um fluxo de entrada para análise.

As consultas que você criar aqui apenas exibirão os dados transformados na tela. Em uma seção posterior, você gravará os dados transformados no Power BI.

Para saber mais sobre o idioma, consulte a Referência de linguagem de consulta do Azure Stream Analytics.

Teste usando uma consulta de passagem

Se quiser arquivar todos os eventos, você pode usar uma consulta de passagem para ler todos os campos na carga útil do evento.

  1. Navegue até o trabalho do Stream Analytics no portal do Azure e selecione Consultar em Topologia do trabalho no menu à esquerda.

  2. Na janela de consulta, insira esta consulta:

    SELECT 
        *
    FROM 
        CallStream
    

    Nota

    Assim como no SQL, as palavras-chave não diferenciam maiúsculas de minúsculas e o espaço em branco não é significativo.

    Nesta consulta, CallStream é o alias que você especificou quando criou a entrada. Se você usou um alias diferente, use esse nome.

  3. Selecione Testar consulta.

    O trabalho do Stream Analytics executa a consulta em relação aos dados de exemplo da entrada e exibe a saída na parte inferior da janela. Os resultados indicam que os Hubs de Eventos e o trabalho do Streaming Analytics estão configurados corretamente.

    Saída de exemplo da consulta de teste.

    O número exato de registros que você vê depende de quantos registros foram capturados na amostra.

Reduzir o número de campos usando uma projeção de coluna

Em muitos casos, sua análise não precisa de todas as colunas do fluxo de entrada. Você pode usar uma consulta para projetar um conjunto menor de campos retornados do que na consulta de passagem.

Execute a seguinte consulta e observe a saída.

SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum 
INTO
    [MyPBIoutput]
FROM 
    CallStream

Contar chamadas recebidas por região: janela de tombo com agregação

Suponha que você queira contar o número de chamadas recebidas por região. No streaming de dados, quando você deseja executar funções agregadas como contagem, você precisa segmentar o fluxo em unidades temporais, uma vez que o fluxo de dados em si é efetivamente infinito. Você faz isso usando uma função de janela do Streaming Analytics. Em seguida, você pode trabalhar com os dados dentro dessa janela como uma unidade.

Para essa transformação, você deseja uma sequência de janelas temporais que não se sobreponham — cada janela tem um conjunto discreto de dados que você pode agrupar e agregar. Este tipo de janela é conhecido como uma janela Tumbling. Na janela Tumbling, você pode obter uma contagem das chamadas recebidas agrupadas por SwitchNum, que representa o país/região de origem da chamada.

  1. Cole a seguinte consulta no editor de consultas:

    SELECT 
        System.Timestamp as WindowEnd, SwitchNum, COUNT(*) as CallCount 
    FROM
        CallStream TIMESTAMP BY CallRecTime 
    GROUP BY TUMBLINGWINDOW(s, 5), SwitchNum
    

    Esta consulta usa a Timestamp By palavra-chave na FROM cláusula para especificar qual campo de carimbo de data/hora no fluxo de entrada deve ser usado para definir a janela Tumbling. Nesse caso, a janela divide os dados em segmentos pelo CallRecTime campo em cada registro. (Se nenhum campo for especificado, a operação de janela usará a hora em que cada evento chega ao hub de eventos. Consulte "Hora de chegada vs hora do aplicativo" em Referência de linguagem de consulta do Stream Analytics.

    A projeção inclui System.Timestamp, que retorna um carimbo de data/hora para o final de cada janela.

    Para especificar que você deseja usar uma janela Tumbling, use a função TUMBLINGWINDOW na GROUP BY cláusula. Na função, você especifica uma unidade de tempo (em qualquer lugar de um microssegundo a um dia) e um tamanho de janela (quantas unidades). Neste exemplo, a janela Tumbling consiste em intervalos de 5 segundos, para que você obtenha uma contagem por país/região para cada 5 segundos de chamadas.

  2. Selecione Testar consulta. Nos resultados, observe que os carimbos de data/hora em WindowEnd estão em incrementos de 5 segundos.

Detetar fraudes de SIM usando uma auto-adesão

Neste exemplo, considere o uso fraudulento como chamadas originadas do mesmo usuário, mas em locais diferentes dentro de 5 segundos um do outro. Por exemplo, o mesmo utilizador não pode legitimamente fazer uma chamada do E.U.A. e da Austrália ao mesmo tempo.

Para verificar esses casos, você pode usar uma associação automática dos dados de streaming para unir o fluxo a si mesmo com base no CallRecTime valor. Em seguida, você pode procurar registros de chamada em que o CallingIMSI valor (o número de origem) é o mesmo, mas o SwitchNum valor (país/região de origem) não é o mesmo.

Quando você usa uma junção com dados de streaming, a associação deve fornecer alguns limites sobre até onde as linhas correspondentes podem ser separadas no tempo. Como observado anteriormente, os dados de streaming são efetivamente infinitos. Os limites de tempo para a relação são especificados dentro da ON cláusula da junção, usando a DATEDIFF função. Nesse caso, a junção é baseada em um intervalo de 5 segundos de dados de chamada.

  1. Cole a seguinte consulta no editor de consultas:

    SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls
        INTO "MyPBIoutput"
        FROM "CallStream" CS1 TIMESTAMP BY CallRecTime
        JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime
        ON CS1.CallingIMSI = CS2.CallingIMSI
        AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5
        WHERE CS1.SwitchNum != CS2.SwitchNum
        GROUP BY TumblingWindow(Duration(second, 1))
    

    Esta consulta é como qualquer associação SQL, exceto para a DATEDIFF função na associação. Esta versão do DATEDIFF é específica do Streaming Analytics e deve aparecer na ON...BETWEEN cláusula. Os parâmetros são uma unidade de tempo (segundos neste exemplo) e os aliases das duas fontes para a junção. Esta função é diferente da função SQL DATEDIFF padrão.

    A WHERE cláusula inclui a condição que sinaliza a chamada fraudulenta: os switches de origem não são os mesmos.

  2. Selecione Testar consulta. Reveja a saída e, em seguida, selecione Guardar consulta.

Iniciar a tarefa e visualizar a saída

  1. Para iniciar o trabalho, navegue até Visão geral do trabalho e selecione Iniciar.

  2. Selecione Agora para a hora de início da saída da tarefa e selecione Iniciar. Pode ver o estado da tarefa na barra de notificação.

  3. Depois de a tarefa ser executada com êxito, navegue até ao Power BI e inicie sessão com a sua conta escolar ou profissional. Se a consulta da tarefa do Stream Analytics estiver a produzir resultados, significa que o conjunto de dados ASAdataset que criou existe no separador Conjuntos de dados.

  4. Na sua área de trabalho do Power BI, selecione + Criar para criar um novo dashboard com o nome Chamadas Fraudulentas.

  5. Na parte superior da janela, selecione Editar e Adicionar bloco. Em seguida, selecione Dados de Transmissão em Fluxo Personalizados e Seguinte. Escolha o conjunto de dados ASAdataset em Conjuntos de dados. Selecione Cartão na lista suspensa Tipo de visualização e adicione chamadas fraudulentas a Campos. Selecione Seguinte para introduzir um nome para o mosaico e, em seguida, selecione Aplicar para criar o mosaico.

    Criar blocos do painel do Power BI

  6. Execute o passo 5 novamente, com as seguintes opções:

    • Quando chegar a Tipo de Visualização, selecione Gráfico de linhas.
    • Adicione um eixo e selecione windowend.
    • Adicione um valor e selecione chamadas fraudulentas.
    • Para Janela de tempo a apresentar, selecione os últimos 10 minutos.
  7. Seu painel deve se parecer com o exemplo a seguir quando ambos os blocos forem adicionados. Observe que, se o aplicativo remetente do hub de eventos e o aplicativo Streaming Analytics estiverem em execução, seu painel do Power BI será atualizado periodicamente à medida que novos dados chegam.

    Captura de ecrã dos resultados no painel do Power BI.

Incorporando seu Painel do Power BI em um aplicativo Web

Para esta parte do tutorial, você usa um exemplo de aplicativo Web ASP.NET criado pela equipe do Power BI para incorporar seu painel. Para obter mais informações sobre a incorporação de dashboards, veja o artigo Incorporação com o Power BI.

Para configurar o aplicativo, vá para o repositório GitHub PowerBI-Developer-Samples e siga as instruções na seção User Owns Data (use as URLs de redirecionamento e homepage na subseção integrate-web-app ). Como estamos usando o exemplo Dashboard, use o código de exemplo integrate-web-app localizado no repositório GitHub. Depois de executar o aplicativo em seu navegador, siga estas etapas para incorporar o painel criado anteriormente na página da Web:

  1. Selecione Entrar no Power BI, que concede ao aplicativo acesso aos painéis em sua conta do Power BI.

  2. Selecione o botão Obter Dashboards, que apresenta os Dashboards da sua conta numa tabela. Localize o nome do dashboard que criou anteriormente powerbi-embedded-dashboard e copie o EmbedUrl correspondente.

  3. Por fim, cole o EmbedUrl no campo de texto correspondente e selecione Incorporar Dashboard. Agora, pode ver o mesmo dashboard incorporado numa aplicação Web.

Próximos passos

Neste tutorial, criou uma tarefa simples do Stream Analytics, analisou os dados de entrada e apresentou os resultados num dashboard do Power BI. Para saber mais sobre tarefas do Stream Analytics, avance para o próximo tutorial: