Faça o que for necessário para apresentar os dados de modo a ajudar na análise e no raciocínio. - Edward Tufte
Como criar gráficos como esses se você ainda não tem uma ferramenta de visualização de dados pronta e bacana?
Você pode executar consultas para manipular os dados e obter os resultados. Muitas vezes, você deseja apresentar os dados visualmente em gráficos de pizza, gráficos de bolhas, histogramas e gráficos de linha. Se você tiver o Tableau, o Cognos, etc., será mais fácil visualizar. Caso contrário, você terá que copiar os resultados no Google Sheets ou no Excel. Recortar e colar os resultados no Google Sheets é difícil, devido à formatação, problemas de linhas de cabeçalho etc. No entanto, o Couchbase Query Workbench facilita isso. Ao lado dos resultados da consulta, temos um cópia que copia o resultado em um formato tabular que pode ser colado em planilhas como o Google Sheets, Excel etc. Esse recurso está disponível no workbench de consulta e no workbench de consulta analítica.
Vamos dar uma olhada em alguns dados e gráficos de amostra.
- Calcule os tipos de documentos e sua contagem.
Aqui está a consulta sobre o conjunto de dados de amostra de viagem fornecido com o Couchbase. Clique na imagem para ver a animação em GIF.
|
1 2 3 4 5 6 7 |
SELECT type, COUNT(1) typecount FROM `travel-sample` GROUP BY type ORDER BY typecount |
|
1 2 3 4 5 6 7 8 |
type typecount "airline" 187 "hotel" 917 "airport" 1968 "landmark" 4495 "route" 24024 |
Aqui está o gráfico de pizza criado para os dados. Ele pode ser facilmente personalizado em termos de cores, exibição de dados, vários rótulos e legendas.
Clique na imagem para ver a animação GIF sobre como obter os resultados no Google Sheets para obter os gráficos em um segundo.
2. Tarefa: Encontrar as 10 principais cidades com o maior número de hotéis.
|
1 2 3 4 5 6 7 8 9 10 11 |
SELECT country, city, COUNT(1) hotelcount FROM `travel-sample` WHERE type = 'hotel' GROUP BY country, city ORDER BY hotelcount DESC LIMIT 10 |
Resultados:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
city country hotelcount "San Francisco" "United States" 132 "London" "United Kingdom" 67 "Paris" "France" 64 "San Diego" "United States" 48 "Birmingham" "United Kingdom" 36 "Los Angeles" "United States" 35 "United Kingdom" 23 "Santa Monica" "United States" 14 "Malibu" "United States" 12 "Edinburgh" "United Kingdom" 10 |
A única personalização do histograma aqui é adicionar os rótulos de dados para mostrar o número real de hotéis.
2. Tarefa: Encontrar as 5 principais cidades com o maior número de hotéis com "jardins" na avaliação
|
1 2 3 4 5 6 7 8 9 10 |
SELECT city, COUNT(1) hotelcount FROM `travel-sample` WHERE type = 'hotel' AND ANY r IN reviews SATISFIES search(r.content, "garden") END GROUP BY city ORDER BY hotelcount DESC LIMIT 5; |
|
1 2 3 4 5 6 |
city hotelcount "Paris" 10 5 "San Francisco" 5 "San Diego" 4 "Edinburgh" 3 |
Basta escolher o "Doughnut piechart" e adicionar os rótulos.
6. Os gráficos de bolhas exigem que você crie o valor percentual para cada linha. A função de janela RATIO_TO_REPORT() ajudam você a fazer isso facilmente. Quando você tiver sua consulta, crie uma bolha
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
SELECT country, city, SUM(ARRAY_SUM(reviews[*].ratings[*].Location)) / COUNT(1) city_avglocation, SUM(ARRAY_SUM(reviews[*].ratings[*].Service)) / COUNT(1) city_avgservice, RATIO_TO_REPORT(COUNT(1)) OVER(partition by country) * 100 ratio_val, (TO_STR(ROUND(RATIO_TO_REPORT(COUNT(1)) OVER(partition by country) * 100, 0)) || "%" ) AS ratio_percent FROM `travel-sample` WHERE type = 'hotel' group by country, city order by ratio_val desc, city_avgservice desc, city_avgvalue desc LIMIT 10 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
city city_avglocation city_avgservice country ratio_percent ratio_val "Paris" 13.75 15.421875 "France" "46%" 45.714285714285715 "San Francisco" 15.583333333333334 16.71969696969697 "United States" "37%" 36.56509695290859 "London" 11.567164179104477 15.746268656716419 "United Kingdom" "16%" 16.105769230769234 "San Diego" 15.583333333333334 16.729166666666668 "United States" "13%" 13.29639889196676 "Los Angeles" 11.971428571428572 12.628571428571428 "United States" "10%" 9.695290858725762 "Birmingham" 14.666666666666666 18.083333333333332 "United Kingdom" "9%" 8.653846153846153 "Avignon" 10.375 13.375 "France" "6%" 5.714285714285714 16.91304347826087 17.782608695652176 "United Kingdom" "6%" 5.528846153846153 "Chamonix-Mont-Blanc" 18 29.142857142857142 "France" "5%" 5 "Nice" 11.571428571428571 15 "France" "5%" 5 |

Gráfico de bolhas mostrando a classificação média por local, etc. O tamanho da bolha mostra o número de hotéis representados no respectivo país.
Este GIF animado mostra como criar esse gráfico.
7. Criar gráficos geográficos é muito fácil no Google Charts, pois ele reconhece os países e as cidades. Você não precisa lidar com latlongs.
|
1 2 3 4 5 |
Select country, count(1) num_hotels from `travel-sample` where type = 'airline' |
|
1 2 3 4 5 6 |
country num_hotels "United States" 127 "United Kingdom" 39 "France" 21 |
Com os dados acima, basta colar em uma planilha do Google e criar um gráfico geográfico.

8. Você também pode criar um gráfico geográfico com marcadores (bolhas proporcionais), novamente, usando as funções da janela RATIO_TO_REPORT().
|
1 2 3 4 5 6 7 8 |
SELECT country, COUNT(1) AS num_hotels, (TOSTR(ROUND(RATIO_TO_REPORT(COUNT(1)) OVER () * 100,0)) || "%") AS hotels_percent FROM `travel-sample` WHERE type = 'hotel' GROUP BY country; |
|
1 2 3 4 5 6 |
country hotels_percent num_hotels "United Kingdom" "45%" 416 "France" "15%" 140 "United States" "39%" 361 |
Você também pode personalizar os gráficos de acordo com a região, por exemplo, os Estados Unidos.
Por fim, a consulta para gerar o primeiro gráfico deste blog:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT country, city, SUM(ARRAY_SUM(reviews[*].ratings[*].Location)) / COUNT(1) city_avglocation, SUM(ARRAY_SUM(reviews[*].ratings[*].Service)) / COUNT(1) city_avgservice, SUM(ARRAY_SUM(reviews[*].ratings[*].Overall)) / COUNT(1) city_avgoverall, SUM(ARRAY_SUM(reviews[*].ratings[*].Rooms)) / COUNT(1) city_avgrooms, SUM(ARRAY_SUM(reviews[*].ratings[*].`Value`)) / COUNT(1) city_avgvalue FROM `travel-sample` WHERE type = 'hotel' group by country, city order by city_avgservice desc, city_avgvalue desc LIMIT 50 |







