使用Microsoft.AnalysisServices进行自定义排序以生成OLAP多维数据集

时间:2018-11-08 16:33:34

标签: .net vb.net ssas olap ssas-2012

在此项目中,我们通过VB.NET中的Microsoft.AnalysisServices动态创建多维多维数据集。该代码已经使用了几年,现在我们需要进行修改。

我们添加一个带有字段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进行自定义排序有任何想法或示例吗?是利用this来带我走这么远。

0 个答案:

没有答案