5

I'm embarking on a project that allows users to slice and dice data in a fashion much like that provided in OLAP systems. However, the data is not stored in an OLAP system and will be provided to the front-end as flat records from a relational system.

My initial thinking is that I may need to take that flat data and populate a client-side cube data structure with it, which can then be queried via a programmatic interface. Whilst such a data structure sounds interesting and challenging to write myself, I'm wondering whether there is already a free, open implementation that I can leverage.

Ideally, it would:

  • provide a lot of flexibility around defining dimensions, their levels, members, and attributes
  • support calculated measures
  • provide a nice interface by which to query the cube
  • be free, open source, and untied to any particular interface technology

Does anyone know of such a project I could use?

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Kent Boogaart
  • 175,602
  • 35
  • 392
  • 393

1 Answers1

0

.NET provides really simple methods to access an Analysis Services OLAP-Cube. So i would suggest, that you create an SSAS Cube with your Data. Make shure u use the right Datasheme (Star- or Snowflake-Scheme)

After creating your Cube you can easily access it with .NET Read Dimensions, Levels and Memebers of all Cubes in den Analysis Services Catalog:

    AdoConn = new ADODB.Connection();
    AdoConn.Open("provider=msolap;Data Source=localhost;initial catalog=Final;", "", "", 0);            

    catalog = new ADOMD.Catalog();
    catalog.ActiveConnection = AdoConn;
    cubes = catalog.CubeDefs;

    foreach (ADOMD.CubeDef cube in cubes) //Read all Cubes
    { 
     cube.Name.ToString();
     foreach (ADOMD.Dimension dimension in cube.Dimensions) //Read all Dimensions of each Cube
     { 
      dimension.Name.ToString();
      foreach (ADOMD.Hierarchy hierarchy in dimension.Hierarchies) //Read all Hierarchies of each Dimension
      { 
       hierarchy.Name.ToString();
       foreach (ADOMD.Level level in hierarchy.Levels) //Read all Leves of each Hierarchy
       { 
        level.Name.ToString()
       }
      }
     }
    }
   AdoConn.Close();
Filipe Santos
  • 1,629
  • 3
  • 18
  • 27
  • The back-end is not under my control, and nor is this a Microsoft shop. This is simply not an option. Or are you suggesting that I can run SSAS locally on the client without any deployment or licensing hassles? – Kent Boogaart Jul 12 '11 at 08:53