<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Katie Hindson</title>
    <description>The latest articles on DEV Community by Katie Hindson (@turinglovesdeathmetal).</description>
    <link>https://dev.to/turinglovesdeathmetal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F520271%2F595cb829-58de-4449-b0cc-35741b47e2a3.jpeg</url>
      <title>DEV Community: Katie Hindson</title>
      <link>https://dev.to/turinglovesdeathmetal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/turinglovesdeathmetal"/>
    <language>en</language>
    <item>
      <title>How we do product planning at Lightdash</title>
      <dc:creator>Katie Hindson</dc:creator>
      <pubDate>Thu, 10 Mar 2022 10:43:40 +0000</pubDate>
      <link>https://dev.to/turinglovesdeathmetal/how-we-do-product-planning-at-lightdash-42ij</link>
      <guid>https://dev.to/turinglovesdeathmetal/how-we-do-product-planning-at-lightdash-42ij</guid>
      <description>&lt;h3&gt;
  
  
  We’ve finally found a product planning approach that works for us
&lt;/h3&gt;

&lt;p&gt;The speed and ambiguity that comes with building a new product can be lots of fun, but it can also make planning super tricky. At an early stage company, you don’t know where you’ll be in 6 weeks, let alone in 6 months. But, that’s half of the fun of startups, right?  &lt;/p&gt;

&lt;p&gt;We started building Lightdash less than a year ago, and the way we do product planning has already changed a few times. At times our planning was bad, sometimes it was okay, but it never felt &lt;strong&gt;&lt;em&gt;great.&lt;/em&gt;&lt;/strong&gt; It felt like planning was blocking productivity instead of enabling it. &lt;/p&gt;

&lt;p&gt;The main problems were a combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;we were trying to plan too far in advance&lt;/li&gt;
&lt;li&gt;the plans were too rigid, so they became irrelevant really quickly&lt;/li&gt;
&lt;li&gt;it wasn’t clear when or how our plans should get updated over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, we came across &lt;a href="https://twitter.com/antwilson" rel="noopener noreferrer"&gt;Ant Wilson’s&lt;/a&gt; &lt;a href="https://supabase.com/blog/2021/11/26/supabase-how-we-launch" rel="noopener noreferrer"&gt;blog post about how Supabase does launches&lt;/a&gt;, and we decided to try a version of this for ourselves. Spoiler alert: it went really well. &lt;/p&gt;

&lt;p&gt;In the spirit of being open about how we’re building Lightdash, we wanted to share the process for product planning that’s been working for us. We’re also hoping that this might be helpful for other folks on the hunt for a better product planning process :)&lt;/p&gt;

&lt;h3&gt;
  
  
  We plan for 6 weeks of work, release things when they’re ready, and shout about what we’ve built at the end.
&lt;/h3&gt;

&lt;p&gt;^ That’s pretty much the one-liner summary of how we do product planning at Lightdash. &lt;/p&gt;

&lt;p&gt;In the past, we tried planning for 6 months in advance, quarterly planning, and a blend of timelines, but we found that things changed so quickly and we were just continuously updating our plans. This is why we landed on planning 6 weeks of work - shorter than a quarter, but longer than a month. It’s worked for us.&lt;/p&gt;

&lt;p&gt;So, in the rest of this post, we’ll outline the product planning rituals, the timelines, and links to all of the resources that we use for our 6 week planning cycles.&lt;/p&gt;

&lt;p&gt;The process is broken up into 6 bits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Planning&lt;/li&gt;
&lt;li&gt;The Kick-Off&lt;/li&gt;
&lt;li&gt;Get to Work&lt;/li&gt;
&lt;li&gt;Prepping for Demo Week&lt;/li&gt;
&lt;li&gt;Demo Week&lt;/li&gt;
&lt;li&gt;Rest + Reflect&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s dig in!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Planning
&lt;/h2&gt;

