Hello Razvan,

You can solve this by using widget themes:

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...

Or you can specify a user scheme by setting the URL-parameter SCHEME: http://localhost:57772/csp/user/_DeepSee.UserPortal.DashboardViewer.zen?DASHBOARD=test/New%20Dashboa rd.dashboard&SCHEME=myscheme and creating the files skin_myscheme.js and skin_myscheme.css in the broker directory.

You can check the other skin_* files to see how they are structured.

Best regards,

Sascha.

Hello Guy,

it is difficult to say what the problem is. The problem could be the report generation or the way you attach the report to the email. Is the file empty? What is the size of the file? In your code you could write the report to a file on server and sent it via email and then compare the two.

Without a code review it is probably impossible to help. This is a valid case for the WRC.

Regards,

Sascha

Hello Alexander,

I cannot reproduce the behavior you describe. Please check if you the correct notation which is Properties instead of Property:

[HomeD].[H1].[City].CurrentMember.Properties("Population")

If you are using it in a calculated member with the %MDX() function then this may be a problem that is already fixed in 2017.1. Which version are you using? You can download 2017.1 in the WRC to check if the problem is still there.

If it is also present in 2017.1 please open a WRC call.

1) There are cases where SQL works more effective than MDX. It all depends on the data models and the amount of the data. Optimization in MDX is also different from the optimizations in SQL and fits the typical use cases. Improving performance of MDX is on our Top-List for the next releases.

2) Using %CELL is not always the best solution. But in cases where you know the layout of the table and need values from other cells then this is the most effective way. But it is lacking flexibility. I just wanted to show you the options you have and you have to choose what is the best way for you.

Besides that we are having caching mechanisms and I expect that we do not repeat all calculations.

You can use the DeepSee Shell to check how effective that is for your query. In terminal:

SAMPLES>do $System.DeepSee.Shell()
DeepSee Command Line Shell
----------------------------------------------------
Enter q to quit, ? for help.
>>stats on
Stats are: on
>>SELECT NON EMPTY NONEMPTYCROSSJOIN([DateOfSale].[Actual].[YearSold].Members,[MEASURES].[TEST]) ON 0,NON EMPTY [Product].[P1].[Product Category].Members ON 1 FROM [HOLEFOODS] %FILTER %OR({[DATEOFSALE].[ACTUAL].[YEARSOLD].&[2015],[DATEOFSALE].[ACTUAL].[YEARSOLD].&[2016]})

                                Test                 Test
1 Candy                      2.583,44             3.425,33
2 Cereal                     2.583,44             3.425,33
3 Dairy                      2.583,44             3.425,33
4 Fruit                      2.583,44             3.425,33
5 Pasta                      2.583,44             3.425,33
6 Seafood                    2.583,44             3.425,33
7 Snack                      2.583,44             3.425,33
8 Vegetable                  2.583,44             3.425,33
============================================
Query Statistics:
 Results Cache:                        0
 Query Tasks:                          1
 Computations:                        16
 Cache Hits:                           0
 Cells:                                0
 Slices:                               1
 Expressions:                         48
 Join Indices:                         0
 
 Prepare:                          2,016 ms
 Execute Axes:                   229,250 ms
  Columns:                         7,567 ms
   Crossjoin:                      0,712 ms
   Members:                        5,519 ms
  Rows:                          218,790 ms
   Members:                      216,448 ms
  Execute Slicer:                  0,495 ms
 Execute Cells:                   29,594 ms
 Consolidate:                     97,073 ms
 Total Time:                     357,933 ms
 
ResultSet Statistics:
 Cells:                               16
 Parse:                            6,093 ms
 Display:                          4,503 ms
 Total Time:                      10,596 ms
---------------------------------------------------------------------------
Elapsed time:       .555019s

----------------------------------------

Run the query twice and look at the stats for cache.

Hello Samual,

I am uncertain if I completely understood your problem but here are some thoughts:

1) Why are you working with month here if you are trying to calculate the total sales of the last two years?

I would suggest to use years instead:

AGGREGATE(%TIMERANGE([DateOfSale].[Actual].[YearSold].&[NOW-2]),[Measures].[Amount Sold])

If you want to calculate it for all products the wrap it in a %MDX statement and set %CONTEXT to columns:

%MDX("SELECT AGGREGATE(%TIMERANGE([DateOfSale].[Actual].[YearSold].&[NOW-2]),[Measures].[Amount Sold]) on 0 FROM [HOLEFOODS]","%CONTEXT","columns")

2) To avoid recalculating the same values you can use the %CELL function. For example %CELL(-2,0) will pick the value from the current row but two columns to the left.

There is the CopyTo() method that will take a System.Array and copy it to the CacheListOfDataTypes. Maybe that helps?

Here is the description:

CopyTo(string[] array, int arrayIndex)

Summary:
Copies the elements of the System.Collections.Generic.ICollection<T> to an System.Array, starting at a particular System.Array index.

Parameters:
array: The one-dimensional System.Array that is the destination of the elements copied from System.Collections.Generic.ICollection<T>. The System.Array must have zero-based indexing.
arrayIndex: The zero-based index in array at which copying begins.