Previous Page | Next Page

ARM and SAS OLAP Server

Understanding the ARM Records Written for SAS OLAP Server

The initialization and termination records give you summary information for each SAS OLAP Server session. The ARM records for the SAS OLAP Server are written to the SAS logging facility or the ARM log. The following explains the output:

I (initialization) record

is an initialization record, with one record written per SAS OLAP Server invocation when the ARM subsystem is initialized. It starts with an I, followed by:

  • the SAS datetime value of the SAS OLAP Server invocation

  • an application ID

  • a user CPU (start) time

  • a system CPU (start) time

  • an application name (OLAP_SERVER)

Output:

I,1320592800.822000,2,0.380547,0.630907,OLAP_SERVER,
E (end) record

is a termination record, with one record written per SAS OLAP Server termination. It starts with an E, followed by:

  • the SAS datetime value of the SAS OLAP Server termination

  • the application ID from the I record

  • a user CPU (stop) time

  • a system CPU (stop) time

Output:

E,1320592802.805000,2,1.281843,0.791137

Note:   The E records are written for the OLAP_SESSION transaction, which records each SAS OLAP Server session that is started by a client connection. The E records provide the user ID of the client user that started the SAS OLAP Server session.  [cautionend]

G (GetID) record

is an OLAP_SESSION transaction record, with one record written per SAS OLAP Server invocation. It starts with a G, followed by:

  • the SAS datetime value when the record was written

  • the application ID from the I record

  • a transaction class ID

  • a transaction class name (OLAP_SESSION)

  • a transaction class description (OLAP Session)

  • a description of the values that are provided in subsequent S (start) and P (stop) records

Output:

G,1337615817.801000,2,1,OLAP_SESSION,OLAP Session,User Name,LongStr 

Note:   User Name is the user ID of the client user that started the SAS OLAP Server session.  [cautionend]

S (start) record

is a start record, with one record written for each SAS OLAP Server session. It starts with an S, followed by:

  • the SAS datetime value when the SAS OLAP Server session started

  • the application ID from the I record

  • the transaction class ID from the G record

  • a transaction ID

  • a user CPU (start) time

  • a system CPU (start) time

  • the user ID of the client user

Output:

S,1337615818.502000,2,1,2,2.52952,0.901296,sasabc
P (stop) record

is a stop record, with one record written for each SAS OLAP Server session. It starts with a P, followed by:

  • the SAS datetime value when the SAS OLAP Server session ended

  • the application ID from the I record

  • the transaction class ID from the G record

  • the transaction ID from the associated S record

  • a user CPU (stop) time

  • a system CPU (stop) time

  • the status 0=OK

Output:

P,1337615819.383000,2,1,2,2.113038,0.931339,0
U (update) record

is an update record, with one record written for each hierarchy in each OLAP cube. The U record for the OLAP_SESSION transaction is written only when the DATA_QUERY transaction occurs. It starts with a U, followed by:

  • the SAS datetime value when the record was written

  • the application ID from the I record

  • the transaction class ID from the G record

  • the transaction ID from the S record

  • a user CPU time

  • a system CPU time

  • a buffer type (always 2, which indicates that 1,024 bytes of text follows)

  • a string with the following format:

    • char(32) cube name

    • char(4) hierarchy number--used in the DATA_QUERY update record to identify region and aggregation

    • char(32) hierarchy name

    • char(4) number of hierarchy levels

    Output:

    U,1355324046.943000,2,1,2,1.625000,2.15625,2,SALES   1CUSTOMER  4
    U,1355324046.943000,2,1,2,1.625000,2.15625,2,SALES   2PRODUCT   5
    U,1355324046.943000,2,1,2,1.625000,2.15625,2,SALES   3TIME      4

The following records are written for MDX_QUERY transactions, which log each query that is sent to the OLAP cube. These records provide the cube name and the size of the result set in cells:

G (GetID) record

is an MDX_QUERY transaction record, with one record written per SAS OLAP Server invocation. It starts with a G, followed by:

  • the SAS datetime value when the record was written

  • the application ID from the I record

  • a transaction class ID

  • a transaction name (MDX_QUERY)

  • a transaction description (MDX Query)

  • a description of the values that are provided in subsequent S or C (start) and P (stop) records

Output:

G,1320594857.747000,3,2,MDX_QUERY,MDX Query,Result Set Size,Gauge32,
   Cube Name,LongStr

Note:   Result Set Size is the size of the result set in cells. Cube Name is the name of the cube that is being queried.  [cautionend]

S or C (start) record

is a start record, with one record written for each MDX_QUERY transaction. It starts with an S, followed by:

  • the SAS datetime value when the MDX_QUERY started

  • the application ID from the I record

  • the transaction class ID from the G record

  • a transaction ID

  • a user CPU (start) time

  • a system CPU (start) time

Output:

S,1320594857.787000,3,2,2,1.341929,0.731051

If the OLAP_SESSION level was also requested, then the MDX_QUERY transaction record is correlated to its parent session record, and starts with a C, followed by:

  • the SAS datetime value when the MDX_QUERY started

  • the application ID from the I record

  • the transaction class ID from the G record

  • a transaction ID

  • the parent transaction class ID

  • the parent transaction ID

  • a user CPU (start) time

  • a system CPU (start) time