&lt;p&gt;The planning phase is where we (surprise, surprise) plan the work we’ll do in our 6 weeks of building time. This is the phase that has the most meetings, but investing in the planning at the start is totally worth it!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;All things Lightdash (30 minutes):&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; Google Jamboard where we brain dump terms + concepts related to Lightdash. What we're building, who it's for, what our goals and metrics are.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal*:&lt;/strong&gt;* get everyone loaded up on what’s happening across Lightdash. Get the “obvious” stuff down so we can move onto more creative thinking later!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://jamboard.google.com/d/1kR85nLZ_yoyFbdsWXmah2I9CMip9T2t98ZLbE8AOXY4/edit?usp=sharing" rel="noopener noreferrer"&gt;All Things Lightdash - Template&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd0jg5dpzk64dsh1kcdxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd0jg5dpzk64dsh1kcdxp.png" alt="An example of our Google Jamboard after this session" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The great metrics review (45 minutes)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; Are the metrics we’re tracking still relevant? If yes, which ones should we be trying to improve and why? Are we missing any important metrics?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Everyone should have a clear idea of the metrics we’re trying to improve (before we brainstorm ways to improve them).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/The-great-metrics-review-Template-fad00d55a8824c0786a4c9f34c85b03e" rel="noopener noreferrer"&gt;The Great Metrics Review&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomdj528miciu4zfam0ga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomdj528miciu4zfam0ga.png" alt="An example of our metrics review session" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The ideation situation (1h45 minutes)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; what are we going to build or do that's going to move the needle? List down as many ideas as possible. We’ll be sorting and filtering as we go. 
The scope of these ideas is flexible! Some ideas may take 1 week to build, some may take 20 - if we don’t finish it before launch week, we can finish it in the next build cycle 😊&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Have a list of ideas of things we want to do/build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/The-Ideation-Situation-Template-4e50c068744f498c9dfb58b2b6d1f087" rel="noopener noreferrer"&gt;The Ideation Situation&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4gfm4hodhba7r353ckq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4gfm4hodhba7r353ckq.png" alt="An example of our ideation jamboard" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Making the cut &lt;strong&gt;(45 minutes)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; We use the RICE prioritization framework to filter and prioritize the ideas that we came up with. Then, we pick the top 6, assign owners to them and bring them to the break out sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Get a shortlist of ideas that we want to bring to the breakout sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/Making-the-Cut-Template-a2ca572d93c84f0889c07bc39f2a2ce0" rel="noopener noreferrer"&gt;Making the Cut&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F019iksd6s8ia29t8arhl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F019iksd6s8ia29t8arhl.png" alt="An example of our prioritization session" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Break outs&lt;/strong&gt; &lt;strong&gt;(~30 minutes each session - optional to run and not everyone attends)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; These are sessions that are &lt;strong&gt;&lt;em&gt;optionally&lt;/em&gt;&lt;/strong&gt; booked by the idea owners. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea owners should take some time filling out the Break Out Template for their idea. Once they’ve done this, they can decide if they have some questions that they want to talk through with some folks from the team and book a break out session. Or, they can just share their completed Break Out Template for the rest of the team to read and give feedback independently. &lt;/p&gt;

&lt;p&gt;The break out templates are meant to help you you can flesh out the idea and decide whether or not it’s actually worth building (ideas can die after completing a break out ☠️). &lt;/p&gt;

&lt;p&gt;If an idea survives, there should be a general plan of clear next steps + what work needs to get done (do we need user research? do we need to plan/partner with another company? do we need to find a new tool to do the thing we want to do?).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Decide whether or not an idea is something we actually want to pursue building. If it survives: we should have a general plan of work + clear next steps that we need to take for building the idea. 
Copy a break out template and complete it for your idea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/The-Break-Out-Template-fb477fa06d904480aa4fa9f2b3092151" rel="noopener noreferrer"&gt;The Break Out Template&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyzt628natcbwaqr4t1c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyzt628natcbwaqr4t1c.png" alt="An example of a break out session" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Kick-off
&lt;/h2&gt;

