Выборочная сортировка с использованием Microsoft.AnalysisServices для создания куба OLAP - PullRequest
0 голосов
/ 08 ноября 2018

В этом проекте мы динамически создаем многомерный куб с помощью Microsoft.AnalysisServices в VB.NET. Этот код использовался в течение нескольких лет, и теперь нам нужно внести изменения.

Добавляем таблицу фактов с полем D1. Затем мы добавляем ассортимент основных таблиц, включая D1 и отношения. Таким образом, мы программно добавляем отношения для D1 с чем-то вроде:

DataSourceView.Schema.Relations.Add(pkColumn, fkColumn)

Добавляем размер D1 и определяем Ключ / Имя:

Private Function GenerateAttributeDimensionGeneric(ByVal objDatabase As Database, ByVal objDataSourceView As DataSourceView) As Object        
    Dim objDimension As New Dimension()            
    objDimension = objDatabase.Dimensions.Add("D1")
    objDimension.Source = New DataSourceViewBinding(objDataSourceView.ID)
    Dim objDimensionAttributesColl As DimensionAttributeCollection = objDimension.Attributes

    Dim objAttribute As DimensionAttribute = objDimensionAttributesColl.Add("D1_PK")
    objAttribute.Usage = AttributeUsage.Key
    objAttribute.KeyColumns.Add("D1", "D1_PK", OleDbType.[Integer])
    objAttribute.NameColumn = New DataItem("D1", "AttributeValueName")

Это работает, денди. Теперь нас просят добавить пользовательские параметры сортировки на D1. Поэтому мы добавили новое поле (iOrder) в схему и изменили импорт, чтобы включить его в таблицу D1.

При добавлении Dimension D1 с использованием приведенного выше фрагмента кода я пытаюсь настроить его на использование iOrder.

objAttribute.AttributeRelationships.Add("iOrder")
objAttribute.OrderBy = OrderBy.AttributeName
objAttribute.OrderByAttribute.Name = "iOrder"

после последней строки я получаю сообщение об ошибке.

Ссылка на объект не установлена ​​для экземпляра объекта.

У кого-нибудь есть мысли или примеры пользовательских заказов с использованием C # / VB.NET? использовал это , чтобы получить меня так далеко.

...