Defining functions
Use the Options command in the Tools menu to define functions.Â
To define a function:
- Choose Tools | Options. The Options dialogue box appears.
- Choose the User functions pane.
- Choose the New command. The User-defined functions dialogue box appears.
- Enter a name for the function.
- Enter the function-defining expression. Click on the Expression button. The Expression Editor dialogue box appears.
- Click OK, to go back to the User-defined functions dialogue box. The list of User-Defined Functions is updated.
- Click OK to go back to the O3 Browser desktop.
It is also possible to access the User-Defined dialogue box while calculated rows or columns are added to the spreadsheets or to the dimensions. In this mode, the Add to User-defined functions List box can be unselected. The new function is applied to the calculated row or column but is not saved with the user-defined functions.
Function definition includes arithmetic, comparative, logic, and conditional operators, as well as pre-determined functions:
@Sum_ |
Sums up a range of values. |
@Avg_ |
Calculates the average in a range of values. |
@Max_ |
Returns the maximum value in a range |
@Min_ |
Returns the minimum value in a range. |
@Prod_ |
Multiplies a range of values |
There are many more functions about date, strings, and others that allow you to perform a great number of operations. The explanation of each function appears when we select it. The meaning of each function is shown on the lower bottom of the dialogue box, when a given function is chose, as shown in the next picture.Â
Picture 2: Defining Expressions
An interesting function is the Value function, which grants access to the value of a specific element in the range connected to a row or column. The format is:
Value
It returns the i-th element in a range of values, beginning from 0. For instance, the expression:
Value (0) + Value (2) |
It sums the first and third element in a range affecting the calculated row or column. If fixed values were included for the indexes, their meaning can change or disappear when the row or column context changes. For instance, if you have a calculated row or column for a dimension with an embedded dimension, and the latter one is substituted, elements 0 and 2 referred to above will be different, and element 2 may no longer exist.
Use the following syntax conventions for predetermined functions. Examples are based in the Sum function but are valid for other ones:
  @Sum_i(<from>, <to>, <expression>) |
where i (or any letter) represents the index used to sum, <from> is the beginning of the range, <to> is the end of the range and <expression> is the expression applied to each element in the range. If the parameters <from> and <to> are omitted, the range is the location of the calculated row or column.
Calculations referencing the labels of elements in a table
In the definition of a calculated row or column it is possible to refer to the table values through the labels of the corresponding elements in the axes.
To access the value of a given cell, you may use an expression such as:
[o3man:<element>] |
where <element> is the name of an element in the current level of the dimension on the axis to which the calculated element is added.
The use of calculated rows or columns in the examples is indifferent. The examples shown above with calculated columns can be performed in a similar way referring to elements in the rows and viceversa.
In the following example the calculated column USA+ France was defined with the expression:
[o3man:USA] + [o3man:Francia] |
Picture 1: Examples of Calculated elements
The value of the calculated column in a given row (for example 800 in the second row) is obtained from adding the value of the column US ([o3man:US]) and the value of the column France ([o3man:France]) in that row. (254+ 546Â = 800)
In case of having two dimensions on the axis, in order to access the value of an element in the innermost embedded dimension you may use an expression of this type:
 [o3man:<element1>.<element2>] |
where <element1> is one element in the current level of the outermost embedded dimension and specifies which of the different instances of <element2> ( which is one element in the current level of the innermost embedded dimension) you wish to refer to.
In the following example the calculated column France 2002 + US 2002 was defined by the expression:
[o3man:"2002".France] + [o3man:"2002".US] |
Picture 4: Examples of calculated elements
The value of a calculated column in a given row, (for instance 2361 in the first row), is obtained from adding the value of the column US for 2002 ([2002.US}) and the value of the column France for 2002 ([o3man:2002.France]) in that row. (208 + 2153 = 2361).
Further on, (Accessing Ranges of Values), we will see that it is possible to obtain the same result as above through an expression such as:
[o3man:"2001"] |
Double quotation marks can optionally be used to mark the labels of any element, but are compulsory in those labels that do not begin with a letter, of that contain blank spaces. For example:
[o3man:"2001"] |
As in the example above, it is possible to access values not corresponding to the same year.
In this way you may have, as in the example below, a column USA with an expression:
 [o3man:"2001".US] + [o3man:"2002".US] + [o3man:"2003".US] + [o3man:"2004".US] |
