If the DimensionAttribute.EstimatedCount is set and Dimension.Update is called, should I call Database.Update?
Should I call Dimension.Update for every dimension or I can only call Database.Update?
If the Partition.EstimatedRowCount is set and Partition.Update is called, schould I call MeasureGroup.Update?
What will be used at aggregation desing Partition.EstimatedRowCount or MeasureGroup.EstimatedRowCount? What Field schould be set?
The Update() method saves the object's properties and collections, except the major children. For example, cube.Update() will save the cube, except its measure groups, perspectives etc; dimension.Update() will save the dimension, except the dimension permissions (its only major children).
The Update methods also has flags to save an object fully (with all its major children):
obj.Update(UpdateOptions.ExpandFull).
In addition, if you are doing structural changes to an object (changes that would invalidate the data and would require re-processing), you will need to save the dependents as well. For example, if you remove an attribute from a dimension, you will need to save all the dependent cubes with that dimension. There is a separate flag for this:
dimension.Update(UpdateOptions.AlterDependents); // this saves the dependent cubes also
(changes to the EstimatedCount and EstimatedRows properties are not structural, you will not need this flag)
> If the DimensionAttribute.EstimatedCount is set and Dimension.Update is called, should I call Database.Update?
No need to call database.Update(). In fact, database.Update() won't save anything from the dimensions/cubes/mining structures.
> Should I call Dimension.Update for every dimension or I can only call Database.Update?
Yes, for each change to a dimension, call dimension.Update(). Alternatively, you can do all the changes to the dimensions without saving them, and call Update(UpdateOptions.ExpandFull) to the database at the end. But this is not a good idea because it saves the full database (including all dimensions, cubes, mining structures, permissions, partitions, everything; not optimal).
> If the Partition.EstimatedRowCount is set and Partition.Update is called, schould I call MeasureGroup.Update?
No need to call measureGroup.Update().
> What will be used at aggregation desing Partition.EstimatedRowCount or MeasureGroup.EstimatedRowCount? What Field schould be set?
Aggregations design requires the following properties to be set:
- EstimatedCount for all attributes for all dimensions used in the MeasureGroup where the AggregationDesign object will be created
- EstimatedRows for the MeasureGroup
Adrian Dumitrascu
|||Thank you very much for the detailed answer.
If I understand you right, then I don’t need set Partition.EstimatedCount at all.
Is this right?
AggregationDesigns belongs to a MeasureGroup.
And in a Partition I can set one of the MeasureGroup AggregationDesigns.
What does it means?
|||> If I understand you right, then I don’t need set Partition.EstimatedCount at all. Is this right?
Yes, you don't need to set the Partition.EstimatedCount in order to design aggregations.
> AggregationDesigns belongs to a MeasureGroup. And in a Partition I can set one of the MeasureGroup AggregationDesigns. What does it means?
You can have multiple Partitions share the same AggregationDesign. Unlike in AS2000 where aggregations were per partition and usually those aggregations had the same structure (same attributes used).
Adrian Dumitrascu
No comments:
Post a Comment