从Microsoft.AnalysisServices类访问属性

时间:2015-07-22 10:57:50

标签: c# ssas

我一直在尝试从以下链接访问SSAS的Measure Group的属性。我不擅长编码。

https://msdn.microsoft.com/en-us/library/ms154309(v=sql.120).aspx

我的预期输出

MeasureGroupName (String) ,  Source  (string) 

我能够提供如下代码..请帮我完成这项工作。

Cube cube = database.Cubes.FindByName(cubeName);
MeasureGroup sampleMeasureGroup = cube.MeasureGroups[0];
var measures = sampleMeasureGroup.Source;

1 个答案:

答案 0 :(得分:0)

如果您需要的只是DSV名称,则对于多维数据集中的每个度量值组都是相同的。所以这段代码会得到它:

        Cube cube = database.Cubes.FindByName(cubeName);
        string sDSV = cube.DataSourceView.Name;

获取表名:

        Cube cube = database.Cubes.FindByName(cubeName);
        MeasureGroup sampleMeasureGroup = cube.MeasureGroups[0];
        DataItem di = sampleMeasureGroup.Measures[0].Source;

        if (di == null) return null;
        ColumnBinding cb = di.Source as ColumnBinding;
        RowBinding rb = di.Source as RowBinding;
        string sTableID = (cb != null ? cb.TableID : (rb != null ? rb.TableID : null));
        if (sTableID == null) return null;

        if (cube.DataSourceView.Schema.Tables[sTableID] != null)
        {
            if (cube.DataSourceView.Schema.Tables[sTableID].ExtendedProperties.ContainsKey("FriendlyName"))
            {
                return cube.DataSourceView.Schema.Tables[sTableID].ExtendedProperties["FriendlyName"].ToString();
            }
            else
            {
                return cube.DataSourceView.Schema.Tables[sTableID].TableName;
            }
        }
        else
        {
            return sTableID;
        }

如果您需要列出度量值组的DSV表名称,那么您可以尝试使用此BIDS帮助程序report

或者BIDS Helper是一个开源项目,因此您可以看到它如何导航度量和DSV表here