Picture 5: Examples of calculated elements.
The value of a calculated column in a given row (for example 3257 in the second row), is obtained from adding the value of the column US for 2001, 2002, 2003 and 2004, ([o3man:"2001".US] + [o3man:"2002".US] + [o3man:"2003".US] + [o3man:"2004".US]) in that row, (546 + 850 + 883 + 978 = 3257).
In the case of having more than two embedded dimension on an axis, the form to refer to a specific value is similar to the case of two dimensions. The entire path must be specified (by means of element labels separated by dots) from the outermost to the innermost embedded dimension.
In these cases the expression will be:
'[' <element>[o3man:.<element>]* ']' |
that is to say the label of an element in the outermost embedded dimension, followed by as many element labels separated by dots as necessary, to get to an element in the innermost dimension.
Bear in mind that in the expression above, square brackets are used both as operators and as  notation elements, to indicate an expression is optional. The square brackets referring to the [] operator are contained inside simple quotation marks '[o3man:' and ']'.
Below is an example with 3 dimensions on the axis:
Picture 6: Examples of calculated elements
To refer to each one of the values in the column indicated in the definition expression of a calculated column you must use:
[o3man:"2002"."Major Accounts".US] |
Despite what we have seen up to now, it will not always be necessary to specify a complete path (or absolute path) to refer to a given element. What is more, under some circumstances, it may be necessary or an advantage to use relative paths, either from the point of view of the calculations you wish to perform or to simplify the writing of the expressions.
What follows is a description of some mechanisms showing other ways to specify paths to refer to values.
In the following example, a calculated row USA France was added to the dimension Customers. Its expression is:Â
[o3man:group.US] - [o3man:group.France] |
Picture 7: Example of calculated elements
In this case it is not possible to use absolute paths to refer to the values of the elements to be subtracted, due to the fact that the calculated row must use in each of its instances, values corresponding to the different instances of elements US and France. The value of each instance must then be calculated against the values of instances US and France in the group it is added to.
To solve this type of situations, the special identifier group, which may precede the specification of a path, the elements label or a path of labels, is offered.
The group identifier makes reference to the group of elements where the calculated row or column is being defined and will thus vary according to the instances of this row or column. That is to say that in a path of the group <element> the <element> instance referred to is that one in the same group to which the calculated row or column is added.Â
Please note that the group of elements where a calculated row or column is being added is defined by the set of elements that will eventually be brothers of (or will be at the same level as) the new calculated element.Â
In the case of the outermost embedded dimension or in the case there were no embedded dimensions, group represents the group of elements in this dimension in the current level. In this case including group or not has the same effect. In the following example, a calculated global row is added. This row can be calculated through any of the following expressions:
[o3man:group."Major Accounts"] * 1000
[o3man:"Major Accounts"] * 1000
Picture 2
For this example there is a third form to write the expression above.
 [o3man:root."Major Accounts"] * 1000 |
Another special identifier (root) has been used here. This can be included just like group when specifying a path preceding the element label or preceding a path to an element.
The root identifier represents the root in the tree formed by the elements of the different embedded dimensions on an axis. For this reason, root <element> gives access to the elements in the outermost dimension, in the axis dimension embedding. As you will see in a later example, (Accessing Ranges of Values), the root identifier can be very useful when it is necessary to access the elements in the first level from a calculated row or column deeper in the axis dimension embedding.
Going back to the example of the US France row seen above, the following expression generates the same result:
 [o3man:US] - [o3man:France] |
