Difference between revisions of "Tutorial/OLAP example"

From TempusServa wiki
Jump to navigation Jump to search
old>Admin
m (20 revisions imported)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Example ==


=== Cube definition ===
We have a solution
* Change management [changemanagement]


  <Cube name="sample1cube">
The solution contains the following lookup fields
    <Table name="data_changemanagement"/>
* Scope [TYPE]
    <Dimension name="Scope" foreignKey="TASKTYPE">
* Type [TASKTYPE]
      <Hierarchy hasAll="true" primaryKey="LookupID">
      <Table name="formfieldlookup"/>
        <Level name="Type" column="Value" uniqueMembers="true"/>
      </Hierarchy>
    </Dimension>
    <Dimension name="Type" foreignKey="TYPE">
      <Hierarchy hasAll="true" primaryKey="LookupID">
      <Table name="formfieldlookup"/>
        <Level name="Type" column="Value" uniqueMembers="true"/>
      </Hierarchy>
    </Dimension>
    <Dimension name="Status" foreignKey="StatusID">
      <Hierarchy hasAll="true" primaryKey="StatusID">
      <Table name="formstatus"/>
        <Level name="Type" column="Status" uniqueMembers="true"/>
      </Hierarchy>
    </Dimension>
    <Dimension name="Period" type="TimeDimension">
      <Hierarchy name="Periode" hasAll="true" allMemberName="All period">
        <Table name="data_changemanagement"/>
        <Level name="Aar" levelType="TimeYears" uniqueMembers="true">
          <KeyExpression>
            <SQL dialect="mysql">Year(CreatedAt)</SQL>
            <SQL dialect="generic">YEAR</SQL>
          </KeyExpression>
        </Level>
        <Level name="Kvartal" uniqueMembers="false" levelType="TimeQuarters">
          <KeyExpression>
            <SQL dialect="mysql">Quarter(CreatedAt)</SQL>
            <SQL dialect="generic">Quarter</SQL>
          </KeyExpression>
        </Level>
        <Level name="Maaned" uniqueMembers="false" levelType="TimeMonths">
          <KeyExpression>
            <SQL dialect="mysql">Month(CreatedAt)</SQL>
            <SQL dialect="generic">Month</SQL>
          </KeyExpression>
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="Revision" column="Revision" aggregator="sum" formatString="Standard"/> 
    <Measure name="Estimate" column="ESTIMATTIMER" aggregator="sum" formatString="Standard"/> 
    <Measure name="Realized" column="REALISERETTIMER" aggregator="sum" formatString="Standard"/> 
  </Cube>


=== MDX query ===
It also has some decimal values
   select
* Estimate [ESTIMATE]
    NON EMPTY {[Measures].[Estimate]} ON COLUMNS,
* Realized [REALIZED]
    NON EMPTY {([Period],[Type],[Status])} ON ROWS
 
  from [sample1cube]
In our reporting we want to see distributions by
* A period hierachy: Year / Quarter / Month
* Categorieres by Scope, Type and Status
 
== Setting up the cube ==
 
A new OLAP cube is set up in:
"Integration" > "OLAP cubes" > "Add"
 
 
=== Basic information ===
 
* Name display: sample1
* Cube header:  Report sample1
 
=== Cube definition ("Cube Schema XML") ===
 
For further help to designing schemas please refer to the following ressources
* http://mondrian.pentaho.com/documentation/schema.php
 
<syntaxhighlight lang="xml">
<Cube name="sample1cube">
  <Table name="data_changemanagement"/>
  <Dimension name="Scope" foreignKey="TASKTYPE">
    <Hierarchy hasAll="true" primaryKey="LookupID">
    <Table name="formfieldlookup"/>
      <Level name="Type" column="Value" uniqueMembers="true"/>
    </Hierarchy>
  </Dimension>
  <Dimension name="Type" foreignKey="TYPE">
    <Hierarchy hasAll="true" primaryKey="LookupID">
    <Table name="formfieldlookup"/>
      <Level name="Type" column="Value" uniqueMembers="true"/>
    </Hierarchy>
  </Dimension>
  <Dimension name="Status" foreignKey="StatusID">
    <Hierarchy hasAll="true" primaryKey="StatusID">
    <Table name="formstatus"/>
      <Level name="Type" column="Status" uniqueMembers="true"/>
    </Hierarchy>
  </Dimension>
  <Dimension name="Period" type="TimeDimension">
    <Hierarchy name="Periode" hasAll="true" allMemberName="All period">
      <Table name="data_changemanagement"/>
      <Level name="Aar" levelType="TimeYears" uniqueMembers="true">
        <KeyExpression>
          <SQL dialect="mysql">Year(CreatedAt)</SQL>
          <SQL dialect="generic">YEAR</SQL>
        </KeyExpression>
      </Level>
      <Level name="Kvartal" uniqueMembers="false" levelType="TimeQuarters">
        <KeyExpression>
          <SQL dialect="mysql">Quarter(CreatedAt)</SQL>
          <SQL dialect="generic">Quarter</SQL>
        </KeyExpression>
      </Level>
      <Level name="Maaned" uniqueMembers="false" levelType="TimeMonths">
        <KeyExpression>
          <SQL dialect="mysql">Month(CreatedAt)</SQL>
          <SQL dialect="generic">Month</SQL>
        </KeyExpression>
      </Level>
    </Hierarchy>
  </Dimension>
  <Measure name="Revision" column="Revision" aggregator="sum" formatString="Standard"/> 
  <Measure name="Estimate" column="ESTIMATTIMER" aggregator="sum" formatString="Standard"/> 
  <Measure name="Realized" column="REALISERETTIMER" aggregator="sum" formatString="Standard"/> 
