Lors du clic sur le bouton de sauvegarde du plan de stockage, nous récupérons les références au cube d'une part et aux AggregationsDesign sélectionné d'autre part:
private void btnSave_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
Cube cube = server.Databases[cbxDatabase.Text].Cubes[cbxCube.Text];
AggregationDesign ad =
cube.MeasureGroups[cbxMeasuresGroup.Text].AggregationDesigns[cbxAggDesign.Text];
Mon objectif est de générer un enregistrement par Agrégation, en sauvegardant dans un fichier xml dont on attend par exemple :
<?xml version="1.0" encoding="utf-8"?>
<Aggregations>
<Aggregation>
<OrderNumber>0</OrderNumber>
<Name>Aggregation_0</Name>
<Fact_Internet_Sales></Fact_Internet_Sales>
<Dim_Customer></Dim_Customer>
<Product>Model_Name Days_To_Manufacture </Product>
<Promotion>Promotion_Category </Promotion>
<Dim_Sales_Territory></Dim_Sales_Territory>
<Dim_Currency></Dim_Currency>
</Aggregation>
…
<Aggregations>
A cet effet on va donc itérer dans les Agrégations :
for (int i = 0; i < ad.Aggregations.Count; i++)
{
Aggregation ag = ad.Aggregations[i];
sb.AppendLine("<Aggregation>");
sb.AppendLine("<OrderNumber>");
sb.AppendLine(""+i);
sb.AppendLine("</OrderNumber>");
// Aggregation Name
sb.AppendLine("<Name>");
sb.AppendLine(ag.Name.Replace(" ", "_"));
sb.AppendLine("</Name>");
A ce niveau, il est nécessaire d'aller explorer pour chaque Agrégation ses dimensions. Enfin, pour une dimension donnée, on pourra connaitre quels sont les attributs impliqués dans le stockage en explorant la collection Attributes conformément aux API
foreach (AggregationDimension agDim in ag.Dimensions)
{
sb.AppendLine("<" + agDim.CubeDimensionID.Replace(" ", "_") + ">");
foreach (AggregationAttribute attrib in agDim.Attributes)
{
sb.Append(attrib.AttributeID.Replace(" ", "_"));
sb.Append(" ");
}
sb.AppendLine("</" + agDim.CubeDimensionID.Replace(" ", "_") + ">");
}
sb.AppendLine("</Aggregation>");
Il ne reste plus alors qu'à sauvegarder le XML et à le récupérer dans Excel :
sb.AppendLine("</Aggregations>");
System.IO.StreamWriter file = new System.IO.StreamWriter( tbxFile.Text);
file.WriteLine(sb.ToString());
file.Close();
MessageBox.Show("File Saved");
}
Une fois ouvert dans Excel :
Pour chaque ligne, nous trouvons un agrégat et sa description. Pour chaque dimension, vous trouverez les attributs sur lesquels SSAS a choisis de consolider.