&lt;p&gt;Now that you’ve done all of the planning, it’s time to actually kick-off the work. The team’s had a chance to think a bit more about the suggested ideas, so this is an opportunity to make a final cut or change the priorities for the next 6 weeks.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Can I kick it? (1 hour):&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; We’ve completed any break-out sessions or chats we needed so we have a pretty good idea of what we want to aim for in the next 6 weeks. We remind everyone of the goals we’re aiming for, the timeline, and the current list of ideas we want to build.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We decide on which project we want to get started with.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt;  Everyone should have a clear idea of what we’re aiming for at the end of the 6 weeks and be ready to get to work after the kick off!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/The-Kick-Off-Template-19c1205a9ced41bd96b5cbd0d0f35fbe" rel="noopener noreferrer"&gt;The Kick-Off&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftqluhmx9l2f3juy4cix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftqluhmx9l2f3juy4cix.png" alt="An example of our Kick off doc" width="800" height="683"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Get to work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; This isn’t a one-off meeting. This is the 6 week period where we start to work on the goals we planned. We ship features as they’re built and log our changes for our Demo Week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: build the stuff!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Prepping for Demo Week
&lt;/h2&gt;

&lt;p&gt;We’re a couple of weeks out from the chaos of Demo Week - so it’s time to start planning and prepping so everything runs nice and smoothly :) &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The content event ( 1 hour)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; In the 3 weeks leading up to the Demo Week, we review what we actually want to demo, plan for what supporting materials we'll need and decide on which channels we want to push the content to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: Have a plan for the content + other things we need for Demo Week!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/The-Content-Event-Template-ed7b82b946ec439a89f5bc079005bcf6" rel="noopener noreferrer"&gt;The Content Event&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55ogpe68wzr0bj3tjtxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55ogpe68wzr0bj3tjtxk.png" alt="An example of our content baacklog" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Love, peace and pre-Demo Week release.&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary&lt;/strong&gt;: Everything that we want to be demoed in Demo Week should be ready/released the week before. We talk about blockers, any content that we’re missing and assign people to review + test everything before Demo Week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; We know what needs to be done before Demo Week and we have people assigned to doing it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Big fans of plans&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; This isn’t a meeting, it’s just a reminder. We have planned each day of the Demo Week: what we’re announcing, where we’re announcing it, when it’s happening, and who’s responsible for doing it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; We have a plan for each day of Demo Week.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxirtkpzdaz7wzbxqpmux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxirtkpzdaz7wzbxqpmux.png" alt="An example of our demo week plans" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Demo Week!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Yay, it’s Demo Week!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; Every day we have a catch up in the morning, talk about blockers, and review the launch plan for the day!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: Remove blockers, get stoked!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Rest + Retro
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary&lt;/strong&gt;: We take a week-long rest to chill, do some less critical work, catch up on sleep, do anything we didn’t have the chance to do during Demo Week.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Retro on the planning cycle! Do we want to do Demo Week again? Is this more or less effective than how we worked before? What went well, went badly, can be improved?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: Have an idea of what we can improve, and what we should keep for another product planning cycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://www.notion.so/Reflect-Retrospect-Template-9a6ad30474134fb89edb251627ae8558" rel="noopener noreferrer"&gt;Reflect and Retrospect&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  And that’s it!
&lt;/h2&gt;

&lt;p&gt;There you have it: our product planning approach at Lightdash. Hopefully some of these sessions are helpful if you need some inspiration to change up your product planning or if you’re just interested in how we do things here at Lightdash.. &lt;/p&gt;

&lt;p&gt;If you have any questions, or ended up trying it out for yourself, we’d love to hear about it!&lt;/p&gt;

&lt;p&gt;You can shoot us an email at &lt;a href="mailto:info@lightdash.com"&gt;info@lightdash.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>product</category>
      <category>productivity</category>
      <category>planning</category>
    </item>
    <item>
      <title>SQL queries I wish I'd known when I started in data. Part 1: the event funnel.</title>
      <dc:creator>Katie Hindson</dc:creator>
      <pubDate>Mon, 21 Dec 2020 11:34:44 +0000</pubDate>
      <link>https://dev.to/turinglovesdeathmetal/sql-queries-i-wish-i-d-known-when-i-started-in-data-part-1-the-event-funnel-5501</link>
      <guid>https://dev.to/turinglovesdeathmetal/sql-queries-i-wish-i-d-known-when-i-started-in-data-part-1-the-event-funnel-5501</guid>
      <description>&lt;h2&gt;
  
  
  SQL worth remembering.
