Haz lo que sea necesario para presentar los datos y facilitar el análisis y la reflexión. - Edward Tufte
¿Cómo se crean gráficos de este tipo si no se dispone de una herramienta de visualización de datos?
Puede ejecutar consultas para manejar los datos y obtener los resultados. A menudo se desea presentar los datos visualmente en gráficos circulares, gráficos de burbujas, histogramas y gráficos de líneas. Si tienes Tableau, Cognos, etc., es más fácil visualizarlos. Si no, tendrás que copiar los resultados en google sheets o excel. Cortar y pegar los resultados a google sheets es difícil, debido a problemas de formato, encabezado de filas, etc. Sin embargo, Couchbase Query Workbench lo hace fácil. Junto a los resultados de la consulta, tenemos un copia que copia el resultado en un formato tabular que puede pegar en hojas de cálculo como Google Sheets, Excel, etc. Esta función está disponible tanto en el banco de trabajo de consultas como en el banco de trabajo de consultas analíticas.
Veamos algunos datos y gráficos de ejemplo.
- Calcular los tipos de documentos y su recuento.
Esta es la consulta sobre el conjunto de datos travel-sample suministrado con Couchbase. Haz clic en la imagen para ver la animación 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 |
Este es el gráfico de sectores creado para los datos. Puede personalizarse fácilmente en cuanto a colores, visualización de datos, etiquetas y leyendas.
Haz clic en la imagen para ver la animación GIF sobre cómo llevar los resultados a google sheets para obtener los gráficos en un segundo.
2. Tarea: Encontrar las 10 ciudades con mayor número de hoteles.
|
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 |
La única personalización del histograma consiste en añadir las etiquetas de datos para mostrar el número real de hoteles.
2. Tarea: Encontrar las 5 ciudades con mayor número de hoteles con "jardines" en la reseña.
|
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 con elegir el "gráfico de rosquillas" y añadir las etiquetas.
6. Los gráficos de burbujas requieren que cree el valor porcentual de cada fila. La función de ventana RATIO_TO_REPORT() te ayudarán a hacerlo fácilmente. Una vez que tengas tu consulta, crear una burbuja
|
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 burbujas que muestra la valoración media por ubicación, etc. El tamaño de la burbuja muestra el %ge de hoteles representados dentro del país respectivo.
Este GIF animado muestra cómo crear este gráfico.
7. La creación de gráficos geográficos es bastante fácil en google charts, ya que reconoce los países y las ciudades. No es necesario tratar con 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 |
Con los datos anteriores, basta con pegarlos en una hoja de Google y crear un gráfico geográfico.

8. También puede crear un geo gráfico con marcadores (burbujas proporcionales), de nuevo, utilizando las funciones de ventana 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 |
También puede personalizar los gráficos según la región, por ejemplo, Estados Unidos.
Por último, la consulta para generar el primer gráfico de este 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 |







