Share via


Drilling Through

It is often useful to retrieve the actual database rows that underlie a particular tuple. OLE DB for OLAP supports this action through a capability known as DRILLTHROUGH. For example, in this statement:

DRILLTHROUGH SELECT {[Unit Sales]} ON COLUMNS,
{[Time].{[1997].[Q1]} ON ROWS
FROM Sales
WHERE [Seattle]

the SELECT statement might return the following cellset:

Unit Sales

Q1

25

The underlying rowset might have the following rows, which contain the data underlying the specified cell:

ID

Date

Product

Location

Unit sales

Price

25678

1/5/1997

Tractor

Seattle

3

5000

34566

2/3/1997

Tractor

Seattle

5

6000

34700

2/7/1997

Truck

Seattle

15

15000

35110

2/27/1997

Bulldozer

Seattle

2

30000

The syntax of DRILLTHROUGH is as follows:

<drillthrough> ::= DRILLTHROUGH [MAXROWS <numeric_value_expression>] <select_statement>

In the example above, <select_statement> specified a single cell. The provider can choose to support select statements that return more than one cell, but it is not required to. Except for that restriction, the <select_statement> can be any valid MDX query.

If the MAXROWS clause is specified, the number of rows returned is limited to a maximum value specified by <numeric_value_expression>.

The provider might not support drill-through on all cubes. The client application should query the CUBES schema rowset and examine the DRILLTHROUGH property to determine whether it is available.