&lt;/h2&gt;

&lt;p&gt;Hey! I'm Katie, a product data scientist here at Hubble 👩🏼‍💻&lt;/p&gt;

&lt;p&gt;Something I've noticed since joining Hubble a little less than two months ago is how much SQL I have stuck in my head. These are queries that I find myself reusing over and over again at every place I work and once I used them once, I couldn't forget them.&lt;/p&gt;

&lt;p&gt;So, I thought it might be worth sharing these queries in case it's useful for others 🤗 And that's exactly what I'm going to do in this series of blog posts.&lt;/p&gt;

&lt;p&gt;I'm going to go through some of the most common SQL queries that I whip up when digging into a product's performance. I'll also talk a bit about how you can use this data to help you make better product decisions. &lt;/p&gt;

&lt;p&gt;So expect to get some insight into building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;event funnels&lt;/li&gt;
&lt;li&gt;gapless date grids&lt;/li&gt;
&lt;li&gt;tables that let you do time-series analyses on your users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you've built these common queries, you can use Beacon to save them so all of your team can access them without ever having to write the SQL. You can also use Beacon to share the results from your shiny, new queries right in Slack! &lt;a href="https://www.gethubble.io/beacon" rel="noopener noreferrer"&gt;You can check out Beacon here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Being a "data driven" company can feel like a pipe dream at times, but hopefully these blog posts can help your team make it a reality 💪.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use event funnels to track a series of events that users can take - and to improve the journey!
&lt;/h2&gt;

&lt;p&gt;One of the most useful bits of data I dig up when first launching a product comes from an &lt;strong&gt;event funnel&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;An event funnel is a tool that lets you measure the completion rate of a series of steps (events). For example, you might create a funnel of the steps you need to go through to create an account, and then track the completion rate of each step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiy360gg1govdjzs19nuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiy360gg1govdjzs19nuj.png" alt="Untitled (1)" width="800" height="400"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;With these funnels, you're able to see which steps are the biggest drop-off points in the user journey. This information is really useful, because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can make &lt;strong&gt;&lt;em&gt;data-informed decisions&lt;/em&gt;&lt;/strong&gt; about what parts of the product you need to change to increase completion of an action (instead of relying only on your intuition).&lt;/li&gt;
&lt;li&gt;You're able to &lt;strong&gt;estimate the impact&lt;/strong&gt; that your change made on the completion rate because you can compare the funnel before + after the change. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How we used event funnels to drive higher engagement with &lt;a href="https://slack.com/oauth/v2/authorize?client_id=1207722259383.1462138656839&amp;amp;scope=commands,im:history,im:read,im:write,team:read,users:read,users:read.email,workflow.steps:execute,chat:write&amp;amp;user_scope=&amp;amp;state=devto.event_funnel" rel="noopener noreferrer"&gt;Beacon&lt;/a&gt;.
&lt;/h2&gt;

&lt;p&gt;We built a product, &lt;a href="https://www.gethubble.io/beacon" rel="noopener noreferrer"&gt;Beacon&lt;/a&gt;, that lets you write, run and share your SQL in Slack (you can &lt;a href="https://slack.com/oauth/v2/authorize?client_id=1207722259383.1462138656839&amp;amp;scope=commands,im:history,im:read,im:write,team:read,users:read,users:read.email,workflow.steps:execute,chat:write&amp;amp;user_scope=&amp;amp;state=devto.event_funnel" rel="noopener noreferrer"&gt;add it to your workspace here&lt;/a&gt;!)&lt;/p&gt;

