dataflow with factor cube having less dimensions than target is not considered in text algorithm

Arnaud Villemain
Arnaud Villemain Active Partner
Fourth Anniversary 10 Comments 5 Likes 5 Up Votes
edited May 13 in Platform

Hello,

I try to transfer text comments (no rich text) from one cube to the next one "filtered" by some matrix cube.

This picture shows the dataflow factors (two factor cubes, one target cube):

The target cube has 8 dimensions. These 8 dimensions are partly present in the factor cubes:

  • cube a: 7 out of 8 dimensions
  • cube b: 5 out of 8 dimensions

(see the colors to check which dimension is common to which cube)

the dataflow layout is simple:

  • 3 cubes
  • 1 text algorithm
  • this text algorithm is used to write into the target:

the issue is: the cube b is not "replicated" when the dataflow runs.

I would expect that this cube would get virtually the dimensions D5 ,D6 ,D7 to reach the target cube structure while the dataflow runs.

the factor cubes are filled with data.

  1. When I run the dataflow, no data is written into the target cube.
  2. If i changed the target expression to a static value (i.e. Expression = "some static text"), then this text is written into the target. This excludes issues related to sparsity or wrong data slices selections in the earlier procedure steps.
  3. If i change nothing to the dataflow, but increase the dimensions of the matrix cube to get exactly the structure of the target cube, then the dataflow works and writes data into the target. BUT i loose all the advantages of Board if i need to "replicate" the data manually entered by users to populate the matrix to a "cube copy" having 8D instead of 5D… This goes agains all advantages of Board in general and dataflows in particular..

Does anyone have this kind of workflows working in Board 14?

Many thanks in advance for your help and insights.

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

Board 14 version (14.1 Revision0.0.133566)

Tagged:

Accepted Answer

Answers

  • Hello @Arnaud Villemain,

    a few comments I would share with you:

    • why using the expression in a block and not directly in the expression area?
    • are extending your calculation domain to D0?

    Based on your expression I would use "Limit calculation to tuples of cube B" instead of an IF statement, setting the ELSE as 0, that is a number, could not be compatible with text cube.

  • Arnaud Villemain
    Arnaud Villemain Active Partner
    Fourth Anniversary 10 Comments 5 Likes 5 Up Votes
    edited May 13

    thanks @Leone Scaburri

    why using the expression in a block and not directly in the expression area?

    you're right, this is not absoluty necessary, i'll remove this.

    are extending your calculation domain to D0?

    no. I would think that the structure of factor cube b (D0 → D4) would be enough, isn't it?

    or would be an extension of the calculation domain to D0 mandatory to make the dataflow write data?


    This is my current definition:

    I would use "Limit calculation to tuples of cube B" instead of an IF statement

    I was not aware of this function 😯, i'll try it and let you know, thanks!

    setting the ELSE as 0, that is a number, could not be compatible with text cube.

    you are right, i'll change this into if(b=1, a ,"") but this doesn't change the end result: the dataflow still doesn't write anything into the target cube.

    but in general, the issue remains that the factor cube with 5 dimensions is not "virtually extended" to the 8 dimensions of the target cube, isn't it? or do i understand something the wrong way here?

  • What you are calling "replica" or "virtual extension" is by definition:

    The values in the factor Cubes are processed for all Entities in the structure of the target Cube, at the highest level of granularity. This is similar to what would happen if you added the factor Cubes to a Layout as Blocks and set all the Entities in the target Cube structure in "By Row" in the Axis area.
    The result is a set of combinations of the members of Entities that are in the Structure of the target Cube which have a non-zero value on at least one of the Blocks of the Layout and are in the currently active Select.
    Each of those combinations is called a 
    tuple and the entire set of resulting tuples is the calculation domain (or, in other words, the set of all possible inputs for the formula).

    Did you try extending on D0?

  • Arnaud Villemain
    Arnaud Villemain Active Partner
    Fourth Anniversary 10 Comments 5 Likes 5 Up Votes
    edited May 15

    Thank you for your message @Leone Scaburri .

    Did you try extending on D0?

    i do not understand the necessity of extendy on D0, since the dimension is in the factor cube b and has non-zero values.

    i might understand it wrong, but in my case, those both conditions are satisfied, aren't they?:

    1. members of Entities that are in the Structure of the target Cube → the 8 entities structuring the target c
    2. which have a non-zero value on at least one of the Blocks of the Layout → D0 entity of cube b has (in combination with D1, D2, D3, D4) non-zero values.

    therefore, which reason makes Extend calculation on new tuples for all members of D0 necessary?

    Many thanks for your help in advance.

  • Helmut Heimann
    Helmut Heimann Employee, Community Captain
    250 Likes Fourth Anniversary 100 Up Votes 100 Comments

    Hi @Arnaud Villemain ,

    he reason for the extension is that you are populating a text-cube - in such constellations, it is _allways_ necessary to extend to the dimensions of your target.

    Kind regards

    Helmut

  • Arnaud Villemain
    Arnaud Villemain Active Partner
    Fourth Anniversary 10 Comments 5 Likes 5 Up Votes

    Dear @Helmut Heimann

    he reason for the extension is that you are populating a text-cube - in such constellations, it is _allways_ necessary to extend to the dimensions of your target.

    Thanks for the information.

    Does it mean that in another case (target cube is datatype Integer or Single), extending to the target dimensions would not have been necessary?

    The help file to this topic https://www.boardmanual.com/board14/data-modeling/data-model-design-sections/procedures/procedure-actions/calculation-action-group/the-dataflow-process.htm , section Extend options doesn't say something to this matter, does it?

  • Hi @Arnaud Villemain,

    I didn't get if the suggestion of extending the calculation domain to D0 enabled your dataflow to write into the target cube. Did it?

  • Arnaud Villemain
    Arnaud Villemain Active Partner
    Fourth Anniversary 10 Comments 5 Likes 5 Up Votes

    Hello @Leone Scaburri ,

    Regarding:

    I didn't get if the suggestion of extending the calculation domain to D0 enabled your dataflow to write into the target cube. Did it?

    I have not tried it, since (as you may have read here until now) i first wanted to understand the reason behind the necessity to extend the calculation domain to D0.

    Now that Helmut Helmann gave me the reason behind, i will try.

  • Be aware the concept of tuples is not affected by Board's ability to replicate values on missing dimension within a layout. If none of the cubes shares the same structure with the target, not even after an aggregation, then the default domain will be empty. You can either set an extend on D0 or all missing dimensions on the matrix cube so that respectively either block a or block b will generate tuples
    In other words, you can check the target cube, if no cubes have the same dimensions of it as the source, look for the most similar one and set extend on the missing entity, in your case D0.

  • Arnaud Villemain
    Arnaud Villemain Active Partner
    Fourth Anniversary 10 Comments 5 Likes 5 Up Votes

    Hello @Leone Scaburri ,

    I have extended the dataflow's calculation domain to D0 and the dataflow is writing the text data properly in the target cube. Your advice was good, many thanks.