What we learned from building custom analytics over Amazon Redshift
alooma.com
alooma.com
So you put Google Analytics on your website, then you need the tracking code from Facebook for the ads. And you add Flurry because it provides different analytics (e.g: Funnels and Cohort Analysis). We also logged on the DB some actions difficult to capture on analytics. Then you need mobile ads, so you add in your app the framework to track the install. And, I forgot, you have another platform to track your mailing lists.
The final result: for every business question you have data in at least 3 different platform that gives you three different answers. Even worst, when you are still struggling with the product your "hard tech" co-founder could not understand why you push to re-implement the analytics framework (not necessarily building it in house) while your business co-founder decide to don't ask questions and doesn't understand why you want better data. If it looks like a recipe for disaster is because it is.
We really need better analytics platform, easy to use like Google Analytics and MixPanel for the beginning but with the ability to build custom analysis for the growing biz.
The biggest pinpoint is having 10 different service that gives you quite the same answer but:
1) they cover different needs and you need a patchwork to customize to what you need (and when you are small it is not even sure you know what you need so the patchwork is biggest than needed).
2) they measure things in slightly different way making comparison difficult.
3) they have vastly different interfaces, thus requiring a lot of time to learn them (I like to learn new things, but my time is valuable and better spent on product features)
4) they create a mess in your code. This is the problem segment try to solve. It is relevant but not top priority. Actually, I'm not totally sure of the effect of inserting a level of abstraction doesn't actually make more complex to solve point 1 and 2 (it is not a critic, just a real problem I faced when I tried to abstract the analytics call in the app with few functions).
This is SQL as BI, which is great for small technical teams, but hardly a good or scalable solution.
If anything, this is a vague argument to have a data warehouse. Data warehousing is only an intermediate step in any analytics or BI solution and the hard problems are not in moving data or writing one-off queries.
ETL is much more than just moving data around. I haven't dug too deeply into Alooma's offerings, but it does appear to have workflows for more than just data from system A to destination B. Some of the important things to look at in ETL are change-tracking for slowly changing dimensions, business logic transformations, and mashing up data from disparate sources against conformed dimensions. Master Data Management is its own practice, but is intimately involved in ETL. Some ETL tools include Alooma, SSIS, Kettle.
Beyond ETL there is the data warehouse platform which usually consists of a RDBMS, sometimes with an OLAP layer as well. OLAP is distinguished from something like Redshift, which is a columnstore RDBMS, by including a metadata layer with the data. MDX is probably the granddaddy of OLAP languages. Think something that a pivot table can speak to directly. The data warehouse can really be any RDBMS product.
At the data warehouse layer, there's much more than just flattened source tables. A good deal of effort needs to go into the dimensional modelling for end-user consumption and reporting. We could take an aside for Inmon vs Kimball here, but it's spurious, because Inmon recommends dimensional data marts for end user consumption, just like Kimball - the data warehouse is never exposed in the Inmon methodology and dimensional data modelling is required for either.
If we are utilizing an OLAP engine, then there is a lot of measure definition to be done, encapsulating a lot of the logic that is displayed in the single-purpose queries of the article's examples. The data model will be based on the dimensional model from the data warehouse, but there's a lot more metadata in an OLAP database, which helps make self-service reporting much easier. Many more people are comfortable building a pivot table than even a simple SELECT statement in SQL. Some OLAP engines are SSAS and Mondrian.
Regardless of whether we have an OLAP solution, we need a presentation layer (typically several, as there are different types of reporting needs, and different strata of sophistication among end users). This is something like Tableau, Qlik, Quicksight, Cognos, Power BI (all prior products purport to cover varying degrees of the data ETL and modelling process in addition to providing a presentation layer), Crystal Reports, and SSRS are just some samples of many in the commercial space (I'm not as familiar with open source presentation layers).
This is just a high level overview of the major components of a BI or analytics solution, and fairly barebones. The article spoke to ETL a little, and at best hit tangentially on data warehousing and presentation.
Looks pretty neat, job well done!
But why would you say that ETL would be more complicated? Specially since BigQuery is the best way to get raw Google Analytics data (for premium customers).
Re: Visualization options - All of the options mentioned by Itamar work well with BigQuery, except one (Quicksight) - and I know for sure how much re:dash, Mode, Looker and Tableau love Bigquery.
Anyways, great article - and I love the real use case queries.
Another issue with BigQuery seems to be unpredictability of cost. One typo somewhere and you can easily run up a bill in tens of thousands of dollars because your dashboard isn't caching something. In a similar situation Redshift will merely get slow.
Cost: Cost should be way below other solutions - and to prevent problems BigQuery now has cost controls at a user and project levels: https://cloud.google.com/bigquery/cost-controls
Thanks for your comments!
However, I hope that the SQL queries provided would be helpful to anyone who would like to build it on their own.
FD: I am Alooma's CTO
Of course, we also have more complex queries for analysis, that we will share at a future post.
I'm not very clear about how to use Alooma.
no api key ?
this looks interesting - but it would be nice to be able to get started immediately without "request a demo".
Alooma not loading into a JSON column, but provides mapping UI and transformation layer to in order structure and normalize the data into different appropriate columns, thus leverages the columnar storage properties.
FD: I am Alooma's CTO