648 lines
28 KiB
XML
Executable File
648 lines
28 KiB
XML
Executable File
<?xml version="1.0"?>
|
|
<!--
|
|
~ Copyright © 2005 - 2018 TIBCO Software Inc.
|
|
~ http://www.jaspersoft.com.
|
|
~
|
|
~ This program is free software: you can redistribute it and/or modify
|
|
~ it under the terms of the GNU Affero General Public License as published by
|
|
~ the Free Software Foundation, either version 3 of the License, or
|
|
~ (at your option) any later version.
|
|
~
|
|
~ This program is distributed in the hope that it will be useful,
|
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
~ GNU Affero General Public License for more details.
|
|
~
|
|
~ You should have received a copy of the GNU Affero General Public License
|
|
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
-->
|
|
|
|
<Schema name="FoodmartSchemaDerby2012">
|
|
<!--
|
|
== $Id: //open/mondrian/demo/FoodMart.xml#47 $
|
|
== This software is subject to the terms of the Common Public License
|
|
== Agreement, available at the following URL:
|
|
== http://www.opensource.org/licenses/cpl.html.
|
|
== (C) Copyright 2000-2005 Kana Software, Inc. and others.
|
|
== All Rights Reserved.
|
|
== You must accept the terms of that agreement to use this software.
|
|
-->
|
|
|
|
<!-- Shared dimensions -->
|
|
|
|
<Dimension name="Store">
|
|
<Hierarchy hasAll="true" primaryKey="STORE_ID">
|
|
<Table name="STORE"/>
|
|
<Level name="Store Country" column="STORE_COUNTRY" uniqueMembers="true"/>
|
|
<Level name="Store State" column="STORE_STATE" uniqueMembers="true"/>
|
|
<Level name="Store City" column="STORE_CITY" uniqueMembers="false"/>
|
|
<Level name="Store Name" column="STORE_NAME" uniqueMembers="true">
|
|
<Property name="Store Type" column="STORE_TYPE"/>
|
|
<Property name="Store Manager" column="STORE_MANAGER"/>
|
|
<Property name="Store Sqft" column="STORE_SQFT" type="Numeric"/>
|
|
<Property name="Grocery Sqft" column="GROCERY_SQFT" type="Numeric"/>
|
|
<Property name="Frozen Sqft" column="FROZEN_SQFT" type="Numeric"/>
|
|
<Property name="Meat Sqft" column="MEAT_SQFT" type="Numeric"/>
|
|
<Property name="Has coffee bar" column="COFFEE_BAR" type="Boolean"/>
|
|
<Property name="Street address" column="STORE_STREET_ADDRESS" type="String"/>
|
|
</Level>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Store Size in SQFT">
|
|
<Hierarchy hasAll="true" primaryKey="STORE_ID">
|
|
<Table name="STORE"/>
|
|
<Level name="Store Sqft" column="STORE_SQFT" type="Numeric" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Store Type">
|
|
<Hierarchy hasAll="true" primaryKey="STORE_ID">
|
|
<Table name="STORE"/>
|
|
<Level name="Store Type" column="STORE_TYPE" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Time" type="TimeDimension">
|
|
<Hierarchy hasAll="false" primaryKey="TIME_ID">
|
|
<Table name="TIME_BY_DAY"/>
|
|
<Level name="Year" column="THE_YEAR" type="Numeric" uniqueMembers="true"
|
|
levelType="TimeYears"/>
|
|
<Level name="Quarter" column="QUARTER" uniqueMembers="false"
|
|
levelType="TimeQuarters"/>
|
|
<Level name="Month" column="MONTH_OF_YEAR" uniqueMembers="false" type="Numeric"
|
|
levelType="TimeMonths"/>
|
|
</Hierarchy>
|
|
<Hierarchy hasAll="true" name="Weekly" primaryKey="TIME_ID"
|
|
defaultMember="[Time.Weekly].[All Time.Weeklys].[2012]">
|
|
<Table name="TIME_BY_DAY"/>
|
|
<Level name="Year" column="THE_YEAR" type="Numeric" uniqueMembers="true"
|
|
levelType="TimeYears"/>
|
|
<Level name="Week" column="WEEK_OF_YEAR" type="Numeric" uniqueMembers="false"
|
|
levelType="TimeWeeks"/>
|
|
<Level name="Day" column="DAY_OF_MONTH" uniqueMembers="false" type="Numeric"
|
|
levelType="TimeDays"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Product">
|
|
<Hierarchy hasAll="true" primaryKey="PRODUCT_ID" primaryKeyTable="PRODUCT">
|
|
<Join leftKey="PRODUCT_CLASS_ID" rightKey="PRODUCT_CLASS_ID">
|
|
<Table name="PRODUCT"/>
|
|
<Table name="PRODUCT_CLASS"/>
|
|
</Join>
|
|
<!--
|
|
-->
|
|
<Level name="Product Family" table="PRODUCT_CLASS" column="PRODUCT_FAMILY"
|
|
uniqueMembers="true"/>
|
|
<Level name="Product Department" table="PRODUCT_CLASS" column="PRODUCT_DEPARTMENT"
|
|
uniqueMembers="false"/>
|
|
<Level name="Product Category" table="PRODUCT_CLASS" column="PRODUCT_CATEGORY"
|
|
uniqueMembers="false"/>
|
|
<Level name="Product Subcategory" table="PRODUCT_CLASS" column="PRODUCT_SUBCATEGORY"
|
|
uniqueMembers="false"/>
|
|
<Level name="Brand Name" table="PRODUCT" column="BRAND_NAME" uniqueMembers="false"/>
|
|
<Level name="Product Name" table="PRODUCT" column="PRODUCT_NAME"
|
|
uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Warehouse">
|
|
<Hierarchy hasAll="true" primaryKey="WAREHOUSE_ID">
|
|
<Table name="WAREHOUSE"/>
|
|
<Level name="Country" column="WAREHOUSE_COUNTRY" uniqueMembers="true"/>
|
|
<Level name="State Province" column="WAREHOUSE_STATE_PROVINCE"
|
|
uniqueMembers="true"/>
|
|
<Level name="City" column="WAREHOUSE_CITY" uniqueMembers="false"/>
|
|
<Level name="Warehouse Name" column="WAREHOUSE_NAME" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<!-- Sales -->
|
|
<Cube name="Sales">
|
|
<Table name="sales_fact_1997">
|
|
<!--
|
|
-->
|
|
<AggExclude name="AGG_C_SPECIAL_SALES_FACT_1997" />
|
|
<!--
|
|
-->
|
|
<AggExclude name="AGG_LC_100_SALES_FACT_1997" />
|
|
<AggExclude name="AGG_LC_10_SALES_FACT_1997" /> <!-- not in foodmart sql script -->
|
|
<AggExclude name="AGG_PC_10_SALES_FACT_1997" /> <!-- not in foodmart sql script -->
|
|
<AggName name="AGG_C_SPECIAL_SALES_FACT_1997">
|
|
<AggFactCount column="FACT_COUNT"/>
|
|
<AggIgnoreColumn column="foo"/>
|
|
<AggIgnoreColumn column="bar"/>
|
|
<AggForeignKey factColumn="PRODUCT_ID" aggColumn="PRODUCT_ID" />
|
|
<AggForeignKey factColumn="CUSTOMER_ID" aggColumn="CUSTOMER_ID" />
|
|
<AggForeignKey factColumn="PROMOTION_ID" aggColumn="PROMOTION_ID" />
|
|
<AggForeignKey factColumn="STORE_ID" aggColumn="STORE_ID" />
|
|
<!--
|
|
-->
|
|
<AggMeasure name="[Measures].[Unit Sales]" column="UNIT_SALES_SUM" />
|
|
<AggMeasure name="[Measures].[Store Cost]" column="STORE_COST_SUM" />
|
|
<AggMeasure name="[Measures].[Store Sales]" column="STORE_SALES_SUM" />
|
|
<AggLevel name="[Time].[Year]" column="TIME_YEAR" />
|
|
<AggLevel name="[Time].[Quarter]" column="TIME_QUARTER" />
|
|
<AggLevel name="[Time].[Month]" column="TIME_MONTH" />
|
|
</AggName>
|
|
|
|
</Table>
|
|
<DimensionUsage name="Store" source="Store" foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT"
|
|
foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Store Type" source="Store Type" foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Time" source="Time" foreignKey="TIME_ID"/>
|
|
<DimensionUsage name="Product" source="Product" foreignKey="PRODUCT_ID"/>
|
|
<Dimension name="Promotion Media" foreignKey="PROMOTION_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Media" primaryKey="PROMOTION_ID" defaultMember="All Media">
|
|
<Table name="PROMOTION"/>
|
|
<Level name="Media Type" column="MEDIA_TYPE" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Promotions" foreignKey="PROMOTION_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Promotions" primaryKey="PROMOTION_ID" defaultMember="[All Promotions]">
|
|
<Table name="PROMOTION"/>
|
|
<Level name="Promotion Name" column="PROMOTION_NAME" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Customers" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Customers" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Country" column="COUNTRY" uniqueMembers="true"/>
|
|
<Level name="State Province" column="STATE_PROVINCE" uniqueMembers="true"/>
|
|
<Level name="City" column="CITY" uniqueMembers="false"/>
|
|
<Level name="Name" uniqueMembers="true">
|
|
<KeyExpression>
|
|
<SQL dialect="oracle">
|
|
"FNAME" || ' ' || "LNAME"
|
|
</SQL>
|
|
<SQL dialect="access">
|
|
fname + ' ' + lname
|
|
</SQL>
|
|
<SQL dialect="postgres">
|
|
"fname" || ' ' || "lname"
|
|
</SQL>
|
|
<SQL dialect="mysql">
|
|
CONCAT(`customer`.`fname`, ' ', `customer`.`lname`)
|
|
</SQL>
|
|
<SQL dialect="mssql">
|
|
fname + ' ' + lname
|
|
</SQL>
|
|
<SQL dialect="derby">
|
|
"customer"."fullname"
|
|
</SQL>
|
|
<SQL dialect="db2">
|
|
CONCAT(CONCAT(fname, ' '), lname)
|
|
</SQL>
|
|
<SQL dialect="generic">
|
|
fullname
|
|
</SQL>
|
|
</KeyExpression>
|
|
<Property name="Gender" column="GENDER"/>
|
|
<Property name="Marital Status" column="MARITAL_STATUS"/>
|
|
<Property name="Education" column="EDUCATION"/>
|
|
<Property name="Yearly Income" column="YEARLY_INCOME"/>
|
|
</Level>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Education Level" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Education Level" column="EDUCATION" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Gender" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Gender" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Gender" column="GENDER" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Marital Status" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Marital Status" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Marital Status" column="MARITAL_STATUS" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Yearly Income" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Yearly Income" column="YEARLY_INCOME" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Measure name="Unit Sales" column="UNIT_SALES" aggregator="sum"
|
|
formatString="Standard"/>
|
|
<Measure name="Store Cost" column="STORE_COST" aggregator="sum"
|
|
formatString="#,###.00"/>
|
|
<Measure name="Store Sales" column="STORE_SALES" aggregator="sum"
|
|
formatString="#,###.00"/>
|
|
<Measure name="Sales Count" column="PRODUCT_ID" aggregator="count"
|
|
formatString="#,###"/>
|
|
<Measure name="Customer Count" column="CUSTOMER_ID"
|
|
aggregator="distinct count" formatString="#,###"/>
|
|
<CalculatedMember
|
|
name="Profit"
|
|
dimension="Measures">
|
|
<Formula>[Measures].[Store Sales] - [Measures].[Store Cost]</Formula>
|
|
<CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/>
|
|
</CalculatedMember>
|
|
<CalculatedMember
|
|
name="Profit last Period"
|
|
dimension="Measures"
|
|
formula="COALESCEEMPTY((Measures.[Profit], [Time].PREVMEMBER), Measures.[Profit])"
|
|
visible="false">
|
|
<CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/>
|
|
</CalculatedMember>
|
|
<CalculatedMember
|
|
name="Profit Growth"
|
|
dimension="Measures"
|
|
formula="([Measures].[Profit] - [Measures].[Profit last Period]) / [Measures].[Profit last Period]"
|
|
visible="true"
|
|
caption="Profit Growth">
|
|
<CalculatedMemberProperty name="FORMAT_STRING" value="0.0%"/>
|
|
</CalculatedMember>
|
|
</Cube>
|
|
|
|
<Cube name="Warehouse">
|
|
<Table name="INVENTORY_FACT_1997"/>
|
|
|
|
<DimensionUsage name="Store" source="Store" foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT"
|
|
foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Store Type" source="Store Type" foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Time" source="Time" foreignKey="TIME_ID"/>
|
|
<DimensionUsage name="Product" source="Product" foreignKey="PRODUCT_ID"/>
|
|
<DimensionUsage name="Warehouse" source="Warehouse" foreignKey="WAREHOUSE_ID"/>
|
|
|
|
<Measure name="Store Invoice" column="STORE_INVOICE" aggregator="sum"/>
|
|
<Measure name="Supply Time" column="SUPPLY_TIME" aggregator="sum"/>
|
|
<Measure name="Warehouse Cost" column="WAREHOUSE_COST" aggregator="sum"/>
|
|
<Measure name="Warehouse Sales" column="WAREHOUSE_SALES" aggregator="sum"/>
|
|
<Measure name="Units Shipped" column="UNITS_SHIPPED" aggregator="sum" formatString="#.0"/>
|
|
<Measure name="Units Ordered" column="UNITS_ORDERED" aggregator="sum" formatString="#.0"/>
|
|
<Measure name="Warehouse Profit" column=""warehouse_sales"-"inventory_fact_1997"."warehouse_cost"" aggregator="sum"/>
|
|
</Cube>
|
|
|
|
<!-- Test a cube based upon a single table. -->
|
|
<Cube name="Store">
|
|
<Table name="STORE"/>
|
|
<!-- We could have used the shared dimension "Store Type", but we
|
|
want to test private dimensions without primary key. -->
|
|
<Dimension name="Store Type">
|
|
<Hierarchy hasAll="true">
|
|
<Level name="Store Type" column="STORE_TYPE" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<!-- We don't have to specify primary key or foreign key since the shared
|
|
dimension "Store" has the same underlying table as the cube. -->
|
|
<DimensionUsage name="Store" source="Store"/>
|
|
|
|
<Dimension name="Has coffee bar">
|
|
<Hierarchy hasAll="true">
|
|
<Level name="Has coffee bar" column="COFFEE_BAR" uniqueMembers="true" type="Boolean"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Measure name="Store Sqft" column="STORE_SQFT" aggregator="sum"
|
|
formatString="#,###"/>
|
|
<Measure name="Grocery Sqft" column="GROCERY_SQFT" aggregator="sum"
|
|
formatString="#,###"/>
|
|
|
|
</Cube>
|
|
|
|
<Cube name="HR">
|
|
<Table name="SALARY"/>
|
|
<!-- Use private "Time" dimension because key is different than public
|
|
"Time" dimension. -->
|
|
<Dimension name="Time" type="TimeDimension" foreignKey="PAY_DATE">
|
|
<Hierarchy hasAll="false" primaryKey="THE_DATE">
|
|
<Table name="TIME_BY_DAY"/>
|
|
<Level name="Year" column="THE_YEAR" type="Numeric" uniqueMembers="true"
|
|
levelType="TimeYears"/>
|
|
<Level name="Quarter" column="QUARTER" uniqueMembers="false"
|
|
levelType="TimeQuarters"/>
|
|
<Level name="Month" column="MONTH_OF_YEAR" uniqueMembers="false"
|
|
type="Numeric" levelType="TimeMonths"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Store" foreignKey="EMPLOYEE_ID" >
|
|
<Hierarchy hasAll="true" primaryKey="EMPLOYEE_ID"
|
|
primaryKeyTable="EMPLOYEE">
|
|
<Join leftKey="STORE_ID" rightKey="STORE_ID">
|
|
<Table name="EMPLOYEE"/>
|
|
<Table name="STORE"/>
|
|
</Join>
|
|
<Level name="Store Country" table="STORE" column="STORE_COUNTRY"
|
|
uniqueMembers="true"/>
|
|
<Level name="Store State" table="STORE" column="STORE_STATE"
|
|
uniqueMembers="true"/>
|
|
<Level name="Store City" table="STORE" column="STORE_CITY"
|
|
uniqueMembers="false"/>
|
|
<Level name="Store Name" table="STORE" column="STORE_NAME"
|
|
uniqueMembers="true">
|
|
<Property name="Store Type" column="STORE_TYPE"/>
|
|
<Property name="Store Manager" column="STORE_MANAGER"/>
|
|
<Property name="Store Sqft" column="STORE_SQFT" type="Numeric"/>
|
|
<Property name="Grocery Sqft" column="GROCERY_SQFT" type="Numeric"/>
|
|
<Property name="Frozen Sqft" column="FROZEN_SQFT" type="Numeric"/>
|
|
<Property name="Meat Sqft" column="MEAT_SQFT" type="Numeric"/>
|
|
<Property name="Has coffee bar" column="COFFEE_BAR" type="Boolean"/>
|
|
<Property name="Street address" column="STORE_STREET_ADDRESS"
|
|
type="String"/>
|
|
</Level>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Pay Type" foreignKey="EMPLOYEE_ID">
|
|
<Hierarchy hasAll="true" primaryKey="EMPLOYEE_ID"
|
|
primaryKeyTable="EMPLOYEE">
|
|
<Join leftKey="POSITION_ID" rightKey="POSITION_ID">
|
|
<Table name="EMPLOYEE"/>
|
|
<Table name="POSITION"/>
|
|
</Join>
|
|
<Level name="Pay Type" table="POSITION" column="PAY_TYPE"
|
|
uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Store Type" foreignKey="EMPLOYEE_ID">
|
|
<Hierarchy hasAll="true" primaryKeyTable="EMPLOYEE" primaryKey="EMPLOYEE_ID">
|
|
<Join leftKey="STORE_ID" rightKey="STORE_ID">
|
|
<Table name="EMPLOYEE"/>
|
|
<Table name="STORE"/>
|
|
</Join>
|
|
<Level name="Store Type" table="STORE" column="STORE_TYPE"
|
|
uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Position" foreignKey="EMPLOYEE_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Position"
|
|
primaryKey="EMPLOYEE_ID">
|
|
<Table name="EMPLOYEE"/>
|
|
<Level name="Management Role" uniqueMembers="true"
|
|
column="MANAGEMENT_ROLE"/>
|
|
<Level name="Position Title" uniqueMembers="false"
|
|
column="POSITION_TITLE" ordinalColumn="POSITION_ID"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Department" foreignKey="DEPARTMENT_ID">
|
|
<Hierarchy hasAll="true" primaryKey="DEPARTMENT_ID">
|
|
<Table name="department"/>
|
|
<Level name="Department Description" uniqueMembers="true"
|
|
column="DEPARTMENT_ID"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Employees" foreignKey="EMPLOYEE_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Employees"
|
|
primaryKey="EMPLOYEE_ID">
|
|
<Table name="EMPLOYEE"/>
|
|
<Level name="Employee Id" type="Numeric" uniqueMembers="true"
|
|
column="EMPLOYEE_ID" parentColumn="SUPERVISOR_ID"
|
|
nameColumn="FULL_NAME" nullParentValue="0">
|
|
<Closure parentColumn="SUPERVISOR_ID" childColumn="EMPLOYEE_ID">
|
|
<Table name="EMPLOYEE_CLOSURE"/>
|
|
</Closure>
|
|
<Property name="Marital Status" column="MARITAL_STATUS"/>
|
|
<Property name="Position Title" column="POSITION_TITLE"/>
|
|
<Property name="Gender" column="GENDER"/>
|
|
<Property name="Salary" column="SALARY"/>
|
|
<Property name="Education Level" column="EDUCATION_LEVEL"/>
|
|
<Property name="Management Role" column="MANAGEMENT_ROLE"/>
|
|
</Level>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<!-- Explicit Closure of [Employees] (just for unit testing):
|
|
== [Employees] is a parent/child hierarchy (along the relationship
|
|
== supervisor_id/employee_id). The table employee_closure expresses the
|
|
== closure of the parent/child relation, ie it represents
|
|
== ancestor/descendant, having a row for each ancestor/descendant pair.
|
|
==
|
|
== The closed hierarchy has two levels: the detail level (here named
|
|
== [Employee]) is equivalent to the base hierarchy; the [Closure] level
|
|
== relates each descendant to all its ancestors.
|
|
<Dimension name="EmployeesClosure" foreignKey="EMPLOYEE_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Employees"
|
|
primaryKey="EMPLOYEE_ID" primaryKeyTable="EMPLOYEE_CLOSURE">
|
|
<Join leftKey="SUPERVISOR_ID" rightKey="EMPLOYEE_ID">
|
|
<Table name="EMPLOYEE_CLOSURE"/>
|
|
<Table name="EMPLOYEE"/>
|
|
</Join>
|
|
<Level name="Closure" type="Numeric" uniqueMembers="false"
|
|
table="EMPLOYEE_CLOSURE" column="SUPERVISOR_ID"/>
|
|
<Level name="Employee" type="Numeric" uniqueMembers="true"
|
|
table="EMPLOYEE_CLOSURE" column="EMPLOYEE_ID"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
-->
|
|
|
|
<Measure name="Org Salary" column="SALARY_PAID" aggregator="sum"
|
|
formatString="Currency"/>
|
|
<Measure name="Count" column="EMPLOYEE_ID" aggregator="count"
|
|
formatString="#,#"/>
|
|
<Measure name="Number of Employees" column="EMPLOYEE_ID"
|
|
aggregator="distinct count" formatString="#,#"/>
|
|
<CalculatedMember name="Employee Salary" dimension="Measures"
|
|
formatString="Currency"
|
|
formula="([Employees].currentmember.datamember, [Measures].[Org Salary])"/>
|
|
<CalculatedMember name="Avg Salary" dimension="Measures"
|
|
formatString="Currency"
|
|
formula="[Measures].[Org Salary]/[Measures].[Number of Employees]"/>
|
|
</Cube>
|
|
|
|
<!-- Cube with one ragged hierarchy (otherwise the same as the "Sales"
|
|
cube). -->
|
|
<Cube name="Sales Ragged">
|
|
<Table name="SALES_FACT_1997">
|
|
<AggExclude name="AGG_PC_10_SALES_FACT_1997"/> <!-- not in foodmart sql script -->
|
|
<AggExclude name="AGG_LC_10_SALES_FACT_1997"/> <!-- not in foodmart sql script -->
|
|
</Table>
|
|
<Dimension name="Store" foreignKey="STORE_ID">
|
|
<Hierarchy hasAll="true" primaryKey="STORE_ID">
|
|
<Table name="STORE_RAGGED"/>
|
|
<Level name="Store Country" column="STORE_COUNTRY" uniqueMembers="true"
|
|
hideMemberIf="Never"/>
|
|
<Level name="Store State" column="STORE_STATE" uniqueMembers="true"
|
|
hideMemberIf="IfParentsName"/>
|
|
<Level name="Store City" column="STORE_CITY" uniqueMembers="false"
|
|
hideMemberIf="IfBlankName"/>
|
|
<Level name="Store Name" column="STORE_NAME" uniqueMembers="true"
|
|
hideMemberIf="Never">
|
|
<Property name="Store Type" column="STORE_TYPE"/>
|
|
<Property name="Store Manager" column="STORE_MANAGER"/>
|
|
<Property name="Store Sqft" column="STORE_SQFT" type="Numeric"/>
|
|
<Property name="Grocery Sqft" column="GROCERY_SQFT" type="Numeric"/>
|
|
<Property name="Frozen Sqft" column="FROZEN_SQFT" type="Numeric"/>
|
|
<Property name="Meat Sqft" column="MEAT_SQFT" type="Numeric"/>
|
|
<Property name="Has coffee bar" column="COFFEE_BAR" type="Boolean"/>
|
|
<Property name="Street address" column="STORE_STREET_ADDRESS" type="String"/>
|
|
</Level>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<Dimension name="Geography" foreignKey="STORE_ID">
|
|
<Hierarchy hasAll="true" primaryKey="STORE_ID">
|
|
<Table name="STORE_RAGGED"/>
|
|
<Level name="Country" column="STORE_COUNTRY" uniqueMembers="true"
|
|
hideMemberIf="Never"/>
|
|
<Level name="State" column="STORE_STATE" uniqueMembers="true"
|
|
hideMemberIf="IfParentsName"/>
|
|
<Level name="City" column="STORE_CITY" uniqueMembers="false"
|
|
hideMemberIf="IfBlankName"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
|
|
<DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT"
|
|
foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Store Type" source="Store Type" foreignKey="STORE_ID"/>
|
|
<DimensionUsage name="Time" source="Time" foreignKey="TIME_ID"/>
|
|
<DimensionUsage name="Product" source="Product" foreignKey="PRODUCT_ID"/>
|
|
<Dimension name="Promotion Media" foreignKey="PROMOTION_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Media" primaryKey="PROMOTION_ID">
|
|
<Table name="promotion"/>
|
|
<Level name="Media Type" column="MEDIA_TYPE" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Promotions" foreignKey="PROMOTION_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Promotions" primaryKey="PROMOTION_ID">
|
|
<Table name="PROMOTION"/>
|
|
<Level name="Promotion Name" column="PROMOTION_NAME" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Customers" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Customers" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Country" column="COUNTRY" uniqueMembers="true"/>
|
|
<Level name="State Province" column="STATE_PROVINCE" uniqueMembers="true"/>
|
|
<Level name="City" column="CITY" uniqueMembers="false"/>
|
|
<Level name="Name" uniqueMembers="true">
|
|
<KeyExpression>
|
|
<SQL dialect="oracle">
|
|
"FNAME" || ' ' || "LNAME"
|
|
</SQL>
|
|
<SQL dialect="access">
|
|
fname + ' ' + lname
|
|
</SQL>
|
|
<SQL dialect="postgres">
|
|
"fname" || ' ' || "lname"
|
|
</SQL>
|
|
<SQL dialect="mysql">
|
|
CONCAT(`customer`.`fname`, ' ', `customer`.`lname`)
|
|
</SQL>
|
|
<SQL dialect="mssql">
|
|
fname + ' ' + lname
|
|
</SQL>
|
|
<SQL dialect="derby">
|
|
"customer"."fullname"
|
|
</SQL>
|
|
<SQL dialect="db2">
|
|
CONCAT(CONCAT(fname, ' '), lname)
|
|
</SQL>
|
|
<SQL dialect="generic">
|
|
fullname
|
|
</SQL>
|
|
</KeyExpression>
|
|
<Property name="Gender" column="GENDER"/>
|
|
<Property name="Marital Status" column="MARITAL_STATUS"/>
|
|
<Property name="Education" column="EDUCATION"/>
|
|
<Property name="Yearly Income" column="YEARLY_INCOME"/>
|
|
</Level>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Education Level" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Education Level" column="EDUCATION" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Gender" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Gender" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Gender" column="GENDER" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Marital Status" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" allMemberName="All Marital Status" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Marital Status" column="MARITAL_STATUS" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Dimension name="Yearly Income" foreignKey="CUSTOMER_ID">
|
|
<Hierarchy hasAll="true" primaryKey="CUSTOMER_ID">
|
|
<Table name="CUSTOMER"/>
|
|
<Level name="Yearly Income" column="YEARLY_INCOME" uniqueMembers="true"/>
|
|
</Hierarchy>
|
|
</Dimension>
|
|
<Measure name="Unit Sales" column="UNIT_SALES" aggregator="sum"
|
|
formatString="Standard"/>
|
|
<Measure name="Store Cost" column="STORE_COST" aggregator="sum"
|
|
formatString="#,###.00"/>
|
|
<Measure name="Store Sales" column="STORE_SALES" aggregator="sum"
|
|
formatString="#,###.00"/>
|
|
<Measure name="Sales Count" column="PRODUCT_ID" aggregator="count"
|
|
formatString="#,###"/>
|
|
<Measure name="Customer Count" column="CUSTOMER_ID" aggregator="distinct count"
|
|
formatString="#,###"/>
|
|
</Cube>
|
|
|
|
<VirtualCube name="Warehouse and Sales">
|
|
<VirtualCubeDimension cubeName="Sales" name="Customers"/>
|
|
<VirtualCubeDimension cubeName="Sales" name="Education Level"/>
|
|
<VirtualCubeDimension cubeName="Sales" name="Gender"/>
|
|
<VirtualCubeDimension cubeName="Sales" name="Marital Status"/>
|
|
<VirtualCubeDimension name="Product"/>
|
|
<VirtualCubeDimension cubeName="Sales" name="Promotion Media"/>
|
|
<VirtualCubeDimension cubeName="Sales" name="Promotions"/>
|
|
<VirtualCubeDimension name="Store"/>
|
|
<VirtualCubeDimension name="Time"/>
|
|
<VirtualCubeDimension cubeName="Sales" name="Yearly Income"/>
|
|
<VirtualCubeDimension cubeName="Warehouse" name="Warehouse"/>
|
|
<VirtualCubeMeasure cubeName="Sales" name="[Measures].[Sales Count]"/>
|
|
<VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Cost]"/>
|
|
<VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Sales]"/>
|
|
<VirtualCubeMeasure cubeName="Sales" name="[Measures].[Unit Sales]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Store Invoice]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Supply Time]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Units Ordered]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Units Shipped]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Cost]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Profit]"/>
|
|
<VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Sales]"/>
|
|
<!--
|
|
-->
|
|
</VirtualCube>
|
|
|
|
|
|
<!-- A California manager can only see customers and stores in California.
|
|
They cannot drill down on Gender. -->
|
|
<Role name="California manager">
|
|
<SchemaGrant access="none">
|
|
<CubeGrant cube="Sales" access="all">
|
|
<HierarchyGrant hierarchy="[Store]" access="custom"
|
|
topLevel="[Store].[Store Country]">
|
|
<MemberGrant member="[Store].[USA].[CA]" access="all"/>
|
|
<MemberGrant member="[Store].[USA].[CA].[Los Angeles]" access="none"/>
|
|
</HierarchyGrant>
|
|
<HierarchyGrant hierarchy="[Customers]" access="custom"
|
|
topLevel="[Customers].[State Province]" bottomLevel="[Customers].[City]">
|
|
<MemberGrant member="[Customers].[USA].[CA]" access="all"/>
|
|
<MemberGrant member="[Customers].[USA].[CA].[Los Angeles]" access="none"/>
|
|
</HierarchyGrant>
|
|
<HierarchyGrant hierarchy="[Gender]" access="none"/>
|
|
</CubeGrant>
|
|
</SchemaGrant>
|
|
</Role>
|
|
|
|
<Role name="No HR Cube">
|
|
<SchemaGrant access="all">
|
|
<CubeGrant cube="HR" access="none"/>
|
|
</SchemaGrant>
|
|
</Role>
|
|
|
|
</Schema>
|