I've seen a few cases now where checking the **Open Sparsity** option on a dataflow does the trick to ensure data makes it to the destination cube correctly. I was hoping someone could help articulate when and why this should be used, or avoided?

As I understand it, the opensparsity option removes any assumptions about where valid data intersections exist in the target. This forces execution of the dataflow for each intersection of the target cube. If a non-zero value is found, it is saved to the target cube and the intersection is populated. Without this option, a dataflow could have a non-zero number to store in a target cube, but since the target intersection is not valid, the result cannot be saved to the target cube. The behaviour looks like the dataflow works fine, but some numbers just don't populate in the target. Without this option checked, the dataflow will only calculate results for each existing intersection of the target cube. With this option checked, a dataflow takes a bit longer because there are more intersections to calculate. Is that correct? Please feel free to correct me where I've misunderstood the option.

Hi

sparsity is a basic concept in BOARD and it seems there is an small missunderstanding how sparisty is working. You can find some details in Introducing sparse structures , but I try to create an example.

Assuming you have 2 Entities (Customer, 10 Members, Product 5 Members) [I try only a 2 dimensional example, cause it's easier to explain].

A dense Cube would create a 5x10 Matrix to save all data, but due to the fact, that normaly not all cells have data a cube would need 50 cells, even if only some are filled

If you create a sparsity on Customer and Product, BOARD will save the data in a different way (one "table"/adressing Matrix for Sparsity and one for the elments) [The IDx is normaly not included, cause it's a list, so it's first element, second element, etc]. Furthermore a sparsity is shared between all cubes having the same Sparsity

So instead of having 2 Cubes with 50 Cells (100 Cells of Data) board is saving an Sparsity Mapping Table (10 Combinations-> 20 Cells), and 2 Cubes with 10 Cells, so in total 40 Cells instead of 100.

So, after this short introduction of sparsity back to your question.

A DataFlow can only work on existing Sparsity (it won't create a new entry in the sparse Table),

so for example if there would be third Dense Cube only containing Data for Cell C10 P5 and you want to write this value into a sparse cube, the value couldnt be written, cause our sparsity doesn'T know the combination C10 P5.

If you use a DF with opensparsity it would create a new entry in the Sparsity Mapping Table (Element 11) and so a sparse cube could also have data on this combination.

datareader and dataentry can directly create a new entry in the sparsity.

I hope this answers your question

Kindly Regards

Björn