In this article
A new Table Engine code-base was introduced in Version 17. The engine has been completely re-designed, and in the longer term will become the default table engine. The benefits of this work include:
- It will make the code cleaner and simpler to maintain, reducing the time required to fix defects.
- It will optimize the code with the potential to improve performance.
- It will make the code more easily extensible so that new features / statistics may be added without large changes to other code.
- It will make the engine independent of actual data structures and formats and will provide support for future analysis of other data formats.
- It will separate the computations from the visualization, and provide the possibility to add other table representations without changing the engine. (for example JSON support, other visualization engines).
In version 17, this code replaced the previous "Table Engine 2". From Version 17 "Table Engine 2" is no longer available, and it is replaced by the new "Extended Engine". During the creation of this engine, certain defects have been fixed which improve the behavior but could potentially change existing values in live reports using Table engine 2. The extended engine will also support BitStream only, just as Table engine 2.
Note: Version 1 will remain the default for Version 17, so new reports will not be affected unless the setting is changed manually. The tabulation engine settings are found under Report Properties > General.
The following table highlights the key differences between the two tabulation engines.
Existing Table Engine | Extended Table Engine |
Percentages with Zero Base | |
If the percentage base is 0, percentage in the total cell is always shown as 100%. | If the percentage base is 0, percentage in the total cell is always shown as empty. |
Open Text Headers | |
When an open text question is crossed with another question (for sorting), the counts used to evaluate the frequency of answers depend on the values of the crossed question. | The frequency of answers do not depend on any other questions in the table. |
Single question with scores and numeric variable table intersections | |
If a single variable with a score is crossed with a numeric question and an average is set on the single question, a value is shown for the cell value intersection based on the average for the score question. | An error is displayed that is consistent with all similar cases of ambiguity when two numeric variables intersect in a table cell. |
Categories Headers | |
If two variables with different categories are placed on the rows, and a categories header on the column, no error is generated for any non-matching codes between the variables. | An error is generated if category lists are different. |
Categorizations | |
Scenario: The “average of individuals” property is set on a categorization and the categorization is crossed with a categories header. Categorization total values are not available and the table shows empty cells. | With the new table engine in the same scenario, the table engine displays error messages in the cells indicating that values cannot be computed. |
If the “average of aggregates” property is selected and a categorization is crossed with statistics header, the categorization total is shown as an integer only. | The categorization total in this case is shown as a floating-point value if applicable. |
Scenario: A categorization containing a grid and the same grid placed on rows, with a categories header placed on the columns. The vertical percentage is shown in the grid rows produced by the grid itself but are not displayed in the same rows within categorization. | The percent values shown are the same as expected in both headers. |
Chi-Square Tests | |
The Chi-square test is not evaluated for multiple categorical variables. | The test is evaluated for multi variables (on a cell level). on table margins the test is evaluated if the variable on the opposite side is single. |
The Chi-square test is not evaluated in cells with zero sample. | The test is evaluated in zero-sample cells provided that all totals are positive. |
T-Tests | |
T-test is not evaluated if single variables are nested within a multiple variable. | If single variable is nested in a multiple variable then the t-test is evaluated for each group of single categories separately. |
T-test is not evaluated in grids. | In grids t-test is evaluated for each field separately. (each field is in fact a single variable). |
For recoded variables with original categories shown t-test is only evaluated for original categories, not the net categories. | For recoded variables t-test is evaluated separately for original and net categories (2 independent groups). |
Open texts and multi-project data sources | |
Scenario: an open text header from one project is used in the rows of a table, and several other variables are used in the columns from other projects in the data source, with the “override other projects” property set. In this case, The list of open text answers is evaluated on one of the projects used in the table depending on which column variable is specified in sorting options. | In the same scenario, The list of answers is a union of the lists obtained from all projects referenced in the column headers. |
Time series and multi-project data sources | |
Scenario: a date header from one project is used in the rows of a table, and several other variables are used in the columns from other projects in the data source, with the “override other projects” property set. In this case, the date range is evaluated on the project of the header in the rows, regardless of what projects are used in the table. | In the same scenario, The date range is evaluated from the union of all projects referenced in the column headers. |
Hide Headers Property | |
The current behavior is as follows: Setting Hide Header on a header that is not the final nested header in the chain (the “leaf” header) will hide all parent headers. Setting Hide Header on the final nested header in the chain will hide only if a single category is available. (e.g. a statistic header with only average selected, a single question masked so only one answer is visible). | The behavior has been modified so: Setting Hide Header on a header that is not the final nested header in the chain will result in only this header being hidden. It will not effect on cells of other headers either before or after this header in the nesting chain. Setting Hide Header on the final nested header in the chain) will hide only if a single category is available as before. (The number of leaf cells in the headers must always equal the number of cells in the data rows/columns.) |
Table Bar Chart Color Allocation | |
Colors start from the deepest level for each branch i.e.: “Color” is used for the lowest level in the hierarchy, “Hierarchy level color 1” is used for the next level up, etc. | The extended engine settings start from the hierarchy root level i.e. “Color” is used for root level, “Hierarchy level color 1” is used for hierarchy level 1 etc. |
Variance, Standard Deviation and Standard Error calculation using weights | |
These statistics are affected by a different interpretation of the Weighted Square Volume expression used in these calculations. The corresponding formulae for table engine 1 is as follows: An example of this used In the variance calculation (which is also used in the standard deviation and error statistics) is as follows: Where WT is the sum of the weights of the respondents within the target group that fit into the cell. | The difference in the Quantity Total squared calculation in the extended engine is as follows: (Note: This is the same as the formula in Table Engine 2, which the extended engine is replacing). An example of this used In the variance calculation (which is also used in the standard deviation and error statistics) is as follows: Where WT is the sum of the weights of the respondents within the target group that fit into the cell. |
Hierarchy Header Settings | |
The "Top parent” option shows all parents in the chain, not only the top one. There are no differences between the "top parent" and "all parents" options. | Selecting "Top parent" select only the top-level parent and skip any intermediate nodes if any. |
If one of the selected report base nodes is a descendant of another one then this node (and its sub-nodes) is duplicated in flat layout (and skipped in nested layout). | Nested nodes are not duplicated provided that their ancestor is also selected. |
If more than one node on the same level is selected then the min/max reference groups are repeated after each node selected. | Min/max nodes are displayed only once for each level. |
"Self-exclusive" items are shown only if a single node is selected in a report base. When multiple nodes are selected, self-exclusive items are not shown. | Self-exclusive items are displayed in all cases. |
If the option "Direct level report" is set, header properties do not contain the property "Layout" so the hierarchy header will always have the "Flat" layout. | The "Layout" property is always visible, regardless of settings. |
Recoded variables and missing categories | |
In the case where a recoded variable does not contain all categories of the original variable, the total shown still reflects the original variable base independently of the “include not answered” option. | The total will reflect the correct base depending on the setting of the “include not answered” option. |
Frequency counts on weighted tables | |
Frequency counts on tables with a weight associated with them will always display as rounded integers | The extended engine allows the frequency to be displayed with decimal places to reflect any precision when using weighted values. |
| Benchmarks | |
| If the intersection of headers contains several measure variables from the benchmark, then the first of them is used to display data. | The extended table engine displays an error message and does not create the table. |