This is another example where no absolute paths are used, and nor is the special identifier group mentioned before.
The result is the one expected for this expression, as we count on a name search tool that is the one who identifies which the element whose value must be used for the calculation in each case is. The tool will search from the innermost to the outermost embedded levels looking for an element with the specified name and will take the first one found. In the example, it is clear that in the same level where the calculated row is defined and within the same group, there is a US element and a France element, which will be used in the calculation as expected.
Finally, we have to mention the special identifier parent that gives access to an indicated elements parent element  That is to say that an <element>parent path, accesses <element>s parent element in the tree.
It is possible to use parent more than once in a path. In our example US.parent.parent returns the element Route Bikes.  Â
The following summary shows the constructions introduced above:Â Â
- It is possible to access the values of the cells through the names of the corresponding elements on the axes.
- When there are embedded dimensions in the referred axis, it is necessary to indicate the way (<path>) to the element you wish to refer to. These paths can be absolute or relative.
- It is possible to use certain identifiers to support some type of calculation, simplify the writing of expressions or make calculations more suitable to the drilling, in the definition of a path. (you may drill, remove an embedded dimension, etc., in the cube).
- The special root identifier, represents the root in the tree formed by the elements of the different embedded dimensions on an axis.
- The special group identifier identifies the group the calculated row or column being added belongs to.
- The special identifier parent gives access to an elements parent in the tree formed by the elements of axis embedded dimensions.
- The operator [o3man: ] applied to a path ([o3man:<path>]) returns the value that corresponds to the element indicated in <path>
Thus, a paths complete syntax is:
*path ::= [group |
o3man:this |
root |
name][(name |
o3man:parent)]*[.(leaf(exp) |
o3man:visible)]* |
id{*}Â |
           id is an identifier ( it begins with a letter and has no spaces)
           exp is an expression.
The leaf(exp) function can be used to define the last level in the path, as you can see, and will be described later on
The this identifier is a synonym of the group identifier
It is important to make the following comments on the [o3man: ] operator, used to return the value of a cell:
- If a calculated column is being defined, in the determination of the value of each row in that column, the value of a [o3man:<path>] expression will be the one of the cell defined by the column of the element indicated by <path> and the row being evaluated.
- Likewise, if a calculated row is being defined, in the determination of the value of each column in that row, the value of a [o3man:<path>] expression will be the one of the cell defined by the row of the element indicated by <path> and the column being evaluated.
That is, it could be assumed that in these cases the [o3man: ] operator receives, besides the path, a second implicit parameter (it is not visible and there is no need to specify it when the expression is defined) that will vary according to the column or row for which the value of the expression is being calculated.
Despite what was mentioned above, it is possible, optionally, to assign the [o3man: ] operator a second path as a parameter. In this case, instead of varying the considered column or row, according to the position being calculated, the column or row will remain locked on the element indicated by this second path. It must be clear then, that the path specified as second parameter to the [o3man: ] operator, must refer to elements on the opposite axis on which the calculated element is being added.
In the following example, the calculated column Diff 2002 uses this kind of expression in the second term in the subtraction:
[o3man:"Mountain Bikes"] - [o3man:"Mountain Bikes", "2002"] |
Picture 2
As you can see, the calculated column intends to show the difference between the values for Mountain Bikes in each year and those in 2002. Whereas the value of the first term in the expression ([o3man:Mountain Bikes]) varies with the evaluation in every row, (as no path is defined as second parameter), the second term ([o3man:Mountain Bikes, 2002]) remains fixed in all evaluations and corresponds to the indicated cell. (2861)
The complete [o3man: ] operator syntax is then:
 '['<path1> [o3man:,<path2>] ']' |
