{"id":5308,"date":"2018-06-13T07:15:51","date_gmt":"2018-06-13T14:15:51","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=5308"},"modified":"2025-06-13T19:28:08","modified_gmt":"2025-06-14T02:28:08","slug":"data-visualization-couchbase-knowi","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/","title":{"rendered":"Data Visualization with Couchbase and Knowi"},"content":{"rendered":"<div class=\"paragraph\">\n<p><strong>Note:<\/strong> This post uses the the Couchbase Analytics Data Definition Language as of the version 5.5 preview release.\u00a0 For updates and information on breaking changes in newer versions, please refer to\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-analytics-service-changes\/\">Changes to the Couchbase Analytics Service<\/a>.<\/p>\n<p>Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. Couchbase Analytics (currently in developer preview) provides a seamless <a href=\"https:\/\/www.youtube.com\/watch?v=MIno71jTOUI\">NoETL experience (video)<\/a> to analyze data with powerful queries. <a href=\"https:\/\/www.knowi.com\/\">Knowi<\/a> is a cloud-based reporting and visualization tool that integrates with Couchbase. These tools can work together to provide powerful and easy data visualization.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>As I blogged about previously, the <a href=\"https:\/\/www.couchbase.com\/blog\/nifi-processing-flow-couchbase-server\/\">Cincinnati Reds (a Couchbase customer) are using Apache NiFi<\/a> to process data from their enterprise into a Couchbase Cluster. One of the many use cases they are exploring with Couchbase is to create a real-time dashboard. This dashboard would, among other things, show a data visualization of the ballpark after the gates open and tickets are starting to be scanned.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>This real-time data visualization can help show patterns at the ballpark, and give the Reds an idea of when ticket holders are showing up and where they are going.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>In this blog post, I\u2019m going to show you an example of Couchbase and Knowi in action to provide a data visualization of Great American Ball Park (where the Cincinnati Reds play their home games). <em>What I\u2019m showing in this post is not exactly what the Reds are using: it has been simplified.<\/em><\/p>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_data_in_couchbase\">Data in Couchbase<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>The Reds have a sophisticated mapping system to match a section, row, and seat number to a specific spot on a map graphic. For this blog post, however, I\u2019m going to use latitude and longitude with Google Maps.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The data I\u2019m working with is a simplified document consisting of a ticket holder\u2019s name, geo-coordinates, and a <code>type<\/code> field. An example document:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-JavaScript\">{\r\n\t\"name\": \"Sparky Anderson\",\r\n\t\"geo\": {\r\n\t\t\"lat\": 39.097303,\r\n\t\t\"lon\": -84.507277\r\n\t},\r\n\t\"type\": \"ticketScan\"\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>I would normally expect mapping data to be separate, and possibly joined on-the-fly with a ticket scan. But let\u2019s assume that\u2019s been done already. We have all we need in a single document.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>I\u2019ve created a bucket called &#8220;tickets&#8221; which will contain documents like the above. In production, data will continually flow into this bucket (probably through NiFi) during a baseball game. In fact, I recently attended a game and helped test this system as I was walking through the gates and getting my ticket scanned during peak times at a weekend game.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_couchbase_analytics\">Couchbase Analytics<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Knowi could connect to this bucket directly and start reporting on it. However, it might be better to use Couchbase Analytics in this situation. Using Couchbase Analytics means we don\u2019t have to worry about writing indexes for more complex queries, and it also means we will reduce any performance impact on the operational bucket.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>To get started with Couchbase Analytics, make sure you\u2019ve enabled the Analytics service when you installed Couchbase. The analytics service should appear in the &#8220;Servers&#8221; tab:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10901-analytics-service.png\" alt=\"Analytics service enabled on Couchbase\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Next, go to the &#8220;Analytics&#8221; tab. You will see a screen that looks very similar to the normal N1QL Query Workbench.<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_setting_up_analytics\">Setting up analytics<\/h3>\n<div class=\"paragraph\">\n<p>There are three simple steps for getting started.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>First, create an analytics bucket. This bucket will correspond to a regular Couchbase bucket. Simply enter a command like this: <code>CREATE BUCKET ticketsAnalytics WITH {\"name\":\"tickets\"};<\/code><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Next, define a dataset from within that bucket. You can specify which documents that should go into that dataset by using a <code>WHERE<\/code> clause. Example:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">CREATE SHADOW DATASET ticketScans ON ticketsAnalytics WHERE `type` = \"ticketScan\";<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>This is a &#8220;shadow&#8221;: a real-time copy of (a subset of) a Couchbase bucket.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Finally, kick off the shadowing with one more command: <code>CONNECT BUCKET ticketsAnalytics;<\/code><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>At this point, ticketScan documents from the Couchbase bucket &#8220;tickets&#8221; will start to be copied over into the Analytics bucket &#8220;ticketsAnalytics&#8221;.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>It will start happening immediately. You can run a query like <code>select * from ticketScans;<\/code> to see the data in Analytics.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>You should also see a visual representation of this setup under &#8220;Bucket Insights&#8221; at the top right of the page.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10902-bucket-insights-analytics.png\" alt=\"Bucket insights for Analytics\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Note that Analytics is still in developer preview at this time, and the above steps may change after general release (currently planned for later this year).<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_setting_up_the_knowi_agent_optional\">Setting up the Knowi Agent (optional)<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>You can create a free 14-day trial of <a href=\"https:\/\/www.knowi.com\/\">Knowi<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Knowi is cloud-based, so you don\u2019t necessarily need to download anything. You can build reports and visualizations right in your browser.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>However, if your Couchbase cluster isn\u2019t exposed to the internet, or you don\u2019t have a VPN tunnel set up, you can still use Knowi by running the Knowi Agent on your network. This is an easy way for Knowi to get access to your data. My local Couchbase cluster is not exposed to the internet, so I simply downloaded the Knowi Agent:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10903-knowi-cloud9-agent.gif\" alt=\"Download Cloud9 Agent for Knowi\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>You\u2019ll need to create a datasource JSON file in the \/config folder. This is really easy to do, because there are a ton of example files in the \/example folder. For Couchbase, check out <code>datasource_example_couchbase.json<\/code>. For my local cluster, I created a file with these contents:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-JavaScript\">[\r\n    {\r\n        \"name\": \"demoCouchbase\",\r\n        \"host\": \"localhost\",\r\n        \"dbName\": \"matt\",\r\n        \"password\": \"password\",\r\n        \"datasource\": \"couchbase\"\r\n    }\r\n]<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p><em>This assumed you created a user named &#8220;matt&#8221; in Couchbase with permission to use Analytics.<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The Agent comes with some handy shell scripts and batch files. It can run as a service, or you can just do what I did and run <code>run.bat<\/code> to kick off the agent. At this point, Knowi will be able to communicate with your Couchbase cluster through the agent.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_setting_up_a_data_source_in_knowi\">Setting up a data source in Knowi<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Now go back to the Knowi.com UI. Create a new datasource. You can give it whatever name you\u2019d like. If you\u2019re using the agent like me, set &#8220;localhost&#8221; to be the data source. I also specified a bucket name of &#8220;tickets&#8221;. I entered the user credentials. For Analytics, you need to specify a &#8220;Dataverse&#8221;. Out of the box, there is already a &#8220;Default&#8221; dataverse available.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Finally, check the box for &#8220;Internal Datasource&#8221;. If the agent is working properly, you will see a dropdown and be able to select the agent. If you aren\u2019t using an Agent, then don\u2019t check that box.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10904-new-couchbase-datasource.png\" alt=\"New Couchbase\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>At this point, you can use this data source to create 1 or more Knowi data feeds.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_knowi_data_feeds\">Knowi Data Feeds<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>A data feed \/ data set in Knowi is analogous to a query. Here is the (very simple) data feed that I created to get the ticket information from Couchbase.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10905-data-feed.png\" alt=\"Knowi data feed\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Notice that Knowi supports N1QL natively. All the power of Couchbase\u2019s N1QL language is available to you when creating a data feed. My query is a very simple one just for demonstration.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_knowi_widget\">Knowi widget<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Finally, I can create a Knowi widget. Widgets are individual reports or data visualizations. There are a variety of widgets available, and you can even customize and combine widgets. I\u2019m going to keep it simple and create a single widget. Click &#8220;New Widget+&#8221; and then select the data set that you created in the previous section.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Next, click the &#8220;settings&#8221; cog next to the widget. There are a lot of options for reporting and data visualization. Definitely check them out and experiment with them. I\u2019m going right for &#8220;Geo-Heatmaps&#8221;.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10906-geo-heatmaps.png\" alt=\"Geo heatmaps in Knowi\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>I\u2019ve chosen the middle of Great American Ball Park for the Center Latitude and Center Longitude (39.097208,-84.506530) and a high zoom level. The radius represents how big you want the spots on the heatmap to be. Mine correspond to seats in a baseball stadium, so I\u2019ve entered a relatively small value of 5.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>That\u2019s it. Save the widget. Click the eyeball icon to see a preview. Here\u2019s a preview with just 6 tickets total in my Couchbase bucket.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10907-geo-heatmap-data-visualization-preview.png\" alt=\"Geo heatmap data visualization preview\" \/><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_data_visualization_dashboard\">Data Visualization Dashboard<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Finally, I\u2019m going to create a dashboard with this data visualization on it. Go to the Knowi dashboard, click &#8220;Add Widget to Dashboard&#8221; and select the widget. The widget can then be resized and moved around. You can add other widgets for a more complete dashboard. This is what the Reds are working on: just seeing a visualization by itself isn\u2019t enough. They also want to report on the overall trends: what sections are the fullest, how many total tickets have been scanned over a time period, etc.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>I created a <a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/109Knowi\/src\">.NET program (source code available here)<\/a> to start randomly adding tickets. I wanted to see a real-time update of this data visualization. My example is not entirely accurate: I didn\u2019t want to spend the time mapping every seat to latitude and longitude myself. But it\u2019s close enough for you to get the idea.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/06\/10908-realtime-data-visualization.gif\" alt=\"Realtime data visualization\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>(This clip represents a 5-minute period of my sample program running, compressed down into 30 seconds).<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The distribution is random, and it\u2019s within two arbitrary boxed areas. This is the part where the Cincinnati Reds have more expertise in actually mapping their data to a more efficient seat map, but hopefully you get the idea.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Note that for a data visualization to be real-time (like above), you can\u2019t use the agent. I had to give direct access to Knowi for a &#8220;Direct Query&#8221; checkbox to appear when I was creating a data feed (so I used <a href=\"https:\/\/www.couchbase.com\/blog\/azure-getting-started-easy-free\/\">Couchbase on Microsoft Azure<\/a>).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>This particular visualization might also be useful for a real-time outage map for a utility company. You could create a dashboard to report internet, power, gas, or phone outages on a map.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_what_s_next\">What\u2019s next?<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>In this post, you saw how easy it was to use Knowi and Couchbase Analytics to start building real-time data visualizations.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Couchbase provides the flexibility of N1QL and the performance of a memory-first architecture, and Knowi provides the data visualization and dashboard capabilities.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Remember that Knowi has a free trial. I\u2019ve worked with Knowi on this Reds project only for a short time, but I\u2019ve found their support to be helpful and responsive and their documentation to be complete and useful.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Some next steps for you:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/downloads\/\">Download Couchbase Server<\/a> for free and try out Couchbase Analytics (currently included as a developer preview in <a href=\"https:\/\/www.couchbase.com\/blog\/announcing-couchbase-server-5-5\/\">Couchbase Server 5.5<\/a>)<\/li>\n<li>Sign up for a <a href=\"https:\/\/www.knowi.com\/\">free trial of Knowi<\/a> today.<\/li>\n<li>Got a Couchbase question? Ask on the <a href=\"https:\/\/docs.knowi.com\">Couchbase forums<\/a>.<\/li>\n<li>Got a Knowi question? Check out the <a href=\"\/\/docs.knowi.com\">Knowi Help Center<\/a>.<\/li>\n<li>Got a question for me? I\u2019m on <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Note: This post uses the the Couchbase Analytics Data Definition Language as of the version 5.5 preview release.\u00a0 For updates and information on breaking changes in newer versions, please refer to\u00a0Changes to the Couchbase Analytics Service. Data visualization and reporting [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":5317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2294,1816,1812],"tags":[2258,2250],"ppma_author":[8937],"class_list":["post-5308","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","category-couchbase-server","category-n1ql-query","tag-5-5","tag-data-visualization"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Data Visualization with Couchbase and Knowi - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. The Cincinnati Reds are using Couchbase and Knowi to visualize ballpark attendance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Visualization with Couchbase and Knowi\" \/>\n<meta property=\"og:description\" content=\"Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. The Cincinnati Reds are using Couchbase and Knowi to visualize ballpark attendance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-13T14:15:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:28:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1980\" \/>\n\t<meta property=\"og:image:height\" content=\"1239\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Data Visualization with Couchbase and Knowi\",\"datePublished\":\"2018-06-13T14:15:51+00:00\",\"dateModified\":\"2025-06-14T02:28:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\"},\"wordCount\":1691,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg\",\"keywords\":[\"5.5\",\"data visualization\"],\"articleSection\":[\"Couchbase Analytics\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\",\"name\":\"Data Visualization with Couchbase and Knowi - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg\",\"datePublished\":\"2018-06-13T14:15:51+00:00\",\"dateModified\":\"2025-06-14T02:28:08+00:00\",\"description\":\"Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. The Cincinnati Reds are using Couchbase and Knowi to visualize ballpark attendance.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg\",\"width\":1980,\"height\":1239,\"caption\":\"Great American Ball Park for a Reds baseball game\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Visualization with Couchbase and Knowi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Data Visualization with Couchbase and Knowi - The Couchbase Blog","description":"Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. The Cincinnati Reds are using Couchbase and Knowi to visualize ballpark attendance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/","og_locale":"en_US","og_type":"article","og_title":"Data Visualization with Couchbase and Knowi","og_description":"Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. The Cincinnati Reds are using Couchbase and Knowi to visualize ballpark attendance.","og_url":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-06-13T14:15:51+00:00","article_modified_time":"2025-06-14T02:28:08+00:00","og_image":[{"width":1980,"height":1239,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Data Visualization with Couchbase and Knowi","datePublished":"2018-06-13T14:15:51+00:00","dateModified":"2025-06-14T02:28:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/"},"wordCount":1691,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg","keywords":["5.5","data visualization"],"articleSection":["Couchbase Analytics","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/","url":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/","name":"Data Visualization with Couchbase and Knowi - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg","datePublished":"2018-06-13T14:15:51+00:00","dateModified":"2025-06-14T02:28:08+00:00","description":"Data visualization and reporting can help decision makers to identify patterns and concepts in analytics. The Cincinnati Reds are using Couchbase and Knowi to visualize ballpark attendance.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/06\/109-hero-great-american-ball-park-baseball.jpg","width":1980,"height":1239,"caption":"Great American Ball Park for a Reds baseball game"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/data-visualization-couchbase-knowi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Visualization with Couchbase and Knowi"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/5308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=5308"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/5308\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/5317"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=5308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=5308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=5308"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=5308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}