Open, free, cubic data structures for .NET.

I am starting a project that allows users to slice and copy data in the same way as in OLAP systems. However, the data is not stored in the OLAP system and will be provided to the interface as flat records from the relational system.

My initial thinking is that I may need to take this flat data and fill it with cube data on the client side, which can then be requested through the software interface. Although such a data structure seems interesting and difficult to write myself, I wonder if there is already a free open source implementation that I can use.

Ideally, this is:

  • provide greater flexibility in defining sizes, levels, elements and attributes
  • calculation support
  • provides a nice interface with which you can request a cube
  • be free, open source and tied to any specific interface technology.

Does anyone know of a project that I could use?

+5
source share
1 answer

.NET provides really simple methods for accessing the Analysis Services OLAP cube. Therefore, I would suggest that you create an SSAS cube with your data. Make shure u using the correct Datasheme (Star- or Snowflake-Scheme)

After creating your cube, you can easily access it using .NET. Reading measurements, levels and memoirs of all cubes in the catalog of analytical services:

    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();
0
source

All Articles