where path1 is a path in the current axis, (that is the one on which the calculated row or column is being calculated) and path2 is a path on the other axis.
Accessing Ranges of Values.
So far we have seen how it is possible to access the value of a cell from the expression of a calculated row or column through the [o3man: ] operator using one path of labels (or two) as parameter(s) .In all cases, paths referred to elements in the innermost level in the dimensions embedding, and that as a consequence referred to a specific row or column in the table.
However, it is possible to use a path referred to an element not in the innermost level of the embedding, as a parameter. It is clear that in this case such element does not determine a unique row or column in the table. We say then that the path defines a range of values.
In the following example if the path B Team is used in the definition of a calculated column, it will refer, as seen, to a range of values (those corresponding to elements 2001, 2002, 2003, and 2004) within the row for which the expression is being evaluated.
Therefore, a range of values is defined by the values of all rows or columns (depending on what axis the element is) grouped within the element indicated by the path.
The [o3man: ] operator applied to a range of values allows users to evaluate that range accumulating its values. The default accumulation is the sum of all values in the range.
In the following example, the calculated column B Sales has been defined by the following expression:
[o3man:B Team] |
Picture 3
The value of the calculated column in a given row, (for example 2467 in the second row), is obtained by applying the [o3man: ] operator to the range of values defined by B Team.
As the default accumulation when applying [o3man: ] to a range is the sum, the calculated value is the sum of all the elements in the range. (320 + 470 + 748 + 929 = 2467).
In the following example we can appreciate how the concept of range of values and the special identifier group allow us to define a totals column in a very simple way. The expression used for the Total column in this case is:
[o3man:group] |
Picture 4
As mentioned above, the special identifier group represents the group within which the calculated row or column is being defined. In this case, as the group was not followed by any element in particular, no reference is being made to a specific column, but to a range of values. (those determined by the values of the elements in the group 2001, 2002, 2003 and 2004).Then, the accumulation applied is the default sum.
In this example, we can clearly see that the result would be the same if the calculated column were defined by the expression:
[o3man:root]
The following example shows a somewhat more complex and interesting case, about the use of ranges, the [o3man: ] operator accumulation and the special identifiers group, this, and parent. The Share column was defined by the expression:
[o3man:group] / [o3man:group, this.parent] * 100 |
Picture 6
In the first place it is necessary to comment what it is that the Share column calculates. The idea is to calculate the share of each one of the categories of Customers (Medium Accounts, Major Accounts, and Others) in the total of each Product family.( Route Bikes and Mountain Bikes).
Then, the value of the calculated column in a given row (for example 74 on the 4th row) is obtained dividing the row total, that is the total in the corresponding Customers category for the corresponding Products family (Major Accounts, Route Bikes in the case of the second row: 695 + 940 + 1159 + 1442 = 4236), by the corresponding total for the Products category (Route Bikes in the case of the second row that sums 5724).
Secondly, we have to see how this values have been obtained using ranges of cells and the identifiers group, this, and parent.
The numerator of the expression is not different from the previous example where a column with totals is obtained using the expression [o3man:group].
However, the denominator bears some more interesting concepts. The same path as in the numerator has been used (that is, group) so as to obtain the total for the four years (2001, 2002, 2003 and 2004) but in order to extend          the range of values to consider a second path was added as a parameter.
We have already seen how to use a second path as a parameter for the [o3man: ] operator to fix the value of cell to a given row or column. In this case a path that defines a range of values on the opposite axis to the one where the calculated element is defined, is being specified as second parameter.
The range in the rows was defined using the path this.parent so that the range will take not only the Customers category corresponding to the evaluation position of each value in the Share column, but also the Products one.
When the this identifier is used in a path that refers to the opposite axis to the one where the calculated element is being defined (in this case the rows), it represents the position where each value is being evaluated and so by doing this.parent we obtain Route Bikes or Mountain Bikes
So far the value a range of values evaluates, has been the sum of each one of the values as that is the default accumulation applied when using the [o3man: ] operator with a range. However, there are a number of functions that enable the evaluation of range of values in different ways.
Functions applied to a range of values
Name in English |
Name in Spanish |
Action |
Sum([o3man:<path>]) |
Sum([o3man:<path>]) |
It adds all the values in the range. (idem to[o3man:<path>]) |
Avg([o3man:<path>]) |
Prom([o3man:<path>]) |
It calculates the average of all values in the range. |
Max([o3man:<path>]) |
Max([o3man:<path>]) |
It calculates the Maximum of all the values in the range. |
Min([o3man:<path>]) |
Min([o3man:<path>]) |
It calculates the Minimum of all the values in the range. |
Prod([o3man:<path>]) |
Prod([o3man:<path>]) |
It multiplies all the values in the range. |
Count([o3man:<path>]) |
Cantidad([o3man:<path>]) |
It returns the number of values in the range. |
In the following example we can see the use of the accumulation function Avg(). The expression used to define the calculated row Average is:
Avg([o3man:group]) |
Picture 7
As we can see, the calculated row shows the average of the different countries instances from the group in which it is defined, which is referred in this case by the special identifier group.
It is relevant to comment that one interesting characteristic of this calculated row added to the dimension Products is that in the way it has been defined it will very well support drilling operations. We can change the dimension Location for another one, drill down in Location or in Products and the calculated row will always be meaningful.
It is generally recommended that, at the time of defining calculated rows or columns, special attention is paid to their behavior in the face of typical drilling operations.
In the case one expression in a calculated row or column refers to elements which are not available on the axes, it will return NaN and this can happen in general after a drilling operation and when faced to an expression which is not prepared to support it.
The function leaf(exp) which can be appended at the end of a path, is related to the managing of ranges. When the path to specify defines a range of values, it is possible to access each one of the values in the range through the leaf(exp) function.
This function receives a value (or an expression evaluating a value) as a parameter. This value is used as an index in the range of values. The numbering of the values in the range starts in 0 (zero)
This function can be particularly useful when it is applied with the iteration functions such as @Sum, @Avg, etc.
Reference to other calculated elements in the expressions.
It is possible to access a calculated element from an expression defining a calculated row or column. To access the values of that calculated element, follow the same name reference scheme we have seen so far.
Once the calculated elements have been created they become yet another element, which is possible to access specifying the right path just like any other element. The only difference to point out is that when a range is defined, it does not include the calculated elements there could be in it.
In the following example, we originally have a calculated row Total Year that calculates the total for each year and two calculated columns were created. The first one Total Prod calculates the total for every product line and the second one Share calculates the share of each product line in the total, for which the following expression is used:
 [o3man:"Total Prod"] / [o3man:"Total Prod", "Total Year"] * 100 |
