-
Lists: Does the list include a top level when it is not necessary?
When is this a problem? When you have an unnecessary top level on a list that does not need to be summarized. Examples include a transaction list, currency list, or any other list you are using for an indicator where you do not need to see a top level or summary. Why is this a problem? When you have an unnecessary top…
-
Modules: What dimensions are used in the module? Are they all necessary?
When is this a problem? This is a problem when you have unnecessary dimensions—meaning that the logic or data in the module does not apply to the dimension. Why is this a problem? Unnecessary dimensions in a module could cause poor performance from a formula having to perform unnecessary calculations and increasing the…
-
Line Items: Are there more than 50 line items in a module?
When is this a problem? When any module includes more than 50 line items. Why is this a problem? It goes against the best practice, which is to not include more than 50 line items in a module. How to correct: Break up the module into separate modules, especially if any of the line items use subsidiary views.
-
Formulas: Do any formulas use the SELECT function, especially with time?
When is this a problem? Using SELECT is considered hardcoding and not recommended. It is OK to use SELECT for versions and general time periods. Why is this a problem? Using SELECT is hard coding and not recommended. When you use SELECT with a specific list item or time, you limit the ability to update those list items.…
-
Line Items: Which line items do not need a summary?
When is this a problem? When a new line item is created, a summary method is added by default. Many line items do not need summary calculations. Why is this a problem? Running unnecessary calculations can increase the time it takes to open a model. How to correct: When creating a new line item, make it a habit to turn off…
-
Model Optimization Resources
A model optimization tracker is available for download to assist you as you review each of these optimization checklist steps. Another resource you are encouraged to review is the Anaplan Planual, which provides a systematic set of standards for model building on the Anaplan platform and is designed to produce the most…
-
Lists: Does the list use Properties?
This is a problem when the properties don't meet the following use case needs: * Display Name for numbered lists * Creating actions using numbered lists * Export labels * Facilitating navigation to different dashboards (classic dashboards) * Creating driver and dependent lists Why is this a problem? List properties are the…
-
Time: Is the main time scale of the model larger than it needs to be?
When is this a problem? Each year that is included in the model calendar increases the size of the model. When used for planning purposes, it's likely that only certain data sets are needed, leaving many empty cells. Why is this a problem? It is unnecessary to increase the model calendar years when Time Ranges are…
-
Actions: Check the data sources. Does each data source have an action associated with it?
When is this a problem? Data sources without an associated action are unnecessary. Why is this a problem? It can be confusing to have data sources without actions. It is best to keep things tidy. How to correct: Delete data sources that do not have actions associated with them. More information: Planual 5.03-01 Anapedia:…
-
Actions: Check the data sources. Are some of them lists or modules?
When is this a problem? All sources of data should either be a file or module view, not a list or module. Why is this a problem? When using a list or module as a data source, there are no filtering mechanisms available. How to correct: It is a recommended best practice to use a saved view when importing data from one model…
-
Actions: Do any of the actions result in errors when they are run?
When is this a problem? When you receive a yellow exclamation point, that is an error. You may also see warnings. Both errors and warnings need to be corrected. The action or process should show all green checkmarks. Why is this a problem? Imports will run, but the errors and warnings will result in missing data. How to…
-
Actions: Are all the actions necessary?
When is this a problem? When there are unused actions that haven't been deleted. Why is this a problem? It is very hard to audit which actions are being used. How to correct: Remove any unused actions. More information: Planual 5.01-04 Best Practices for Model Cleanup
-
Formulas: Do any of the line items use conditional formatting with summaries turned on?
When is this a problem? This is a problem because conditional formatting is done at the detail level, not the parent level. Why is this a problem? The summary is unnecessary. How to correct: Turn off the Summary settings. More information: Planual 2.03-01
-
Formulas: Is the TEXTLIST function used?
When is this a problem? Always a problem. Why is this a problem? Using TEXTLIST requires a lot of memory. How to correct: Using two-dimensional modules and Boolean flags with ANY is a good alternative. Click here to see an ANY instead of TEXTLIST document. Use FIRSTNONBLANK and LASTNONBLANK with ANY and ALL. More…
-
Formulas: Are there SUM and LOOKUP combinations?
When is this a problem? Having SUM and LOOKUP in the same line item is always a problem and can cause performance issues. Why is this a problem? Using SUM and LOOKUP in the same formula generally causes large formula calculations, especially if time is a dimension or when the source and target structures are very…
-
Formulas: Is there an excessive use of the FINDITEM function?
When is this a problem? The FINDITEM function requires a lot from the engine, as it is attempting to find an item in a list and it does this for every cell that is related to that line item. This is especially true when the list includes null values. Excessive use depends on your model and the lists it is being run…
-
Formulas: Are there long formulas, such as complex IF THEN ELSE statements?
When is this a problem? If you can't explain the purpose of a formula in one sentence, the formula is too long. Why is this a problem? Long formulas, such as complex IF THEN ELSE statements, are difficult to understand, audit, and maintain. Complex formulas use valuable processing time and require the engine to work harder…
-
Formulas: Are there any formulas that are daisy chains?
When is this a problem? Daisy chain formulas are always a problem. Daisy chains happen when you have a line item in module A that is referenced in module B, which is then referenced in module C, and so on. This creates a situation where there is a long dependency chain that has to be calculated. Instead, each module should…
-
Formulas: Are there any formulas that that combine text strings?
When is this a problem? The use of text strings in Anaplan cannot be avoided, so you must ensure that the joins are done in the most efficient way to minimize the impact on performance. Be sure to read the Formula Optimization article. You can find the link in the More Information section below. Why is this a problem?…
-
Formulas: Are there line items that can be placed in a system module rather than calculation module?
When is this a problem? Look for functions that result in data that doesn't change (i.e., the parent of a line item). Placing these functions in a systems module means that the calculation is run once and can be referenced by multiple line items in multiple modules. Look for: PARENT(PARENT(PARENT(line item))), text field…
-
Line Items: Are there line items used as headers where the format is not set to No Data?
When is this a problem? Line items that do not follow this convention. Why is this a problem? Using line items as headers without the format set to No Data causes unnecessary calculations. How to correct: Change the format to No Data to avoid unnecessary calculations. See the article on clearing data for more information…
-
Line Items: Are there excessive subsidiary views?
When is this a problem? Subsidiary views should be avoided for data that is used in calculations. The following are the situations where a subsidiary view can be used (note that they all are related to how the data displays): * Show an attribute for end-user analysis, filtering, or sorting. * Show an alternative hierarchy…
-
Line Items: Are text formatted line items overused?
When is this a problem? Anaplan is optimized for numbers and Booleans. Why is this a problem? Text uses more memory than most other model components and does not perform as well as other data types. Text limits capabilities and impacts model size. How to correct: When possible, convert text data to another data type. Check…
-
Modules: Is the default view clean?
When is this a problem? This is a problem when the default view has filters applied, hidden list or line items, or includes conditional formatting or sorting. Why is this a problem? The default view of the module should always be a blank canvas for any model builder to modify. The expectation is that nothing is hidden or…
-
Modules: If there are saved views, are all of the line items in the view necessary?
When is this a problem? This is a problem when the view includes line items that aren't needed. Why is this a problem? The extra line items can impact performance because the view has to render the extra line items. For example, if three line items are needed, but 25 line items are defined, performance will be impacted.…
-
Modules: If there are any saved views, do they use the correct filtering?
When is this a problem? This is a problem when saved views use multiple filters per tab. Why is this a problem? Multiple filters on a tab can cause performance issues. The data is read for the first filter, then those results are read for the next filter, etc. How to correct: Filters should be set up using Boolean values…
-
Modules: Are the dimensions in order?
When is this a problem? This is a problem in all models. During a model build, lists are organized in the way that they are added. Why is this a problem? Through research, we discovered that dimensions that are not in order can make the engine work harder. How to correct: On the Modules pane (Model Settings>Modules) look…
-
Modules: What time dimensions are being used in the module? Can a Time Range be used?
When is this a problem? This is a problem in models where the time requirements of the module differ from the Model Calendar. This could mean that the year requirements are outside of the model calendar or do not need all of the years in the model calendar. It is also a problem to include unnecessary time summary settings.…
-
Lists: Does the subset list follow proper naming conventions?
When is this a problem? Naming conventions should be used for all subset lists. Why is this a problem? Subset lists that do not use naming conventions can cause confusion. Without proper naming conventions, it can be difficult to determine which list the subset belongs to. This becomes more important when using the subset…
-
Lists: Are there subsets on larger lists?
When is this a problem? This is a problem when large lists include subsets. Why is this a problem? Large lists that include subsets can cause performance problems. They add aggregations and add to the overall size of the model. How to correct: Instead of a subset, create a separate list. More information: Planual 1.06-02