EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB483762: Grid cannot load due to a memory request has exceeded a limit


Qinyi Chen

Quality Engineer, Principal • Strategy


Before MicroStrategy 2020 and under Data Engine Version 11, some grids with multiple derived attributes request more memory than necessary and can potentially cause memory beyond limit failure when loading.

Starting with the release of Strategy ONE (March 2024), dossiers are also known as dashboards.

Symptoms

  • Multiple derived attributes that are defined on more than one attributes, and those derived attributes have joint child
  • Larger memory required during calculation and possibly loading failure if limit is exceeded
  • Intermediate Relation Table element order will change after the fix

Glossary

  • Derived Attribute
  • Joint Child – A type of many-to-many relationship where one attribute has a many-to-many relationship to two otherwise unrelated attributes.
  • What is CSI?
  • Query Detail – A way to check SQL and CSI statements.

Steps to Reproduce


The following example uses Strategy Tutorial warehouse. 
1.    Open Strategy Web. 
2.    Create a new dossier.
a.    Add Data: “Existing Objects”.
b.    Add attributes “Country”, “Region”, “Category”. 
* Attributes “Country” and “Region” are in 1-to-M relationship.
c.    Click “Add” to add the data in In-Memory mode.

ka0PW0000001JaaYAE_0EM2R000000mv3r.jpeg

3.    Create a derived attribute “DA1” with expression:

Country@ID+Category@ID
. Validate the expression and save the attribute.
4.    Create another derived attribute “DA2” with expression:
Category@ID+Region@ID
. Validate the expression and save the attribute.
** Now that here “Category” is a joint child for “DA1” and “DA2”, meaning it has a many-to-many relationship to both of the DAs, which are otherwise unrelated attributes.
5.    Add attributes “DA1” and “DA2” into the grid.
6.    Check the Query Detail and users can see when the Relation table is created, DA1 is the last element.

...
select	[DA2]@[ID],
	[Category]@[CATEGORY_ID],
	[Country]@[COUNTRY_ID],
	[Region]@[REGION_ID],
	[DA1]@[ID]
from	Full Outer Join(
	                Ex4_tempcube2, 
	                Full Outer Join(
	                                Ex4_tempcube0, 
	                                Ex4_tempcube1
	                               ) on Category
	               ) on Region, Country
to	RELATION5-<DA2, Category, Country, Region, DA1>
...

Note: In this case is a simplified version for demonstration purpose. Even with the issue, this case doesn't request enough memory to exceed the limit, so the error will not be triggered. But compared with the fixed version, users can easily see and understand the changes in CSI. 

Cause


This is a known defect before Strategy 2020.
Due to a previous change, the relationship between derived attributes related by a joint child and their children are regarded as Many-to-Many instead of 1-to-Many. This change makes the logic of relation table ordering failed to work, therefore causes CSI changes.
While this change of CSI is still correct and returns the same data, the memory request may increase due to larger internal results of temp cubes, and will potentially lead to execution failures.

Solution


To resolve this defect, please upgrade to Strategy 2020 or above, and set Data Engine Version setting to 12.
The project level setting Data Engine Version can only be enabled through Workstation. For more details on enabling the setting, see Change Data Engine Version . 
In Strategy 2020 the logic of Relation table ordering is fixed so the attributes could be ordered properly and the memory request is optimized.
Query Detail after the fix


select	[DA2]@[ID],
	[DA1]@[ID],
	[Category]@[CATEGORY_ID],
	[Country]@[COUNTRY_ID],
	[Region]@[REGION_ID]
from	Full Outer Join(
	                Ex4_tempcube2, 
	                Full Outer Join(
	                                Ex4_tempcube0, 
	                                Ex4_tempcube1
	                               ) on Category
	               ) on Region, Country
to	RELATION5-<DA2, DA1, Category, Country, Region>

Strategy Internal Reference Number for this technical note is KB483762 and DE110519 


Comment

0 comments

Details

Knowledge Article

Published:

October 30, 2019

Last Updated:

March 21, 2024