</Cube>
</syntaxhighlight>
 
=== MDX query ("Cube Query MDX") ===
 
For further help to designing queries please refer to the following ressources
* http://technet.microsoft.com/en-us/library/ms145971.aspx
 
<syntaxhighlight lang="mysql">
SELECT
   NON EMPTY {([Measures].[Estimate],[Measures].[Realized])} ON COLUMNS,
  NON EMPTY {([Period],[Type],[Status])} ON ROWS
FROM [sample1cube]
</syntaxhighlight>
 
== Results ==
 
The cube is acccesed via this URL (or press "test" form the OLAP overview)
http://YOUR_DOMAIN/TempusServa/olapview.jsp?query=sample1
 
 
[[File:Sample_olap.PNG]]
 
[[File:Sample_olap_expanded.PNG]]

Latest revision as of 12:55, 10 December 2021

Example

We have a solution

  • Change management [changemanagement]

The solution contains the following lookup fields

  • Scope [TYPE]
  • Type [TASKTYPE]

It also has some decimal values

  • Estimate [ESTIMATE]
  • Realized [REALIZED]

In our reporting we want to see distributions by

  • A period hierachy: Year / Quarter / Month
  • Categorieres by Scope, Type and Status

Setting up the cube

A new OLAP cube is set up in: "Integration" > "OLAP cubes" > "Add"


Basic information

  • Name display: sample1
  • Cube header: Report sample1

Cube definition ("Cube Schema XML")

For further help to designing schemas please refer to the following ressources

<Cube name="sample1cube">
  <Table name="data_changemanagement"/>
  <Dimension name="Scope" foreignKey="TASKTYPE">
    <Hierarchy hasAll="true" primaryKey="LookupID">
    <Table name="formfieldlookup"/>
      <Level name="Type" column="Value" uniqueMembers="true"/>
    </Hierarchy>
  </Dimension>
  <Dimension name="Type" foreignKey="TYPE">
    <Hierarchy hasAll="true" primaryKey="LookupID">
    <Table name="formfieldlookup"/>
      <Level name="Type" column="Value" uniqueMembers="true"/>
    </Hierarchy>
  </Dimension>
  <Dimension name="Status" foreignKey="StatusID">
    <Hierarchy hasAll="true" primaryKey="StatusID">
    <Table name="formstatus"/>
      <Level name="Type" column="Status" uniqueMembers="true"/>
    </Hierarchy>
  </Dimension>
  <Dimension name="Period" type="TimeDimension">
    <Hierarchy name="Periode" hasAll="true" allMemberName="All period">
      <Table name="data_changemanagement"/>
      <Level name="Aar" levelType="TimeYears" uniqueMembers="true">
        <KeyExpression>
          <SQL dialect="mysql">Year(CreatedAt)</SQL>
          <SQL dialect="generic">YEAR</SQL>
        </KeyExpression>
      </Level>
      <Level name="Kvartal" uniqueMembers="false" levelType="TimeQuarters">
        <KeyExpression>
          <SQL dialect="mysql">Quarter(CreatedAt)</SQL>
          <SQL dialect="generic">Quarter</SQL>
        </KeyExpression>
      </Level>
      <Level name="Maaned" uniqueMembers="false" levelType="TimeMonths">
        <KeyExpression>
          <SQL dialect="mysql">Month(CreatedAt)</SQL>
          <SQL dialect="generic">Month</SQL>
        </KeyExpression>
      </Level>
    </Hierarchy>
  </Dimension>
  <Measure name="Revision" column="Revision" aggregator="sum" formatString="Standard"/>   
  <Measure name="Estimate" column="ESTIMATTIMER" aggregator="sum" formatString="Standard"/>   
  <Measure name="Realized" column="REALISERETTIMER" aggregator="sum" formatString="Standard"/>   
</Cube>

MDX query ("Cube Query MDX")

For further help to designing queries please refer to the following ressources

SELECT
  NON EMPTY {([Measures].[Estimate],[Measures].[Realized])} ON COLUMNS,
  NON EMPTY {([Period],[Type],[Status])} ON ROWS
FROM [sample1cube]

Results

The cube is acccesed via this URL (or press "test" form the OLAP overview) http://YOUR_DOMAIN/TempusServa/olapview.jsp?query=sample1


Sample olap.PNG

Sample olap expanded.PNG