Understanding BNF Notation

The MDX grammar rules for Essbase are presented using Backus-Naur Form (BNF) syntax notation throughout this documentation. Learning to read BNF will help you understand MDX syntax as you write statements or formulas to help you with Essbase analysis and data extraction.

This section briefly explains the meaning of symbolic notations used to describe grammar in this MDX documentation. The following table of conventions is not a complete description of BNF, but it can help you read the grammar rules presented in this document.

Table 4-2 BNF Notation Elements

Symbol Description Example

<word>

(A word in angle brackets.)

The word presented in angle brackets is not meant to be literally used in a statement; its rules are further defined elsewhere.

When reading the following syntax,

SELECT <axis-specification> ...

you know that axis-specification is not meant to be typed literally into the statement. The rules for axis-specification are further defined in the documentation (look for <axis-specification> ::= to get the definition).

<word> ::=

(A word in angle brackets, followed directly by the symbol ::=)

A definition, or BNF "production." The symbol ::= can be interpreted to mean "is defined as."

The word referred to elsewhere as the placeholder <word> is defined here, directly following <word> ::=.

The following syntax tells you that a tuple is defined as either one member in parenthesis, or two or more comma-separated members in parenthesis.

<tuple> ::= 
'(' <member> [,<member>]... ')'
        

|

The pipe symbol or "OR" symbol.

Precedes alternatives. The symbol | can be interpreted to mean "or."

The following syntax:

ON COLUMNS|ROWS|PAGES|CHAPTERS|SECTIONS

can be used to build any of the following literal statement parts:

  • ON COLUMNS

  • ON ROWS

  • ON PAGES

  • ON CHAPTERS

  • ON SECTIONS

WORD

(Text in all caps.)

A query-grammar keyword, to be typed literally.

When reading the following syntax,

SELECT <axis-specification> ...

you know that SELECT is a keyword, and therefore should be typed literally into its proper location in the statement.

[<word>] or [word] or[WORD]

(Square brackets enclosing some word or item.)

An optional element.

In the following high-level query syntax,

[<with_section>]
SELECT [<axis_specification>
 [, <axis_specification>...]]
FROM [<cube_specification>]
[WHERE [<slicer_specification>]]
                

everything, technically, is optional except for SELECT and FROM. Therefore, a query containing only the words

SELECT FROM

would in fact be valid; however, it would select one consolidated data value from its best estimate of a cube context, which might not be very useful.

[, <word>...]

(A comma, a word, and an ellipsis, all enclosed in square brackets.)
You can optionally append a comma-separated list of one or more <words>.

The following syntax

SELECT [<axis_specification>
 [, <axis_specification<...]]

indicates that multiple, comma-separated axis specifications can optionally be supplied to the SELECT statement.