Planning Analytics

Planning Analytics

Get AI-infused integrated business planning

 View Only
  • 1.  Observations on Conditional Formatting in PAW 2.0.98

    Posted Mon October 28, 2024 08:08 AM
    Edited by Asgeir Thorgeirsson Mon October 28, 2024 08:53 AM

    Hi all,

    I wanted to share some feedback on a change I've noticed in PAW version 2.0.98 regarding conditional formatting for rows and columns. This update has made the process of applying conditional color formatting to specific levels in financial reports more complex. Previously, I used modest pastel colors to distinguish consolidated levels, and while there was room for improvement, the steps were fairly manageable. Now, however, it takes 14 clicks just to set up a conditional rule for a single row, which feels cumbersome and time-consuming.

    Here's the current process:

    1. Right-click on the row or column header.
    2. Select "Member Format" (this opens a dialog covering most of the workspace, so the data behind it isn't visible).
    3. Click on "Conditional Data Rules" from the left menu.
    4. Click "Add Rule +" on the right.
    5. Click on the "Type" column.
    6. Select "Member" from the dropdown.
    7. Click on the "Operator" column.
    8. Select "=" from the operator list.
    9. Click on the three dots at the far right.
    10. Choose "Edit."
    11. Click on "Fill Color."
    12. Select a fill color.
    13. Click "Done" on the bottom right.
    14. Finally, click "Apply" on the bottom right.

    With so many steps, the process has become tedious, especially for tasks that require frequent updates to formatting. Additionally, relying so heavily on mouse clicks is not very ergonomic. Excessive mouse usage can lead to strain and repetitive stress issues, impacting users' comfort and health over time.

    Suggestion for Improvement: Automated Coloring by Level

    To show how I use coloring to distinguish reporting levels, I've attached an example image below. It would be incredibly useful to have an option for automated coloring by hierarchy level, which would streamline formatting and make PAW even more effective for financial reporting.

    I hope the IBM-PAW development team considers this feedback and further explores ways to streamline the process.

    Thank you, PAW team, for continuously enhancing this tool - looking forward to seeing how it evolves!



    ------------------------------
    Asgeir Thorgeirsson
    Software Engineer, MS
    Icelandair
    Reykjavik
    ------------------------------



  • 2.  RE: Observations on Conditional Formatting in PAW 2.0.98

    Posted Mon October 28, 2024 03:00 PM

    Hi Asgeir,

    Agree that adding conditional formatting can feel like a lot of clicking now.

    In the short term and in context of your specific example though I assume how you have mentioned it that you are adding formatting to each row individually which would then be a lot of repetitive work; in cases like this you could streamline the work (and future proof for the event that new accounts are added to the rows in the future.)

    I would add an MDX member to the view in the version dimension (the one that has the "Forecast" element in your screenshot) which returns the level of the accounts (row) dimension e.g.:

    MEMBER 
    	[Version].[Version].[AccountLevel]
    AS
    	[Account].[Account].CurrentMember.Properties("LEVEL_NUMBER")

    The MDX member will be calculated even though you don't need to show it in the view.

    You can then add all of your conditional formatting against the "Forecast" element based on what have is shown in the "AccountLevel" element - so assuming you only have 5 levels you would only need to add 5 rules as opposed to one for each account.

    It still wouldn't save the issue that each rule requires 14 clicks but it could reduce the amount of times you have to do those clicks!



    ------------------------------
    Declan Rodger
    Technical Director
    Spitfire AnalyticsDeclan Rodger
    Technical Director
    Spitfire Analytics
    ------------------------------



  • 3.  RE: Observations on Conditional Formatting in PAW 2.0.98

    Posted Tue December 03, 2024 11:27 AM

    Hi Declan,

    thanks for sharing this, it works great and significantly improves readability, especially when dealing with hierarchies with multiple levels.

    I have another question, not directly related to conditional formatting but still tied to the cube viewer's formatting. The ability to add spacers also has made cube views much more readable. However, I noticed spacers seem to work only with static sets. I tried dynamically creating spacers using MDX, for example, adding a spacer after a certain level in the organization dimension to separate regions, but I couldn't get it to work. Is this something you have been looking into and maybe found a solution?
    Thanks!


    ------------------------------
    Mario Hasler
    ------------------------------



  • 4.  RE: Observations on Conditional Formatting in PAW 2.0.98

    Posted Wed December 04, 2024 05:58 PM

    Hi Mario,

    For spacers I've tended to use MDX views with custom members instead of the built-in functionality - that's more due to force of habit than anything though as I started using spacers before they were made available as part of the standard functionality. I do think the standard functionality is great from what I've seen but more often than not if I'm adding more "advanced" formatting like spacers etc I am probably already doing some other things that have pushed for a custom MDX view anyway.

    Assuming that you have a case where you had a load of entities at level 0 and a country/region entity at level 1 you wouldn't be able to add spacers into an existing MDX set but you would be able to create a new MDX set that already accounts for them (obviously this new MDX set would largely follow the logic of your existing one but would need to be broken into chunks/steps).

    Something like below should work where:

    •  Essentially you use the generate function to say you want to iterate through every Level 1 element (named level in my example as Country Code).
    • Then on each iteration you perform a union to expand that element and join it with your spacer element
    • Note the use of the "ALL"; this is done to keep the duplicates (as you are duplicating the spacer element many times)
      • By default UNION and GENERATE would only want to return the first instance of it
      • In my example the ALL wouldn't really be needed for the UNION (as the Spacer only exists once in each union) but it would needed for the GENERATE

    WITH MEMBER [Entity].[Entity].[-]
    AS ""
    SELECT 
    	{
    		[Measures].[Measures].MEMBERS
    	} 
    	ON 0, 
    	{
    		Generate (
    			{[Entity].[Entity].[Country Code].MEMBERS},
    			{
    				UNION(
    					{TM1DrillDownMember ( {[Entity].[Entity].CurrentMember}, All, Recursive ) },
    					{[Entity].[Entity].[-]},
    					ALL
    				)
    			},
    			ALL
    		)
    	} ON 1 
    FROM 
    	[Cube] 
    WHERE 
    	(
    		[Version].[Version].[Budget], 
    		[Time_YYYYMM].[Time_YYYYMM].[All FYs]
    	)


    ------------------------------
    Declan Rodger
    Technical Director
    Spitfire Analytics
    ------------------------------



  • 5.  RE: Observations on Conditional Formatting in PAW 2.0.98

    Posted Thu December 05, 2024 09:41 AM

    It's supper amazing and hope we will participate 



    ------------------------------
    Abdirahman Ali
    ------------------------------



  • 6.  RE: Observations on Conditional Formatting in PAW 2.0.98

    Posted Thu December 05, 2024 04:25 PM
    Edited by Mario Hasler Thu December 05, 2024 04:27 PM

    Hi Declan,

    Thank you for your response, it's greatly appreciated. I have also used custom members in the past but started to like spacers because of their formatting flexibility and the ability to reduce column width and row height beyond what's possible with standard / calculated members.

    With the help of your code, I managed to create an MDX set that lists all regions (level 1) and inserts a spacer after each region.

    {
    	Generate (
    		{[Entity].[Entity].levels(1).MEMBERS},
    		{
    			UNION(
    				{TM1DrillDownMember ( {[Entity].[Entity].CurrentMember}, All, Recursive ) },	
    				{[Entity].[Entity].[Header_#000001733428642732#]},	
    				ALL
    			)
    		},
    		ALL
    	)
    }

    I also wanted to include the top element (parent of regions -> PAW level 0), and after some trial and error, I got that working too.

    {
    	GENERATE(
    		[Entity].[Entity].MEMBERS , 
    		STRTOSET( 
    			CASE   
    				WHEN [Entity].[Entity].CURRENTMEMBER.PROPERTIES("LEVEL_NUMBER") = "1" 
    				THEN "{[Entity].[Entity].[Header_#000001733428642732#], [Entity].[Entity].CURRENTMEMBER}"  
    				ELSE "{[Entity].[Entity].CURRENTMEMBER}" 
    			END 
    		),
    		ALL
    	)
    }

    However, I noticed a couple of things:

    1. The top element cannot be collapsed using this MDX.
    2. When zero suppression is active, and a region, e.g. Region 2, has no values and is hidden, two spacers appear between Region 1 and Region 3. This makes sense but looks a bit odd, as the spacing between these regions is bigger than between regions where no values / regions are hidden.



    ------------------------------
    Mario Hasler
    ------------------------------



  • 7.  RE: Observations on Conditional Formatting in PAW 2.0.98
    Best Answer

    Posted Tue October 29, 2024 09:19 AM

    Our roadmap includes conditional format in the cube viewer based on member properties (e.g level and attribute values).  This will allow you to create a small number of formatting rules to format all rows and columns in the view.  The current member based formatting (applying a format to a specific member) will still exist and be used to overlay the format applied by the member property rule based formatting.

    This will make it much simpler and quicker to apply consistent formats to the cube viewers in Workspace books.  



    ------------------------------
    Stuart King
    Product Manager
    IBM Planning Analytics
    ------------------------------