C# 从Microsoft.AnalysisServices类访问属性

C# 从Microsoft.AnalysisServices类访问属性,c#,ssas,C#,Ssas,我一直试图通过以下链接访问SSA度量值组的属性。我不擅长编码 我的预期产出是 MeasureGroupName (String) , Source (string) 我可以把一些代码如下。。请帮我完成这项工作 Cube cube = database.Cubes.FindByName(cubeName); MeasureGroup sampleMeasureGroup = cube.MeasureGroups[0]; var measures = sampleMeasureGroup.

我一直试图通过以下链接访问SSA度量值组的属性。我不擅长编码

我的预期产出是

MeasureGroupName (String) ,  Source  (string) 
我可以把一些代码如下。。请帮我完成这项工作

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

如果您只需要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 Helper是一个开源项目,因此您可以查看它如何导航度量值和DSV表。

如果您只需要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 Helper是一个开源项目,因此您可以看到它如何导航度量值和DSV表。

您能否澄清度量值组的“源”是什么意思?您正在查找DSV表名吗?你能举个例子吗?嗨@GregGalloway!我正在使用Microsoft business intelligence suit创建OLAP多维数据集。它是完全基于用户界面的应用程序。使用RDBMS(dsv)上的查询将来自RDBMS的数据推送到测量组。Dsv是度量值组的源。Microsoft提供了库和类来使用代码实现相同的目标。代码在交互OLAP多维数据集方面具有更大的灵活性。我想通过编程知道哪个Dsv与度量值组绑定,这样我就可以在表中保存合并信息。但您想在Dsv中吐出Dsv名称还是表的名称?@Greggallowy我只需要Dsv名称和度量值组。谢谢你能澄清你所说的度量值组的“来源”是什么意思吗?您正在查找DSV表名吗?你能举个例子吗?嗨@GregGalloway!我正在使用Microsoft business intelligence suit创建OLAP多维数据集。它是完全基于用户界面的应用程序。使用RDBMS(dsv)上的查询将来自RDBMS的数据推送到测量组。Dsv是度量值组的源。Microsoft提供了库和类来使用代码实现相同的目标。代码在交互OLAP多维数据集方面具有更大的灵活性。我想通过编程知道哪个Dsv与度量值组绑定,这样我就可以在表中保存合并信息。但您想在Dsv中吐出Dsv名称还是表的名称?@Greggallowy我只需要Dsv名称和度量值组。感谢如何获取用于创建度量值组的命名查询。基本上,我试图将这些信息推送到表格中。稍后,我可以通过查询表来开发SSRS报告。编辑我的答案以包含获取表名的代码。这有点复杂。嗨,VenkatSuryaSunilmodekurthy,如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。那么,如何获取用于创建度量值组的命名查询呢。基本上,我试图将这些信息推送到表格中。稍后,我可以通过查询表来开发SSRS报告。编辑我的答案以包含获取表名的代码。这有点复杂。嗨,VenkatSuryaSunilmodekurthy,如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。