&lt;p&gt;Once we launched it, we wanted to understand how users were engaging with the product. Specifically, we wanted to figure out &lt;strong&gt;why people weren't running a query with Beacon after installing it&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;So, we have an action ("execute a query") that we're trying to optimize the completion rate for, and we know the steps leading up to that action. Enter...&lt;em&gt;the event funnel.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;I built an event funnel for users starting at "I installed the app" and going to "I executed a query". I used our awesome tool, &lt;a href="https://slack.com/oauth/v2/authorize?client_id=1207722259383.1462138656839&amp;amp;scope=commands,im:history,im:read,im:write,team:read,users:read,users:read.email,workflow.steps:execute,chat:write&amp;amp;user_scope=&amp;amp;state=devto.event_funnel" rel="noopener noreferrer"&gt;Beacon&lt;/a&gt;, to run the query and share the results directly with the team in Slack:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp6lph9mjp5w2c7pslfwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp6lph9mjp5w2c7pslfwa.png" alt="Untitled (2)" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3g663dsoixshkgaoqfe2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3g663dsoixshkgaoqfe2.png" alt="Untitled (3)" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This event funnel makes it really clear that the biggest drop off point is between steps 3 and 4: seeing the &lt;code&gt;connect modal&lt;/code&gt; (i.e. the screen giving instructions about how to connect to a database) and successfully getting a &lt;code&gt;database connected&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;So, we reached out to some of the users who got stuck at this step and brainstormed some improvements that we could make to help reduce the friction in getting a database connected. Basically, &lt;strong&gt;the event funnel showed us what part of the product we should be looking to change if we wanted to drive the highest increase in user engagement.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The event funnel is one of the SQL queries I have imprinted in my brain.
&lt;/h2&gt;

&lt;p&gt;To be able to build a funnel, you need to generate a table with one row per step in your funnel, and then a count of the number of users who made it to that step. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1zad65oqzdk4bb7ktnuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1zad65oqzdk4bb7ktnuo.png" alt="Untitled (4)" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These &lt;code&gt;step_name&lt;/code&gt; values are analytics events that we're tracking in our app (you can use a tool like &lt;a href="https://segment.com/docs/protocols/tracking-plan/best-practices/" rel="noopener noreferrer"&gt;Segment&lt;/a&gt; or &lt;a href="https://docs.rudderstack.com/rudderstack-sdk-integration-guides" rel="noopener noreferrer"&gt;Rudderstack&lt;/a&gt; to set up event tracking if you haven't already!)&lt;/p&gt;

&lt;p&gt;Once you've figured out the steps that you want in your funnel and the order that you want them in, you can use this SQL template below to build your event funnel.  Our team loves seeing these funnels now, it drives a lot of our work. We use &lt;a href="https://www.gethubble.io/beacon" rel="noopener noreferrer"&gt;Beacon&lt;/a&gt; to share the latest event funnel data in our team Slack every morning before stand up.&lt;/p&gt;