Output:

C,1320594857.787000,3,2,2,1,2,1.341929,0.731051
P (stop) record

is a stop record, with one record written for each MDX_QUERY transaction. It starts with a P, followed by:

  • the SAS datetime value when the MDX_QUERY ended

  • the application ID from the I record

  • the transaction class ID from the G record

  • the transaction ID from the associated S or C record

  • a user CPU (stop) time

  • a system CPU (stop) time

  • a status (0=OK, 2=query failed)

  • the size of the result set in cells

  • the name of the cube that was queried

Output:

P,1320594858.948000,3,2,2,2.52952,0.781123,0,5,MDDBCARS

The following records are written for DATA_QUERY transactions, which log each region execution (that is, each data retrieval from stored OLAP cube aggregations or from the cache). The following records provide region IDs, aggregate IDs, the number of returned records, the source type, and the thread index. The DATA_QUERY transaction is the primary input for both automatic and manual cube optimization.

G (GetID) record

is a DATA_QUERY transaction ID record, with one record written per SAS OLAP session. It starts with a G, followed by:

  • the SAS datetime value when the record was written

  • the application ID from the I record

  • a transaction class ID

  • the transaction name (DATA_QUERY)

  • the transaction description (Plug-in Call)

  • a description of the values that are provided in subsequent S or C (start) and P (stop) records. The values are:

    • query aggregate

    • source aggregate

    • result set size

    • source type

    • thread index

    • cube name

Output:

G,1359310645.798000,2,4,DATA_QUERY,Plugin Call,Query Aggregate,Id32,Source 
   Aggregate,Id32,Result Set Size,Gauge32,Source Type,Id32,Thread Index,
   Gauge32,Cube Name,LongStr
S or C (start subquery) record

is a start subquery record, with one record written for each data access. It starts with an S, followed by:

  • the SAS datetime value when the subquery started

  • the application ID from the I record

  • the transaction class ID from the G record

  • a transaction ID

  • the CPU (start) time

  • the system CPU (start) time

Output:

S,1320596204.653000,2,2,2,1.51512,0.630907

If the MDX_QUERY level was also requested, then the DATA_QUERY transaction record is correlated to its parent MDX_QUERY record, and starts with a C, followed by:

  • the SAS datetime value when the subquery started

  • the application ID from the I record

  • the transaction class ID from the G record

  • a transaction ID

  • the parent transaction class ID

  • the parent transaction ID

  • a user CPU (start) time

  • a system CPU (start) time

Output:

C,1320596204.653000,2,2,2,1,1,1.51512,0.630907
P (stop subquery) record

is a stop subquery record, with one record written for each data access. It starts with a P, followed by:

  • the SAS datetime value when the subquery ended

  • the application ID from the I record

  • the transaction class ID from the G record

  • the transaction ID from the S or C record

  • a user CPU (stop) time

  • a system CPU (stop) time

  • a status (0=OK, 2=subquery failed)

  • a region sequential number (per update record)

  • an aggregation sequential number (per update record)

  • the size of the result set in records

  • the plug-in type (0=CSPDS, 1=CSAS, 2=CACHE, 3=MOLAP)

  • the thread index

  • the cube name

Output:

P,1320596205.485000,2,2,2,1.181699,0.670964,0,1,31,5,0,0,SALES
U (update) record

is an update record, with one record written for each new region and stored aggregation. It starts with a U, followed by:

  • the SAS datetime value when the record was written

  • the application ID from the I record

  • the transaction class ID from the G record

  • the transaction ID from the S record

  • a user CPU time

  • a system CPU time

  • a buffer type (always 2, which indicates that 1,024 bytes of text follows)

  • a string with the following format:

    • char(32) cube name

    • char(16) unique sequential number--used in the DATA_QUERY stop record to identify region and aggregation

    • char(4) number of hierarchies in the region or aggregation repeated for each hierarchy in the region or aggregate:

      • char(4) hierarchy number (per OLAP_SESSION update record)

      • char(3) hierarchy level

    Output:

    U,1355324092.960000,2,3,61,6.93750,5.734375,2,SALES   4  1  1  1

The following update record is written for the MDX_STRING transaction, which writes an additional record for the MDX_QUERY transaction. The record contains the actual MDX query string.

U (update) record

is an update record, with one record written for each MDX_STRING transaction. It starts with a U, followed by:

  • the SAS datetime value when the record was written

  • the application ID from the I record

  • the transaction class ID from the G record

  • the transaction ID from the S record

  • a user CPU time

  • a system CPU time

  • a buffer type (always 2, which indicates that 1,024 bytes of text follows)

  • the actual MDX string

Output:

U,1320589796.262000,2,1,1,0.670964,2,SELECT {[DATE].[DATEH].[ALL DATE].
CHILDREN} ON COLUMNS, {[MEASURES].[MEASURES].[SALES_SUM]} 
ON ROWS FROM MDDBCARS

When using the SAS logging facility and ARM 2.0, these records are written to ARM2.RECORD.

Previous Page | Next Page | Top of Page