Getting started

The ActiveWarehouse plugin simplifies building data warehouses in Rails. A data warehouse is a database designed specifically for analytical use as opposed to operational transaction processing. Typically a data warehouse houses data which spans several years and is sourced from numerous operational databases. Data warehouses are usually highly de-normalized which is contrary to transactional systems which tend to be normalized. The links in the side bar provide additional information.

Here’s how to get rolling:

  1. Install the plugin

    Getting the ActiveWarehouse plugin is easy: go to the home directory for a Rails app and type:

    script/plugin install svn://rubyforge.org/var/svn/activewarehouse/activewarehouse/trunk

    The code will be downloaded from the Subversion repository and placed in the vendor/plugins directory of your app.

    If you don't have access to Subversion then you can download a gem, tar.gz or zip file. For the tar.gz or zip file just extract it into your RAILS_APP/vendor/plugins directory. For the gem use gemsonrails:

    gem install gemsonrails
    cd RAILS_APP
    rake gems:link GEM=activewarehouse
    
  2. Build your warehouse

    Use script/generate to create your facts, dimensions and cubes.

  3. Load Data with ActiveWarehouse ETL

    Use the ActiveWarehouse ETL library to extract data from operational systems, transform it so that it conforms across data sources, and load it into your data warehouse.

What About Tutorials?

The following tutorials are currently available:

Expect more in the near future.

What's There Now?

Right now the plugin has the following functionality:

  • Generators for Facts, Dimensions, Cubes and Bridges
  • Multi-dimension support
  • Default aggregate implementation that converts cube queries to SQL queries
  • DateDimensionBuilder which can be used to populate a typical warehouse date dimension
  • Support for calculated fields
  • Support for pre-joining facts with dimensions for fact listings
  • Extensions to Date class to handle calculation of fiscal year elements
  • Report helper for creating a view of cubes with drill down
  • Role playing (i.e. views on the same dimensions - for the date dimension)
  • Slowly changing dimensions
  • Variable depth hierarchies (i.e. ragged hierarchies)
  • A functioning tutorial application in the rails_warehouse directory in subversion
  • ETL tool

What's Coming?

So what's in the pipeline?

  • Dimensional modeling concepts not yet implemented:
    • Semi-additive facts (i.e. averaged values) and non-additive facts
    • Junk dimensions
    • Periodic snapshot and accumulating snapshot
    • Outriggers
    • Mini-dimensions
    • Year-to-date calculated fields
  • New aggregation implementations
  • Create a CustomerDimensionBuilder
  • Docs, docs and more docs
  • A live demo site to show how AW works
  • Drag and drop slice and dice (i.e. changing currently viewed cube dimensions on the fly)

Beyond that the rest is up to the users. So get involved, join the mailing list, contribute comments, patches, new code, whatever, and let's get warehousing!

Copyright 2006-2007, All Rights Reserved
Anthony's Email:anthonyeden@gmail.com