Cascading filters in PPS, possible bug - ssas

Scenario is: Time controls available Locations and Location controls Sub-Locations so:
I have Time dimension filter which is cascaded to Location filter
and this is cascaded to Sub-Location filter.
Now the Time -> Location works,
but Location -> Sub-Location doesnt filter, instead shows all Sub-Locations.
I have even made connection formula in the Location -> Sub-Location connection:
MDX:
nonempty( <<UniqueName>> * Sub-Location.children )
Is it possible to cascade also the Time to the Sub-Location filter?

Related

Managing PerformancePoint Filters With Slowly Changing Dimensions

Just a bit of background info:
I have dimension table which uses SCD2 to track user changes in our company (team changes, job title changes etc) See example below:
I've built an Analysis Services Cube and created all the necessary hierarchy's for the dimensions and it works well when navigating and drilling down through the fact table.
The problem I have is with the filters on the PerformancePoint dashboard. As I'm using the User Dimension table with it's multiple instances of users it's showing duplicates up in the list. I can understand why as the surrogate ID is being referenced on the Dimension. But if I choose the first instance of the A-team I will see all their sales for a particular period and if I choose the second instance I will see all their sales for a different period.
What is the best way to handle this type of behavior? Ideally I'd like to see a distinct list of teams in alphabetical order and when I choose the team name it shows all of their data over time.
I've considered using MDX query filters but I'd like to see if there's anything I haven't thought about.
I realise this isn't an easy and quick question but any help would be appreciated!
The answer was simple after having a trawl through my User Dimension table on the Cube.
Under my user dimension I added 2 duplicate attributes to my attributes list ("Team Filter" is a copy of "Team", "User Filter" a copy of "User Name") these will be used only for filtering the dashboard.
Under the attribute properties for each duplicate I then set AttributeHierarchyOptimizedState to "Not Optimized", I also set their AttributeHierarchyVisible to false as I'd shown the two duplicate attributes in the hierarchy window in the middle.
Deploy your Cube to the server and go in to PerformancePoint. Create a new MDX Filter (this image shows the finished filter)
This is the code I used, it only shows dimension members which have a fact against them (reduces the list a considerable amount) and by using allmembers at the dimension it also gives me the option to show "All" at the top of the list.
Deploy the new filters and now you can see the distinct list of users and teams, works perfectly and selects every instance (regardless of the SCD2 row)

SSAS -How to select a particular attribute when we drag dimension into query editor

I have about 4 attributes in Race dimension as shown in blow
dimension name is Race
1)Race
2)RACE DESC
3)RACE KEY
4)RACE SHORT NAME
when go to cube browse and right click on Race dimension and select add query
as below
1)when i drag Race dimension to browser data panel it showing default Race Attribute data
2)i want show RACE DESC data only
3) at the same time i drag the RACE DIMENSION in Filter panel
4) i want show RACE DESC Attribute only
5) i don't want set attributehierarchyvisible =false
how do i achieve my above requirement
Thanks for the help
Create your own user's hierarchy and place it on the 1st place in dimension hierarchies part of screen. This will let SSAS to use it.
Here Report Date hierarchy is selected by default.
And Product Categories on the image below:
UPDATE
Here is detailed explanation:
Now you have 5 flat hierarchies and server takes first alphabetical one by default, like this (Count is measure here):
To fix this, you need to disable attributes hierarchy, which you want to be selected by default:
Than rename attribute, to be able to create user's hierarchy with the same name (so for users this will be identical as previous flat attribute hierarchy):
Finally, process this dimension again, and when you drag dimension, it will show your first user's hierarchy, which is State in our case.
Hope this helps.
UPDATE-2 (New example with races)
To achieve this, you need to do the same as described in UPDATE #1:
Rename RACE DESC to some other name (e.g. RACE DESC Attr) and disable it's hierarchy visibility by setting attributehierarchyvisible = false
Create user's hierarchy on this attribute with desirable name: RACE DESC
Process dimension.
That's all. Now default attribute will be RACE DESC. It's hierarchy is not disabled, just it's showing priority is changed to be the 1st one.

Filter by dimension member only without sub-nodes

I need to query a cube by a ragged dimension (parent-child). The filter can be multiple nodes at any level.
This works in that it restricts the results to just the 2 supply chains I want...
SELECT [Measures].[Total Revenue] ON COLUMNS
, [Product].[Products].Members ON ROWS
FROM myCube
WHERE
(
{
[Supply Chain].[SupplyChains].&[{c0c62bda-0369-4591-be85-3a7078bc3352}]
, [Supply Chain].[SupplyChains].&[{aca836e9-22ac-4952-8809-3f50aeda6891}]
}
)
I know, guid keys, not my design! The problem is that data that isn't assigned to a specific supply chain is assigned to the top node. If I add the top node to the list, then all data will be returned (since all data is subordinate to it).
Is there a way to return values with a specific member and ignore its children? I'd like to say "return all data assigned exactly to the top node or to the listed supply chains and their children).
Thanks FrankPI, your comment pointed me in the right direction.
I ended up replicating the query in Excel and then examining the generated MDX using the OLAP PivotTable Extensions. Excel allows you to set filters on sub-nodes like what I was trying to do.
What it does is create a set of all nodes that don't have filtered sub-nodes to get everything else. Then for the parents of the nodes with filtered sub-nodes (and all its parents up to the root) it adds to the set those nodes but with the .DataMember function so that only the node value is included (but not its sub nodes). So basically instead of saying what NOT to get, it explicitly says what TO get, listing all other nodes which can be a bit cumbersome but works.

Using a named set to filter out dimensional date data

I have created a set to filter out the entire date dimension to it's respective measure:
CREATE SET DatesAvailable AS NonEmpty
([Date].[Hierarchy].[Day].MEMBERS, Measures.CURRENTMEMBER);
I would like for the filter to be applied automatically when using the date dimension in the cube browser. I've tried this but it returns a error related to the LastNonEmpty aggregate.
SCOPE(
UNION(
MEASUREGROUPMEASURES('MeasurerpG1')
, MEASUREGROUPMEASURES('MeasureGrp2')
, MEASUREGROUPMEASURES('MeasureGrp3')
) );
[Date].[Hierarchy].[Day].MEMBERS = DatesAvailable ;
END SCOPE;
How can I apply my set to filter the date dimension?
I do not think you can filter which members are shown in member lists, as presumably these list are not fetched via MDX, but via metadata lookups like the MDSCHEMA_MEMBERS schema rowset. You can more or less only change values in the calculation script which are then used in MDX statements. And you can add calculated members, which do then also appear in the metadata.
The only option I see to not display certain members in general tools where you do not have control how the tool generates the list of members that it shows would be by setting permissions.

Performancepoint cascading filter connection formula in MDX

I have dimension with hierarchy A - B and a time dimension.
I have made 3 different filters from that dimension in Performancepoint 2010, to use as cascading filters.
Cascading works fine, but sometimes dimension members are valid depending on the time dimension and cascading filters will give many "empty" members.
Ie. Jan 2010 only B1,B2 and B3 show measures, others members (B4,B5..) show empty.
How i can connect time dimension to cascading filters so it will only show the valid members at that current time?
I got it using NonEmptyCrossjoin - MDX function.
This function returns a set that contains the cross product of one or more sets, excluding empty tuples and tuples without associated fact table data.