Picture 8
The value of the calculated column in a given row, is then obtained from dividing the value of the calculated column Total in that row by the value of the cell [o3man:Total Prod,Total Year].
We can see that the expression in the Share column above could be re-written in any of the following ways:
[o3man:"Total Prod] / [o3man:root, "Total Year"] |
In the following example it can be seen how the calculated column Partial Share shows the share of each type of customer within each product line. To do so, the expression used in the definition of the calculated column is:
[o3man:group] / [o3man:group, "Total Prod"] |
                                                                                       Picture 9
Accumulation of calculated values
The calculated values accumulation facility allows users to create calculated rows or columns where each cells value is calculated adding the result of evaluating the expression in that cell and the value of the previous cell.
In the example we can see two calculated columns. The first one shows the total in each row (Total) and the second one shows the accumulated total in each row (Acum). The expression used for both calculated columns is the same:
[o3man:group] |
and for the expression in the Acum column it was stated that it should be accumulated.
Picture 10
The value of each calculated column in a given row is then obtained by applying the expression ([o3man:this]) to the row and adding the value of the column in the previous row.
To indicate that an expression must accumulate its values, you must open the expression definition dialogue box.
Picture 11
If there are embedded dimensions in the opposite axis to the one where the calculated row or column is being defined, there is somewhat more flexibility. In the following example there are two embedded dimensions in the rows (Products and Customers) so at the moment of defining an accumulation in one calculated column, we may be interested in accumulating all the rows down to the total, or accumulating the rows within each product family.
So, when it is stated that a calculated row or column must accumulate, and if there are embedded dimensions on the opposite axis to the one where the row or column is defined, the level up to which the accumulation is made (cut) can also be stated. The default value Axis indicates no cut is made, and contrary to this, which of the embedded dimension the cut should be made on, should be selected.
The following two examples correspond exactly to the same expression ([o3man:group]), defined in both cases to accumulate, but with different cut levels.
The Acum All column has no cut level (the same as saying it has Root for a cut level):
Picture 12
The Acum Prod column has the Products dimension for a cut level:
Picture 2
Referencing through the labels of elements in the dimensions
In some cases when adding a calculated column or row, it can occur that the different values in it must vary according to the element currently working on.
(label([o3man:Total, this.parent], "Products") =="Route Bikes") |
In the following example, the Adjusted Total calculated column, is calculated on the Total column, multiplying by an adjustment coefficient. This coefficient is not the same for all the values in the column, but it varies according to the product family for which the value is being calculated. The expression used in this case is:
The value of the calculated column in a given row is obtained from multiplying the value of Total for the row by the coefficient 0.90. The determination of the coefficient 0.90, is the result of searching the Products dimension for the corresponding label for the row, through the function label ().
It is possible, then, to access the label or some of the other values of the elements corresponding to a given cell for the different dimensions.
Picture 3
Functions that refer to the labels of elements
Name in English |
Name in Spanish |
Key('['<path>, [o3man:<path>]']', "<dimension>" |
Clave('['<path>, [o3man:<path>]']', "<dimension>") |
Label('['<path>, [o3man:<path>]']', "<dimension>") |
Etiqueta('['<path>, [o3man:<path>]']', "<dimension>") |
LongLabel('['<path>, [o3man:<path>]']', "<dimension>") |
EtiquetaLarga('['<path>,[o3man:<path>]']', dimension>") |
Description('['<path>,[o3man:<path>]']', "<dimension>") |
Descripcion('['<path>,[o3man:<path>]']', "<dimension>") |
The first parameter specifies the cell you wish to refer to, and the second parameter specifies the dimension the label, long label or description to be obtained.
It is possible to use these functions to access the values of elements in dimensions not on the axes, but being filtered. In those cases, for any cell indicated as first parameter, the values of elements being filtered for the specified dimension will be obtained.(If no filter has been applied it returns the name of the dimension.)
The next one is another example of how to use these functions. In this case two calculated rows have been added. One of them that adds up Route Bikes and the other which adds up Mountain Bikes. For the expressions of these rows, the @Sum iteration function and the leaf() function, as part of the path were used. The expressions used are respectively:
@Sum_i(label([o3man:group.leaf], "Products")=="Mountain Bikes" |
Picture 4
The value of each of the calculated rows in a given column, are obtained by adding up those rows corresponding to the product family one wishes to consider in the sum. To decide if a row must be considered or not, you have to access each cells label in the Products dimension through the label () function.
Defining and updating constants
Using constants in the definition of calculated rows and columns allows users to parameterize the calculated values. Through the dynamic change of constants values it is possible to perform what if type analysis in the table. In the light of changing the values of one or more constants, the calculated values depending on them will be re-calculated, enabling users to analyze the results brought about by the changes.Â
Constants definition is made from the Constants Definition dialogue box, to which you get through the Show Parameters in the context menu that is dropped down when right-clicking the background of the table.
Picture 5
When adding a new constant to the list, its name, value, and type should be defined. The value of any constant can be changed at any time from the same dialogue box and the Apply button will re-calculate the rows or columns depending on the modified value.
In order to access the values of the constants of the calculated rows or columns from calculated row or column defining expressions we have the following function:
ValueC("<name>") |
We must take into consideration that the ValueC() function can evaluate String or Double depending on the constant type you access.
The list of constants is associated to the current view and will be saved together with any view that is saved.
Managing User-Defined Functions
Once defined, user functions can be modified or deleted.
To modify a function:
- Choose the Options entry in the Tools menu. The Options dialogue box appears.
- Select the User Functions Pane.
- Press Modify. The Expressions Editor dialogue box appears.
- Modify the function.
- Press OK. Display goes back to the Options dialogue box.
- Press OK. Display goes back to the O3 Browser
To delete a function:
- Select the Options entry in the Tools menu. The Options dialogue box appears.
- Choose the User Functions pane.
- Select a function on the list of User-defined functions.
- Press Delete. The function is eliminated and the list is updated.
- Press OK. It returns to the O3 Browser.
Setting the width of columns in tables
When viewing queries in table format, it is important that the width of columns is adjusted to the values they contain. O3 Browser lets the user choose options that define the way to perform this adjustment to make data analysis easier.
Width calculation operations are performed on the columns containing values (including the title) and on columns containing labels of the dimensions on the series axis.
 You may modify the options to calculate column width following these steps:Â
- Choose the Options entry from the Tools menu to display the calculated functions, format change and table styles setup dialogue box,
- Select the Table Options tab shown in the following picture
Picture 6: Options to configure column width in tables
- Make the desired changes (See Column Width Options Setup )
- Confirm changes with the Apply button to continue modifying options or with the OK button to go back to the O3 desktop. You can undo the changes with the Cancel button.Â
Column Width Options Setup
The following setup criteria let you define a convenient behavior that facilitates the viewing of the values shown in O3 Tables, at the same time the user performs several queries.
Setup options for Column Width let you:Â
- State when column width is recalculated.
- State what elements column width is calculated on
- Choose the size determination criteria for columns.
Automatic adjustment of column width
You may have table column width automatically adjusted each time a new query is made, by selecting the option Calculate column width after every operation.Â
Otherwise, the adjustment will have to be manual. In order to do so, the user will have to:Â
- Right-click on any element in the table to display the menu.Â
- Choose the Adjust Column Width option for the adjustment operation to be performed.Â
Scope for title adjustment
When there are embedded columns in the grid, we may not want to adjust the width of all the titles of the dimensions. On the contrary, it may well happen that one of the dimensions has very long elements and not the next one, so it wouldn't be easy to determine the most adequate width to display data.
Consequently, O3 gives you two options:
- Adjust all labels: the widths of value cells and the cells of all the titles of the embedded dimensions as columns are recalculated.
- Adjust only lower level labels: the widths of value cells and the cells of the titles corresponding to the innermost dimension are recalculated.  Â
Column widths for cells corresponding to titles of embedded dimensions in the Y-axis are always recalculated independently from the chosen option.Â
Cell adjustment Mode
To offer greater flexibility in column width specification, the following adjustment mode options are presented.
- Use maximum width: The width of all columns is determined according to the biggest size found, including value cells and titles.Â
- Use average width: The width of all columns is determined according to the average width of all columns, including value cells and column tittles.Â
- Maximum column width: The width is determined according to the number of characters specified.   Â
About the Format of Elements in the Tables
O3 Browser allows users to change the format of the different elements in the table by modifying:
- The Font type, style, color and size.
- The background color.
- The horizontal and vertical alignment.
For those values in the table representing numerical values, the following can be modified:
- The number of decimal digits.
- The thousands separator
- Symbols before or after figures.
- Labels for non-numeric values.
- The determination of negative names by means of , (minus symbol), alignment, color, bold or italic.
The format definitions indicated can be saved and a new style name be assigned to them, to re use them later on.
It is possible to define formats for the following elements in a table.
Element |
Format applied to: |
Dimension Headers |
Buttons representing each one of the dimensions on an axis. |
Total and Calculated values |
The values corresponding to rows and columns or to the Totals displayed |
Selection of Total and Calculated values |
Currently selected Total and calculated values. |
Total and calculated elements. |
Elements that form the headers of calculated rows and columns or that belong to the totals displayed. |
Selection of total and calculated elements |
Currently selected Total and calculated elements |
Values |
Values appearing in the table, unless you wish to use the format defined for each measure. |
Selection of values |
Currently selected values, |
Dimension Elements |
Elements included in the headers of the rows and columns, that is, the elements that form the dimensions. |
Selected Dimension Elements |
The currently selected dimension values. |
Defining the Format of Elements
From the Tools menu, it is possible to modify the format of the different elements in the table, selecting the Options item on that menu. For each element, it is possible to:
- Define the Font Type, Size and Alignment
- Select a pre-defined Font and Paper color or to create a customized color.
- Define the numerical value format
- Reset the default format
- Apply an existent style to an element
- Change the grid background color in the table.
In order to define the format:
- Choose Tools | Options. The Options dialogue box appears.
- Select the Table Format pane
- In the list Set format of, choose an element.
- Press Format. The Format dialogue box appears.
- Define the format following the instructions below.
- Press OK. Display goes back to the O3 Browser desktop.
To define the font type, size and alignment:
- Select the Font pane
- Choose a font type from the font list.
- Choose a font size from the Size list.
- Select the Alignment pane
- To define a horizontal alignment, choose the button with the corresponding option. (Left, Center, or Right)
- To define a vertical alignment, choose the button with the corresponding option (Top, Center, Bottom)
- Press OK. The format is saved and display returns to the Options dialogue box.
To select a font or predetermined background color, or to create a customized color:Â
- Select the Fonts panel
- Choose if you want to customize the font color or the background color
- Choose a color:
- Choose a color from the predefined ones. Display returns to the Format dialogue box.
- If the predefined colors do not include the desired color you may configure it from the HSB of RGB panels. Â
- Press OK. Display returns to the Format Dialogue boxÂ
Picture 7: Dialog box to define table format
Picture 8: Color configuration panel
To define the Numerical values Format:
- Select the Value pane
- In the Decimal digits box, enter the number of decimal digits you wish to display.
- Choose if the thousand separator is to be shown or not
- Choose if you wish to display symbols or not, such as currency or percentage ones.
- Choose where the selected symbol is to be displayed.(after number / before number)
- In the Show not numbers as box, enter the text to be displayed when a value is not a number.
- In the Format group dialogue box choose the format option for negative numbers.
- In the Align group dialogue box, choose the desired alignment.
- To show negative numbers in a different color, the desired color must be selected through the options in the Color button.
- Choose the format for negative numbers according to the options available in the corresponding box.
- Press OK
Picture 9: Dialogue box to define a new style
To modify the font color or the background grid color in a table:
- Press the Font Color button or the Background Grid Color button. The Colors dialogue box appears.Â
- Select a color from the options given in the corresponding dialogue box.
Resetting the Default Format of Elements.
At any time it is possible to go back to the initial format of the elements in the table.
To reset the default format:
- Select the Options entry in the Tools menu. The Options dialogue box appears.Â
- Select the Grid view Format pane
- In the Set format of list, select one element.
- Press the "Use measure default format" button. The format is updated to the default values.
- Press OK. Display goes back to the O3 Browser desktop.
Managing Styles
O3 Browser allows you to define styles, to be applied to any element in the table.
To define a style:
- Select Options in the Tools menu. The Options dialogue box is updated
- Select the Styles panel or Select the Table Format pane.
- Press the New button. The New Style dialogue box appears.
- Enter a style name.
- Press Format. The Format dialogue box appears.
- Change the format properties. For more information, see Defining the Format of Elements.
- Press OK. You go back to the New Style dialogue box.
- Press OK. You are taken back to the Options dialogue box. The list of Styles is updated.
- Press OK. You go back to the O3 Browser desktop.
To change a style:
- Choose Options in the Tools menu. The Options dialogue box appears.
- Select the Styles pane
- Select one style from the list.
- Press Modify. The Format dialogue box appears.
- Change the format properties. For more information, see Defining the Format of Elements.
- Press OK. The style is updated and you go back to the Options dialogue box.
- Press OK. You go back to the O3 Browser desktop.
To delete a style:
- Select Options from the Tools menu. The Options dialogue box is updated.
- Choose the Styles pane.
- Select the style you want to delete from the list.
- Press Delete. The style is deleted and the list is updated.
- Press OK. You go back to the O3 Browser desktop.
The User-defined styles are saved in the O3 Browsers settings file.
To apply an existing style to an element:
- 'Select Options in the Tools menu. The Options dialogue box is updated
- Select the Table view Format pane.
- Select one element from the Establish format of list.
- Select the desired style from the Style list. The elements print preview is updated.
- Once you have applied all desired styles, press OK to go back to the O3 Browser desktop.