Открытые, бесплатные, кубические структуры данных для .NET - PullRequest
5 голосов
/ 11 июля 2011

Я начинаю проект, который позволяет пользователям нарезать и нарезать данные так, как это предусмотрено в системах OLAP. Однако данные не хранятся в системе OLAP и будут предоставляться внешнему интерфейсу в виде плоских записей из реляционной системы.

Вначале я думал, что мне может понадобиться взять эти плоские данные и заполнить их структурой данных куба на стороне клиента, которую затем можно будет запросить через программный интерфейс. Хотя такая структура данных кажется интересной и сложной для написания самостоятельно, мне интересно, существует ли уже бесплатная открытая реализация, которую я могу использовать.

В идеале это будет:

  • обеспечивает большую гибкость в определении размеров, их уровней, элементов и атрибутов
  • поддержка рассчитанных мер
  • предоставляет удобный интерфейс для запроса к кубу
  • быть свободным, открытым исходным кодом и привязанным к какой-либо конкретной технологии интерфейса

Кто-нибудь знает такой проект, который я мог бы использовать?

1 Ответ

0 голосов
/ 12 июля 2011

.NET предоставляет действительно простые методы доступа к OLAP-кубу служб Analysis Services.Поэтому я бы предложил создать куб SSAS с вашими данными.Убедитесь, что вы используете правильный Datasheme (схема Star или Snowflake)

После создания куба вы можете легко получить к нему доступ с помощью .NET размеров, уровней и членов всех кубов в каталоге служб аналитики:

    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();
...