在VB.NET中使用Dimension获取相关度量组的有效方法

时间:2012-03-30 15:13:43

标签: vb.net ssas data-warehouse

我正在使用VB.NET连接并解析来自Analysis Services数据库的数据。

我遇到的问题是在尝试查找与给定维度相关的所有度量值组时。我一直在挖掘API,看起来Dimensions上根本没有关于Measure Groups的任何信息,但Measure Groups可以包含Dimensions。

如果我想获得一个测量组(measureGroup.Dimensions)的相关维度列表,这很容易,但我正在寻找的是相反的。

我唯一能想到的是遍历多维数据集中的所有度量组,并检查它是否包含对相关维度的引用:

Dim dimID As String = "SOME_DIM_ID"
Dim relatedMeasureGroups As New List(Of Amo.MeasureGroup)
For Each mg As Amo.MeasureGroup In _cube.MeasureGroups
    If mg.Dimensions.Contains(dimID) Then
        relatedMeasureGroups.Add(mg)
        Continue For
    End If
Next

这有效,但显然非常缓慢且效率低下。有没有更直接的方式,我只是没有看到?


编辑:我应该说,我需要这样做,因为我试图找到所有潜在的many-to-many Measure Groups for a Dimension。你可以说,我这样做的方式是手工操作(找到与初始Dimension相关的Measure Groups,找到与它们相关的所有Dimensions,然后再次找到与那些相关的所有Measure Groups ),如果有更直接的方法来解决这个问题,它可以绕过我解决原始问题的需要。

1 个答案:

答案 0 :(得分:0)

您可以查询SSAS DMV ... $ SYSTEM.MDSCHEMA_MEASUREGROUP_DIMENSIONS

SELECT  *
FROM    $SYSTEM.MDSCHEMA_MEASUREGROUP_DIMENSIONS
WHERE   MEASUREGROUP_CARDINALITY = 'MANY' AND
        DIMENSION_CARDINALITY = 'MANY' AND
        [DIMENSION_UNIQUE_NAME] = '[Business Unit]'

此外,这可能会派上用场 - > http://www.ssas-info.com/VidasMatelisBlog/wp-content/uploads/2008/07/mdschema.jpg

这是XMLA版本......

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
    <RequestType>MDSCHEMA_MEASUREGROUP_DIMENSIONS</RequestType>
    <Restrictions>
        <RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis">
            <DIMENSION_UNIQUE_NAME>[<<insert dimension>>]</DIMENSION_UNIQUE_NAME>
        </RestrictionList>
    </Restrictions>
    <Properties/>
</Discover>