Page 1 of 1

Dynamic subset and rule execution

Posted: Wed Jan 10, 2018 12:00 am
by vladino
Hi guys,
I'm wondering how the rule is executed when dynamic subset is used within a cube view.

If my understanding is correct the rule is always executed only for cells within a view, not for the whole cube. So if I use a static subset then only members within the subset are evaluated/calculated - let's say only selected measures, products, org units etc.

But what if I use a dynamic subset? Does the rule behave the same way as for the static one?

I suppose it depends on the subset expression...

I'm interested in subsets that use FILTER function. What is happening in the cube if my dynamic subset uses FILTER function? Is the rule evaluated for the basis of the FILTER function or for the result of the FILTER function?

For example if I use an attribute for filtering the subset looks like this:
{FILTER( {TM1SUBSETALL( [Product] )}, [Product].[Category] = "Customer Lending")}

Is the rule evaluated for {TM1SUBSETALL( [Product] )} but the view shows only products with "Customer Lending" category? Or is the rule evaluated only for products with "Customer Lending" category?

And additionally - what happens when the dynamic subset is "connected" to another dimension within the cube? For example a relation between segment and product - I want to see only products for selected segment (segment dim is in the context and product dim is in rows). Is the rule evaluated for all products but only products for selected segment are shown within the view?

I assume this might have significant impact on performance because if I have hundreds/thousands of products within Product dimension but only few of them are flagged as "Customer Lending" (or use selected segment) then there must be a difference in the overall cube performance...

Appreciate any help!

BR
Vladino

Re: Dynamic subset and rule execution

Posted: Wed Jan 10, 2018 11:43 am
by tomok
TM1 is smart enough to know what needs to be calculated. You don't need to waste your time worrying about stuff like this.

Re: Dynamic subset and rule execution

Posted: Thu Jan 11, 2018 5:26 pm
by Trevor MacPherson
I second Tomok's comment, and would just add that I edges are calculated first - rules apply to the cells, and aren't evaluated unless needed to satisfy a query for a cell, which isn't known until the edges are evaluated. If the edge's require cell evaluation to show (Top/Bottom X, value filter, etc...), then that will happen first based on the specific query required in the filter. That may be academic, but I've occasionally (if rarely) had utility with filters against lower dimensional cubes to define the subsets in a view of a more dimensional cube or one with more complex rules. This is not commonly necessary.

In your case:
{FILTER( {TM1SUBSETALL( [Product] )}, [Product].[Category] = "Customer Lending")}
needs to query cells in the }ElementAttributes_Product cube where the string Category = "Customer Lending".

That requires cells to be evaluated, but not cells in the target cube you are querying. Unless you did something horribly perverse, like use a rule in your attribute control cube to determine your "Customer Lending" attribute based on values in the larger cube you are querying.