&lt;p&gt;I tapped out at 3 events, but you can follow the pattern in this template and add more events as additional sub-queries (these are actually called "&lt;a href="https://www.essentialsql.com/introduction-common-table-expressions-ctes/" rel="noopener noreferrer"&gt;CTEs&lt;/a&gt;") to fulfil your funnel needs!&lt;/p&gt;

&lt;h2&gt;
  
  
  So here it is, in all its glory: &lt;strong&gt;The event funnel.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To run a query using this event funnel, you'll need to make sure you've got a few thing sorted:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Plug the right variables into the query below.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;code&gt;user_id&lt;/code&gt; field needs to be the identifier for your users (or the unit that you're counting in the funnel - e.g. &lt;code&gt;team_id&lt;/code&gt; if you want to know the rate of conversion for teams doing something)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;event&lt;/code&gt; field should be the &lt;strong&gt;name&lt;/strong&gt; &lt;strong&gt;of the step&lt;/strong&gt; that you're referencing in each sub-query (CTE).&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;timestamp&lt;/code&gt; field should represent the time when the event occurred.&lt;/li&gt;
&lt;li&gt;You'll need to change the &lt;code&gt;FROM project_name.dataset_name.event_name_1&lt;/code&gt; to reference the table where your event data is stored for each given step.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I've commented out some code at the bottom which lets you specify a range of dates for the funnel (see: &lt;code&gt;IF YOU WANT TO SPECIFY A RANGE OF DATES, YOU CAN DO THAT HERE&lt;/code&gt;). You can add it in if you need it, but it's not required for the query to work! 🙂&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;event_1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;-- identifier of the thing you're counting in your funnel&lt;/span&gt;
    &lt;span class="s1"&gt;'get_in_rocket'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;-- name of the step in your funnel&lt;/span&gt;
    &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;timestamp_first&lt;/span&gt; &lt;span class="c1"&gt;-- timestamp of when the event occurred&lt;/span&gt;

    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="nv"&gt;`project_name.dataset_name.event_name_1`&lt;/span&gt; &lt;span class="c1"&gt;-- table where your event data is stored for step 1&lt;/span&gt;

    &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;

&lt;span class="n"&gt;event_2&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'push_button'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;timestamp_first&lt;/span&gt;

    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="nv"&gt;`project_name.dataset_name.event_name_2`&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;

    &lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;event_1&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;

    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timestamp_first&lt;/span&gt;

    &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;

&lt;span class="n"&gt;event_3&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;s3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'blastoff'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;timestamp_first&lt;/span&gt;

    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="nv"&gt;`project_name.dataset_name.event_name_3`&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt;

    &lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;event_2&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;

    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timestamp_first&lt;/span&gt;

    &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;

&lt;span class="n"&gt;all_events&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'01: "'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'"'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;step_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timestamp_first&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;event_1&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'02: "'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'"'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;step_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timestamp_first&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;event_2&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'03: "'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'"'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;step_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timestamp_first&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;event_3&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;step_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;num_users_making_it_to_step&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;percent_of_users_making_it_to_step&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;all_events&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;event_1&lt;/span&gt; &lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;-- IF YOU WANT TO SPECIFY A RANGE OF DATES, YOU CAN DO THAT HERE&lt;/span&gt;
&lt;span class="c1"&gt;-- This is the "From" date:&lt;/span&gt;
&lt;span class="c1"&gt;-- WHERE event_1.timestamp_first &amp;gt;= '2020-12-01'&lt;/span&gt;

&lt;span class="c1"&gt;-- This is the "To" date:&lt;/span&gt;
&lt;span class="c1"&gt;-- AND event_1.timestamp_first &amp;lt;= '2020-12-03'&lt;/span&gt;

&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Use Beacon to share the funnel in your favourite Slack channel!
&lt;/h3&gt;

&lt;p&gt;Once you've &lt;a href="https://slack.com/oauth/v2/authorize?client_id=1207722259383.1462138656839&amp;amp;scope=commands,im:history,im:read,im:write,team:read,users:read,users:read.email,workflow.steps:execute,chat:write&amp;amp;user_scope=&amp;amp;state=blog.event_funnel" rel="noopener noreferrer"&gt;installed Beacon&lt;/a&gt; into your Slack workspace and you've connected to your database, just type &lt;code&gt;/run-query&lt;/code&gt;, then your SQL query and hit enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F53zrhm69qlwc5pjhvaar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F53zrhm69qlwc5pjhvaar.png" alt="Untitled (5)" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Save your query so that the rest of your team can use it!
&lt;/h3&gt;

&lt;p&gt;Once your query is posted in Slack, you can hit &lt;code&gt;Save Query&lt;/code&gt; to make the SQL query for your event funnel available to everyone else in your team! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F74o6a3zux8p7sjugx9ik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F74o6a3zux8p7sjugx9ik.png" alt="Untitled (6)" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it! &lt;/p&gt;

&lt;p&gt;Feel free to shoot me a message at &lt;a href="mailto:katie@gethubble.io"&gt;katie@gethubble.io&lt;/a&gt; if you have any questions or feedback, and go check out &lt;a href="https://slack.com/oauth/v2/authorize?client_id=1207722259383.1462138656839&amp;amp;scope=commands,im:history,im:read,im:write,team:read,users:read,users:read.email,workflow.steps:execute,chat:write&amp;amp;user_scope=&amp;amp;state=devto.event_funnel" rel="noopener noreferrer"&gt;Beacon&lt;/a&gt; so you can share your nifty new event funnel with your team, directly in Slack 😊&lt;/p&gt;

</description>
      <category>sql</category>
      <category>analytics</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Run SQL in Slack</title>
      <dc:creator>Katie Hindson</dc:creator>
      <pubDate>Tue, 24 Nov 2020 16:17:20 +0000</pubDate>
      <link>https://dev.to/turinglovesdeathmetal/run-sql-in-slack-3lkm</link>
      <guid>https://dev.to/turinglovesdeathmetal/run-sql-in-slack-3lkm</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frvexaz0nvcj6lv3ae0wo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frvexaz0nvcj6lv3ae0wo.png" alt="Alt Text" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Write SQL in Slack and bring the latest analytics into the conversation.
&lt;/h3&gt;

&lt;p&gt;In my first week at Hubble, a teammate shared a SQL query he'd run in Slack. &lt;/p&gt;

&lt;p&gt;Since I'd just joined, I hadn't set myself up with our company's database yet (and had spent a bit too much time getting my dev environment lookin' right 💁‍♀️). So, when I tried to open what he'd shared, it took me ~30 minutes before I could actually see the results. &lt;/p&gt;

&lt;p&gt;This got us to talking: how annoying was it that we couldn't just run SQL and share the results straight in Slack? &lt;/p&gt;

&lt;p&gt;This was a problem I'd run into before. At least once a week, I'll have to share SQL results with engineers in Slack for debugging, or invest ~ 1 hr of time getting someone set up with BigQuery and understanding the UI just so that they can re-run really specific queries I've written for them. &lt;/p&gt;

&lt;p&gt;A few other companies we'd talked to had also mentioned some of their frustrations in quick and easy SQL collaboration. Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fitness company wants to make their daily growth metrics visible by all the team each day, so they run SQL queries and copy the outputs to Slack each morning, where they know all team members will see it rather than logging into a BI dashboard.&lt;/li&gt;
&lt;li&gt;Another data analyst was trying to collaborate in SQL with their marketing director. They had to do a bunch of copy-pasting of code and sharing screenshots of the SQL output, making it really slow and difficult to actually identify any problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this got us to thinking: &lt;strong&gt;why not bring SQL &lt;em&gt;into&lt;/em&gt; Slack?&lt;/strong&gt; (Because everyone needs a reason to spend more time in Slack, right?)&lt;/p&gt;

&lt;h3&gt;
  
  
  We built Beacon so you can collaborate on SQL with your team, directly in Slack!
&lt;/h3&gt;

&lt;p&gt;With Beacon, I open Slack and run a query directly in Slack where the output is shared with my team. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuploads-ssl.webflow.com%2F5eaf203a6af9c85f55e39a9a%2F5fad4e650f8dca25293794b3_ezgif-4-3b1cd25cc2c6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuploads-ssl.webflow.com%2F5eaf203a6af9c85f55e39a9a%2F5fad4e650f8dca25293794b3_ezgif-4-3b1cd25cc2c6.gif" alt="https://uploads-ssl.webflow.com/5eaf203a6af9c85f55e39a9a/5fad4e650f8dca25293794b3_ezgif-4-3b1cd25cc2c6.gif" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beacon makes the output from any SQL query super accessible to everyone in your team by posting the results right in Slack.&lt;/p&gt;

&lt;p&gt;And, collaborating in SQL becomes a breeze because you can save your favourite queries and share them with your team (because we all know, SQL is more fun with friends 👭). All of your saved queries are automatically available to your whole team, so everyone has access to what they need, when they need it, at the click of a button &lt;strong&gt;all in Slack&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try using Beacon to share KPIs, save common queries, and more!
&lt;/h3&gt;

&lt;p&gt;You can install Beacon into your Slack workspace using this link: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://slack.com/oauth/v2/authorize?client_id=1207722259383.1462138656839&amp;amp;scope=commands,im:history,im:read,im:write,team:read,users:read,users:read.email,workflow.steps:execute,chat:write&amp;amp;user_scope=&amp;amp;state=dev.to"&gt;Add to Slack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beacon connects to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Snowflake&lt;/li&gt;
&lt;li&gt;Bigquery&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Redshift&lt;/li&gt;
&lt;li&gt;Rockset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shoot me a message at &lt;a href="mailto:katie@gethubble.io"&gt;katie@gethubble.io&lt;/a&gt; if you have any questions or feedback, we'd love to hear from you 😊&lt;/p&gt;

</description>
      <category>sql</category>
      <category>productivity</category>
      <category>database</category>
      <category>analytics</category>
    </item>
  </channel>
</rss>
