Ciao Ale,
sia Excel 2007 con il supporto nativo ad Analysis Services e sia il plug-in per Excel 2003 non supportano la visualizzazione delle Dimension Usage. L'unica soluzione che mi viene in mente per poter accedere a queste informazioni al di fuori di Visual Studio รจ l'utilizzo di AMO (Analysis Management Object) che espone egregiamente tutti i metadati di un cubo. Qui sotto un piccolo esempio in C# di come ho estrapolato dal database Adventure Works DW di esempio tutte le dimension usage:
using System;
using Microsoft.AnalysisServices;
namespace Ugiss.DimensionUsageViewer
{
class Program
{
static void Main(string[] args)
{
Server server = new Server();
server.Connect("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Adventure Works DW;Data Source=localhost");
foreach(Database db in server.Databases)
{
foreach(Cube cube in db.Cubes)
{
foreach(MeasureGroup measureGroup in cube.MeasureGroups)
{
foreach(MeasureGroupDimension measureGroupDimension in measureGroup.Dimensions)
{
if(measureGroupDimension as RegularMeasureGroupDimension != null)
Console.WriteLine(String.Format("MeasureGroup {0} is referenced by {1} dimension with a usage type Regular",
measureGroup.Name,measureGroupDimension.Dimension.Name));
else if(measureGroupDimension as ReferenceMeasureGroupDimension != null)
Console.WriteLine(String.Format("MeasureGroup {0} is referenced by {1} dimension with a usage type Referenced",
measureGroup.Name, measureGroupDimension.Dimension.Name));
else if(measureGroupDimension as ManyToManyMeasureGroupDimension != null)
Console.WriteLine(String.Format("MeasureGroup {0} is referenced by {1} dimension with a usage type Many-to-Many",
measureGroup.Name, measureGroupDimension.Dimension.Name));
else if(measureGroupDimension as DegenerateMeasureGroupDimension != null)
Console.WriteLine(String.Format("MeasureGroup {0} is referenced by {1} dimension with a usage type Fact (degenerate)",
measureGroup.Name, measureGroupDimension.Dimension.Name));
else if(measureGroupDimension as DataMiningMeasureGroupDimension != null)
Console.WriteLine(String.Format("MeasureGroup {0} is referenced by {1} dimension with a usage type Data Mining",
measureGroup.Name, measureGroupDimension.Dimension.Name));
else
Console.WriteLine(String.Format("MeasureGroup {0} is referenced by any dimension",measureGroup.Name));
}
}
}
}
server.Disconnect();
}
}
}