Tutorial: Analisar dados de chamadas fraudulentos com o Stream Analytics e visualizar resultados no dashboard do Power BI
Este tutorial mostra-lhe como analisar dados de chamadas telefónicas com o Azure Stream Analytics. Os dados de chamada telefónica, gerados por uma aplicação cliente, contêm chamadas fraudulentas, que são detetadas pela tarefa do Stream Analytics. Pode utilizar as técnicas deste tutorial para outros tipos de deteção de fraude, como fraude de cartões de crédito ou roubo de identidade.
Neste tutorial, ficará a saber como:
- Gere dados de chamada telefónica de exemplo e envie-os para Hubs de Eventos do Azure.
- Criar uma tarefa do Stream Analytics.
- Configure a entrada e saída da tarefa.
- Defina consultas para filtrar chamadas fraudulentas.
- Teste e inicie a tarefa.
- Visualizar resultados no Power BI.
Pré-requisitos
Antes de começar, certifique-se de que concluiu os seguintes passos:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita.
- Transfira a aplicação geradora de eventos de chamada telefónica,TelcoGenerator.zip do Centro de Transferências da Microsoft ou obtenha o código fonte a partir do GitHub.
- Precisa de uma conta do Power BI .
Iniciar sessão no Azure
Inicie sessão no portal do Azure.
Criar um hub de eventos
Tem de enviar alguns dados de exemplo para um hub de eventos para que o Stream Analytics possa analisar o fluxo de dados de chamadas fraudulentas. Neste tutorial, vai enviar dados para o Azure com Hubs de Eventos do Azure.
Utilize os seguintes passos para criar um hub de eventos e enviar dados de chamada para esse hub de eventos:
Inicie sessão no portal do Azure.
Selecione Criar um recurso>Internet das Coisas>Hubs de Eventos. Na página Hubs de Eventos , selecione Criar.
Se não vir Os Hubs de Eventos na página Internet das Coisas , escreva Hubs de Eventos na caixa de pesquisa e selecione-os nos resultados. Em seguida, selecione Hubs de Eventos na página Marketplace .
Na página Criar Espaço de Nomes , siga estes passos:
Selecione uma subscrição do Azure onde pretende criar o hub de eventos.
Em Grupo de recursos, selecione Criar novo e introduza um nome para o grupo de recursos. O espaço de nomes dos Hubs de Eventos é criado neste grupo de recursos.
Para Nome do espaço de nomes, introduza um nome exclusivo para o espaço de nomes dos Hubs de Eventos.
Em Localização, selecione a região na qual pretende criar o espaço de nomes.
Para Escalão de preço, selecione Standard.
Selecione Rever + criar na parte inferior da página.
Na página Rever + criar do assistente de criação do espaço de nomes, selecione Criar na parte inferior da página depois de rever todas as definições.
Depois de o espaço de nomes ser implementado com êxito, selecione Ir para recurso para navegar para a página Espaço de Nomes dos Hubs de Eventos .
Na página Espaço de Nomes dos Hubs de Eventos , selecione +Hub de Eventos na barra de comandos.
Na página Criar Hub de Eventos , introduza um Nome para o hub de eventos. Defina a Contagem de Partições como 2. Utilize as opções predefinidas nas restantes definições e selecione Rever + criar.
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 de uma aplicação poder enviar dados para Hubs de Eventos do Azure, o hub de eventos tem de 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.
No Espaço de Nomes dos Hubs de Eventos, selecione Hubs de Eventos em Entidades no menu esquerdo e, em seguida, selecione o hub de eventos que criou.
Na página instância dos Hubs de Eventos , selecione Políticas de acesso partilhado em Definições no menu esquerdo e, em seguida, selecione + Adicionar na barra de comandos.
Especifique MyPolicy para Nome, selecione Gerir e, em seguida, selecione Criar.
Assim que a política for criada, selecione o nome da política para abrir a política. Localize a cadeia de ligação –chave primária. Selecione o botão copiar junto à cadeia de ligação.
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>;EntityPath=<Your event hub name>
Repare que a cadeia de ligação contém vários pares chave-valor, separados por ponto e vírgula: Endpoint, SharedAccessKeyName, SharedAccessKey e EntityPath.
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.
Extraia o conteúdo do ficheiro TelcoGenerator.zip.
Abra o
TelcoGenerator\TelcoGenerator\telcodatagen.exe.config
ficheiro num editor de texto à sua escolha Existe mais do que um.config
ficheiro, por isso certifique-se de que abre o ficheiro correto.Atualize o elemento
<appSettings>
no ficheiro de configuração com os seguintes detalhes:- Defina o valor da chave EventHubName para o valor do EntityPath no final da cadeia de ligação.
- Defina o valor da chave Microsoft.ServiceBus.ConnectionString para a cadeia de ligação sem o valor EntityPath no final. Não se esqueça de remover o ponto e vírgula que precede o valor EntityPath.
Guarde o ficheiro.
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. Também pode parar a aplicação em qualquer altura ao terminar o processo (Ctrl+C) na linha de comandos.
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. Para este exemplo, os comutadores são cadeias 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.
- Para criar uma tarefa do Stream Analytics, navegue até ao portal do Azure.
- Selecione Criar um recurso e procure tarefa do Stream Analytics. Selecione o mosaico da tarefa do Stream Analytics e selecione Criar.
- Na página Nova tarefa do Stream Analytics , siga estes passos:
Em Subscrição, selecione a subscrição que contém o espaço de nomes dos Hubs de Eventos.
Em Grupo de recursos, selecione o grupo de recursos que criou anteriormente.
Na secção Detalhes da instância, Em Nome, introduza um nome exclusivo para a tarefa do Stream Analytics.
Em Região, selecione a região na qual pretende criar a tarefa do Stream Analytics. Recomendamos que coloque a tarefa e o hub de eventos na mesma região para obter o melhor desempenho, para que não pague para transferir dados entre regiões.
Em Ambiente< de alojamento, selecione Cloud se ainda não estiver selecionado. As tarefas do Stream Analytics podem ser implementadas na cloud ou no Edge. A cloud permite-lhe implementar no Azure Cloud e o Edge permite-lhe implementar num dispositivo IoT Edge.
Para Unidades de transmissão em fluxo, 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.
Selecione Rever + criar na parte inferior da página.
- Na página Rever + criar , reveja as definições e, em seguida, selecione Criar para criar a tarefa do Stream Analytics.
- Após a implementação da tarefa, selecione Ir para recurso para navegar para a página de tarefas 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.
Na página de tarefas do Stream Analytics , na secção Topologia da Tarefa no menu esquerdo, selecione Entradas.
Na página Entradas , selecione + Adicionar entrada de fluxo e Hub de eventos.
Na página Hub de eventos , siga estes passos:
Em Alias de entrada, introduza CallStream. O alias de entrada é um nome amigável para identificar a 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.
Em Subscrição, selecione a subscrição do Azure onde 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.
Para o espaço de nomes dos Hubs de Eventos, selecione o espaço de nomes dos Hubs de Eventos que criou na secção anterior. Todos os espaços de nomes disponíveis na sua subscrição atual estão listados na lista pendente.
Em Nome do hub de eventos, selecione o hub de eventos que criou na secção anterior. Todos os hubs de eventos disponíveis no espaço de nomes selecionado estão listados na lista pendente.
Para o grupo de consumidores do Hub de Eventos, mantenha a opção Criar novo selecionada para que seja criado um novo grupo de consumidores no hub de eventos. Recomendamos que utilize um grupo de consumidores distinto para cada tarefa do Stream Analytics. Se não for especificado nenhum grupo de consumidores, a tarefa do Stream Analytics utiliza o
$Default
grupo de consumidores. Quando uma tarefa contém uma associação automática ou tem múltiplas entradas, algumas entradas posteriormente poderão ser lidas por mais do que um leitor. Esta situação afeta o número de leitores num único grupo de consumidores.Em Modo de autenticação, selecione Cadeia de ligação. É mais fácil testar o tutorial com esta opção.
Em Nome da política do Hub de Eventos, selecione Utilizar existente e, em seguida, selecione a política que criou anteriormente.
Selecione Guardar na parte inferior da página.
Configurar a saída da tarefa
O último passo é definir um sink de saída onde a tarefa pode escrever os dados transformados. Neste tutorial, vai produzir e visualizar dados com o Power BI.
Na portal do Azure, abra Todos os recursos e selecione a tarefa ASATutorial do Stream Analytics.
Na secção Topologia da Tarefa da tarefa do Stream Analytics, selecione a opção Saídas .
Selecione + Adicionar>Power BI.
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 Selecione Autorizar e siga as instruções para autenticar o Power BI.
Selecione Guardar na parte inferior da página do Power BI.
Este tutorial utiliza o modo de autenticação de tokens de utilizador . Para utilizar a Identidade Gerida, veja Utilizar a Identidade Gerida para autenticar a tarefa do Azure Stream Analytics no Power BI.
Criar consultas para transformar dados em tempo real
Neste momento, tem uma tarefa do Stream Analytics configurada para ler um fluxo de dados recebido. O próximo passo é criar uma consulta que analise os dados em tempo real. As consultas utilizam uma linguagem semelhante a SQL que tem algumas extensões específicas do Stream Analytics.
Nesta secção do tutorial, vai criar e testar várias consultas para aprender algumas formas de transformar um fluxo de entrada para análise.
As consultas que criar aqui apenas apresentarão os dados transformados no ecrã. Numa secção posterior, irá escrever os dados transformados no Power BI.
Para saber mais sobre a linguagem, veja Referência da Linguagem de Consulta do Azure Stream Analytics.
Testar com uma consulta pass-through
Se quiser arquivar todos os eventos, pode utilizar uma consulta pass-through para ler todos os campos no payload do evento.
Navegue para a tarefa do Stream Analytics no portal do Azure e selecione Consulta em Topologia da tarefa no menu esquerdo.
Na janela de consulta, introduza esta consulta:
SELECT * FROM CallStream
Nota
Tal como acontece com o SQL, as palavras-chave não são sensíveis a maiúsculas e minúsculas e o espaço em branco não é significativo.
Nesta consulta,
CallStream
é o alias que especificou quando criou a entrada. Se utilizou um alias diferente, utilize esse nome.Selecione Testar consulta.
A tarefa do Stream Analytics executa a consulta em relação aos dados de exemplo da entrada e apresenta o resultado na parte inferior da janela. Os resultados indicam que os Hubs de Eventos e a tarefa do Streaming Analytics estão configurados corretamente.
O número exato de registos que vê dependerá do número de registos capturados no exemplo.
Reduzir o número de campos com uma projeção de coluna
Em muitos casos, a sua análise não precisa de todas as colunas do fluxo de entrada. Pode utilizar uma consulta para projetar um conjunto mais pequeno de campos devolvidos do que na consulta pass-through.
Execute a seguinte consulta e repare na saída.
SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum
INTO
[MyPBIoutput]
FROM
CallStream
Contagem de chamadas recebidas por região: Janela em cascata com agregação
Suponha que pretende contar o número de chamadas recebidas por região. Nos dados de transmissão em fluxo, quando pretender executar funções de agregação como a contagem, tem de segmentar a transmissão em unidades temporais, uma vez que o fluxo de dados em si é efetivamente infinito. Pode fazê-lo com uma função de janela do Streaming Analytics. Em seguida, pode trabalhar com os dados dentro dessa janela como uma unidade.
Para esta transformação, quer uma sequência de janelas temporais que não se sobrepõem. Cada janela terá um conjunto discreto de dados que pode agrupar e agregar. Este tipo de janela é referido como uma janela em cascata. Na janela Em Cascata, pode obter uma contagem das chamadas recebidas agrupadas por SwitchNum
, que representa o país/região de origem da chamada.
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 utiliza a
Timestamp By
palavra-chave naFROM
cláusula para especificar o campo de carimbo de data/hora no fluxo de entrada a utilizar para definir a janela em cascata. Neste caso, a janela divide os dados em segmentos peloCallRecTime
campo em cada registo. (Se não for especificado nenhum campo, a operação de janela utiliza a hora em que cada evento chega ao hub de eventos. Veja "Hora de Chegada vs Hora da Aplicação" na Referência da Linguagem de Consulta do Stream Analytics.A projeção inclui
System.Timestamp
, que devolve um carimbo de data/hora para o fim de cada janela.Para especificar que pretende utilizar uma janela em cascata, utilize a função TUMBLINGWINDOW na
GROUP BY
cláusula . Na função, especifique uma unidade de tempo (entre um microssegundo e um dia) e um tamanho de janela (quantas unidades). Neste exemplo, a janela em cascata consiste em intervalos de 5 segundos, pelo que receberá uma contagem por país/região por cada 5 segundos de chamadas.Selecione Testar consulta. Nos resultados, repare que os carimbos de data/hora em WindowEnd estão em incrementos de 5 segundos.
Detetar fraude do SIM com uma associação autónoma
Para este exemplo, considere a utilização fraudulenta como chamadas provenientes do mesmo utilizador, mas em localizações diferentes no prazo de 5 segundos entre si. 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 estes casos, pode utilizar uma associação autónoma dos dados de transmissão em fluxo para associar o fluxo a si próprio com base no CallRecTime
valor. Em seguida, pode procurar registos de chamada onde 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 utiliza uma associação com dados de transmissão em fluxo, a associação tem de fornecer alguns limites sobre até que ponto as linhas correspondentes podem ser separadas a tempo. Conforme indicado anteriormente, os dados de transmissão em fluxo são efetivamente infinitos. Os limites de tempo para a relação são especificados dentro da ON
cláusula da associação, utilizando a DATEDIFF
função. Neste caso, a associação baseia-se num intervalo de 5 segundos de dados de chamada.
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 ao SQL, exceto a
DATEDIFF
função na associação. Esta versão do é específica doDATEDIFF
Streaming Analytics e tem de aparecer naON...BETWEEN
cláusula. Os parâmetros são uma unidade de tempo (segundos neste exemplo) e os aliases das duas origens para a associação. Esta função é diferente da função SQLDATEDIFF
padrão.A
WHERE
cláusula inclui a condição que sinaliza a chamada fraudulenta: os comutadores de origem não são os mesmos.Selecione Testar consulta. Reveja o resultado e, em seguida, selecione Guardar consulta.
Iniciar a tarefa e visualizar a saída
Para iniciar a tarefa, navegue para a Descrição Geral da tarefa e selecione Iniciar.
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.
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.
Na sua área de trabalho do Power BI, selecione + Criar para criar um novo dashboard com o nome Chamadas Fraudulentas.
Na parte superior da janela, selecione Editar e Adicionar mosaico. 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 pendente 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.
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.
O dashboard deve ter um aspeto semelhante ao seguinte depois de ambos os mosaicos serem adicionados. Tenha em atenção que, se a aplicação do remetente do hub de eventos e a aplicação do Streaming Analytics estiverem em execução, o dashboard do Power BI é atualizado periodicamente à medida que chegam novos dados.
Incorporar o Dashboard do Power BI numa aplicação Web
Nesta parte do tutorial, irá utilizar um exemplo ASP.NET aplicação Web criada pela equipa do Power BI para incorporar o dashboard. Para obter mais informações sobre a incorporação de dashboards, veja o artigo Incorporação com o Power BI.
Para configurar a aplicação, aceda ao repositório Do GitHub PowerBI-Developer-Samples e siga as instruções na secção User Owns Data (utilize os URLs de redirecionamento e home page na subsecção integrate-web-app ). Uma vez que estamos a utilizar o exemplo dashboard, utilize o código de exemplo integrate-web-app localizado no repositório do GitHub. Quando a aplicação estiver em execução no browser, siga estes passos para incorporar o dashboard que criou anteriormente na página Web:
Selecione Iniciar sessão no Power BI, que concede à aplicação acesso aos dashboards na sua conta do Power BI.
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.
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.
Passos seguintes
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: