SQL Server

13 abr, 2020

Bate-bola com Grafos e SQL Server Parte 3 – Visualizando Dados

100 visualizações
Publicidade

Desta vez o enfoque é na análise de dados, mais especificamente a visualização dos grafos que foram criados. Eu prefiro começar a conversa com o porquê e depois falo do como. Ou seja, começo mostrando para que serve a visualização dos grafos e, na sequência, apresento como construir um dashboard simples destes grafos.

Analisando Dados em um Dashboard

É natural que a imagem de milhares de grafos sobrepostos seja muita parecida com uma nuvem. Os poucos “raios” que possam despontar dessa nuvem representam os nós que possuem poucas conexões, geralmente um númeor muito menor que a média dos demais.

A imagem a seguir apresenta os grafos de cerca de 11 mil jogadores que disputaram partidas de campeonatos europeus entre 2008 e 2015. Considerando este universo (11 mil grafos), fica claro que a quantidade de “raios” que desgarram da nuvem representa um número muito pequeno de nós. E, de fato, fica evidente que são nós que apresentam poucas conexões.

Dependendo do que se espera analisar, pode ser vantajoso analisar os grafos fazendo um “zoom” na imagem. Por exemplo, no estudo a seguir, estou observando o universo de jogadores que fizeram parte do elenco do time escocês ABERDEEN durante os 7 anos de histórico. Observo que 93 atletas jogaram pelo time durante este período,
sendo que 01 deles, Andrew Considine, foi o recordista de conexões: 44 no total.

Em outras palavras, este atleta teve oportunidade de jogar com quase metade dos jogadores que fizeram parte do elenco do time durante estas 07 temporadas. Para destacar este atleta em especial, eu movi este nó para lhe dar maior destaque. Veja o resultado na imagem a seguir.

Em seguida, faço um zoom ainda mais detalhado e avalio os jogadores que estavam no elenco nas temporadas de 2008 e 2015 (primeira e última temporadas do histórico em estudo). Nestes grafos fica óbvio que apenas dois jogadores, Peter Powlet e o próprio Considine fizeram parte do elenco tanto na temporada de 2008 como na de
2015.

Vamos agora a outro exemplo: o estudo dos caminhos que conectam dois jogadores. No artigo anterior mostrei uma consulta que identificava o caminho mais curto entre Cristiano Ronaldo e Lionel Messi.

Aqui eu apresento os grafos de um desses caminhos (incluindo Albiol e Villa). Fica claro que existem inúmeros caminhos mais longos que ligam estes quatro atletas, isto é, existem dezenas de jogadores que atuaram com Ronaldo e Albiol, outros tantos que jogaram com Albiol e Villa, e mais outros tantos com Villa e Messi.

Observando mais detalhadamente os grafos, se vê que não houve nenhum jogador além de Albiol que tenha jogado com Ronaldo e Vila, pelo simples fato de que não existem conexões entre Ronaldo e Vila que não passem por Albiol. Pelo mesmo princípio, fica claro que Vila foi o único atleta neste período que jogou com Albiol e Messi.

Com estes exemplos, espero ter demonstrado a utilidade de se visualizar os grafos. Talvez seja por falta de experiência, mas eu ainda não me sinto confortável fazendo uma análise exploratória dos dados diretamente sobre os grafos. Em geral, testo minhas hipóteses fazendo consultas SQL e uso os grafos para evidenciar o que descobri.

Obviamente os grafos ajudam a entender outras características implícitas nos relacionamentos, mas me parece difícil analisar milhares de grafos em busca de um cenário desejado.

Quem sabe futuramente, usando ferramentas mais versáteis e rápidas, eu venha a mudar minha opinião. Mas hoje eu uso dashboards de grafos principalmente para demonstrar visualmente descobertas que fiz usando outros recursos.

Construindo um Dashboard

Agora apresento em linhas gerais como criar um dashboard de grafos no POWER BI. Primeiramente, é recomendável atualizar a versão do POWER BI DESKTOP instalada na sua máquina. Ao abri-lo, escolho a opção GET DATA na tela de início.

Agora informo qual será a fonte de dados que usarei nestes dashboards. Neste caso, escolho “SQL Server” e clico em CONNECT.

Em seguida, informo o nome da instância SQL e base de dados, marco a opção IMPORT e clico na guia ADVANCED. Minha intenção é definir uma consulta SQL cujos dados serão importados para o dashboard.

A consulta que considerei é apresentada a seguir.

Uma vez carregados os dados, começo a tratar da sua visualização. Não existe nenhum objeto nativo no POWER BI que permita uma boa análise de grafos. Sendo assim, decido importar um objeto externo especializado em grafos. Para isso, vou na guia VISUALIZATIONS, clico sobre as reticências e depois em IMPORT FROM APPSOURCE.

Na guia MARKETPLACE, faço uma busca pela palavra-chave “graph”. Existem algumas opções, mas os exemplos que apresento neste artigo foram criados usando o objeto ADVANCED GRAPH VISUAL. Basta escolher o objeto e adicioná-lo no seu dashboard. (Recomendo ao leitor avaliar a licença de cada um dos produtos para entender suas condições de uso).

Finalmente estou pronto para iniciar a construção do dashboard. Minha intenção é construir um grafo que compare os atletas de N clubes em busca de jogadores que fizeram parte demais de uma equipe. (O POWER BI me permite filtrar centenas deles). Clico no objeto que acabo de instalar e início a etapa de configuração. Veja que abaixo da guia VISUALIZATIONS surge uma série opções de configuração.

Para gerar os grafos desejados, preciso lembrar que pretendo ver TIMES (que aqui será o SOURCE NODES=’TEAM’) e os JOGADORES que fizeram parte do elenco (TARGET NODES=’PLAYER2’). A métrica que desejo visualizar é uma contagem de valores distintos de jogadores, isto é, o número de jogadores que fizeram parte do elenco (VALUE=’COUNT(DISTINCT PLAYER2)’).

Uma questão interessante é que meu modelo de grafos não considera um nó ‘Time’, mas este dado aparece no modelo como um atributo da borda edges.PlayingTogether. Ainda assim, consigo criar uma agregação usando este campo como nó de um grafo.

É comum que os usuários recentes tenham alguma dificuldade de identificar os componentes SOURCE e TARGET NODE na construção dos grafos. Porém, basta lembrar o conceito fundamental dos grafos: dois nós associados através de uma borda.

Neste caso, o usuário precisa apenas identificar quem é o nó principal da sua análise. Se eu montar grafos com a definição invertida, o perfil da “nuvem” de grafos não mudará muito. Mas ao dar um zoom para visualização de detalhes, eu veria que os destaques, inclusive as métricas, não mostrariam o que eu esperava encontrar.

Ao contrário dos outros objetos de visualização do POWER BI, o ADVANCED GRAPH VISUAL não apresenta tantos recursos de formatação quanto se poderia esperar. Porém ele oferece uma experiência adequada em termos de análise, permitindo inclusive rearranjar os nós na tela.

Seu ponto fraco, porém, é a performance. A velocidade de atualização dos grafos para uma massa com centenas de milhares de nós pode tornar sua exibição inviável.

Analisando Dados no Novo Dashboard

Uma vez concluído meu dashboard, começo as análises escolhendo N times do meu interesse. Neste estudo, selecionei quatro times como filtros:
 Real Madrid
 Barcelona
 Bayern
 Paris Saint-Germain

Análise 1

As primeiras informações que me saltam aos olhos são as seguintes:
1. Apesar de muitos jogadores terem passado pelos quatro times durante as temporadas de 2008 a 2015 (variando entre 57 e 67 jogadores diferentes), existem muito poucas conexões entre os grafos. Em outras palavras, poucos
jogadores atuaram por mais que um destes times durante este período.

2. Nenhum jogador atuou por mais que 2 dos times, visto que não se vê nenhuma conexão entre 3 ou mais grafos.

3. Nenhum jogador teve oportunidade durante sua carreira de atuar por Real Madrid e Barcelona, nem por Bayern e PSG. (Pelo menos não entre as temporadas de 2008 a 2015).

4. Houve 04 atletas que jogaram por Bayern e Real neste período

5. Houve 02 atletas que jogaram por Bayern e Barcelona e outros 02 que jogaram por PSG e Barcelona.

6. Houve apenas 01 atleta que jogou pelo Real e PSG. Dando um zoom na imagem, identifico que este atleta foi Angel Di Maria, o argentino.

Análise 2

Fazendo um novo filtro por temporada (SEASON), observo que houve um único caso de jogador que atuaou por 2 times diferentes na temporada de 2011. Foi Maxwell (brasileiro), que atuou pelo PSG e pelo Barcelona.

O leitor mais atento perceberá que o número de jogadores de cada time mudou nesta nova análise. Isso ocorre simplesmente porque agora vemos o número de jogadores atuantes na temporada 2011/2012, acompanhando o filtro que foi aplicado.

Comentários Finais

Como se pode ver, uma simples imagem pode oferecer um sem-número de informações. Na minha opinião, este é o ponto alto dos Grafos.

É evidente que um dashboard precisa de um tratamento estético mais elaborado, porém minha intenção neste artigo era apenas mostrar como evidenciar características importantes dos relacionamentos de dados usando grafos.

Mesmo considerando a limitação da velocidade de atualização dos dados, este tipo de dashboard pode ser muito útil para pequenas massas de dados (na ordem de milhares de grafos).

Leituras Sugeridas

1. SQL Graph Architecture por MICROSOFT.
2. Graph processing with SQL Server and Azure SQL Database por
MICROSOFT.
3. European Soccer Database por Hugo Mathien @KAGGLE
4. Graph Databases for Beginners por Roberto Zicari (série de 5 artigos).