上一篇讲到了如何在管理台配置数据源 [ http://www.cnblogs.com/avivaye/p/4877767.html ]

这次来说明下shema文件里面是怎样配置Cube和角色权限的

通过分析demo中的FoodMart.xml 可以得知XML文件中主要配置了如下的内容

|- shcema

  |-  <PhysicalSchema>

  |-  <Dimension>

  | - <Cube>

  |-  <Role>

详细配置如下:

<?xml version='1.0'?>
<Schema name='FoodMart' metamodelVersion='4.0'> <!-- 第一个关键节点:PhysicalSchema 配置物理Schema-->
<PhysicalSchema>
<Table name='salary'/>
<Table name='salary' alias='salary2'/>
<Table name='department'>
<Key>
<Column name='department_id'/>
</Key>
</Table>
<Table name='employee'>
<Key>
<Column name='employee_id'/>
</Key>
</Table>
<Table name='employee_closure'>
<Key>
<Column name='employee_id'/>
</Key>
</Table>
<Link source='employee' target='employee_closure'>
<ForeignKey>
<Column name='employee_id'/>
</ForeignKey>
</Link>
<Table name='position'>
<Key>
<Column name='position_id'/>
</Key>
</Table>
<Link source='position' target='employee'>
<ForeignKey>
<Column name='position_id'/>
</ForeignKey>
</Link>
<Table name='promotion'>
<Key>
<Column name='promotion_id'/>
</Key>
</Table>
<Table name='store'>
<Key>
<Column name='store_id'/>
</Key>
</Table>
<Link source='store' target='employee'>
<ForeignKey>
<Column name='store_id'/>
</ForeignKey>
</Link>
<Table name='product' keyColumn='product_id'/>
<Table name='product_class' keyColumn='product_class_id'/>
<Link target='product' source='product_class'>
<ForeignKey>
<Column name='product_class_id'/>
</ForeignKey>
</Link>
<Table name='time_by_day'>
<Key>
<Column name='time_id'/>
</Key>
</Table>
<Table name='customer'>
<Key>
<Column name='customer_id'/>
</Key>
<ColumnDefs>
<CalculatedColumnDef name='full_name' type='String'>
<ExpressionView>
<SQL dialect='oracle'>
<Column name='fname'/> || ' ' || <Column name='lname'/>
</SQL>
<SQL dialect='access'>
<Column name='fname'/> + ' ' + <Column name='lname'/>
</SQL>
<SQL dialect='postgres'>
<Column name='fname'/> || ' ' || <Column name='lname'/>
</SQL>
<SQL dialect='mysql'>
CONCAT(<Column name='fname'/>, ' ', <Column name='lname'/>)
</SQL>
<SQL dialect='mssql'>
<Column name='fname'/> + ' ' + <Column name='lname'/>
</SQL>
<SQL dialect='derby'>
<Column name='fullname'/>
</SQL>
<SQL dialect='db2'>
CONCAT(CONCAT(<Column name='fname'/>, ' '), <Column name='lname'/>)
</SQL>
<SQL dialect='luciddb'>
<Column name='fname'/> || ' ' || <Column name='lname'/>
</SQL>
<SQL dialect='generic'>
<Column name='fullname'/>
</SQL>
</ExpressionView>
</CalculatedColumnDef>
</ColumnDefs>
</Table>
<Table name='sales_fact_1997'>
<ColumnDefs>
<CalculatedColumnDef name='promotion_sales'>
<ExpressionView>
<SQL dialect='access'>
Iif(<Column table='sales_fact_1997' name='promotion_id'/> = 0, 0,
<Column table='sales_fact_1997' name='store_sales'/>)
</SQL>
<SQL dialect='generic'>
case when <Column table='sales_fact_1997' name='promotion_id'/> = 0 then 0
else <Column table='sales_fact_1997' name='store_sales'/> end
</SQL>
</ExpressionView>
</CalculatedColumnDef>
</ColumnDefs>
</Table>
<Table name='inventory_fact_1997'>
<ColumnDefs>
<CalculatedColumnDef name='warehouse_profit'>
<ExpressionView>
<SQL dialect='generic'>
<Column table='inventory_fact_1997' name='warehouse_sales'/>
-
<Column name='warehouse_cost'/>
</SQL>
</ExpressionView>
</CalculatedColumnDef>
</ColumnDefs>
</Table>
<Table name='warehouse'>
<Key>
<Column name='warehouse_id'/>
</Key>
</Table> <Table name='agg_c_special_sales_fact_1997'/>
<Table name='agg_pl_01_sales_fact_1997'/>
<Table name='agg_l_05_sales_fact_1997'/>
<Table name='agg_g_ms_pcat_sales_fact_1997'/>
<Table name='agg_c_14_sales_fact_1997'/>
</PhysicalSchema> <!-- 第二个关键节点:Dimension 维度-->
<Dimension name='Store' table='store' key='Store Id'>
<Attributes>
<Attribute name='Store Country' hasHierarchy='false'>
<Key>
<Column name='store_country'/>
</Key>
</Attribute>
<Attribute name='Store State' keyColumn='store_state' hasHierarchy='false'/>
<Attribute name='Store City' hasHierarchy='false'>
<Key>
<Column name='store_state'/>
<Column name='store_city'/>
</Key>
<Name>
<Column name='store_city'/>
</Name>
</Attribute>
<Attribute name='Store Id' keyColumn='store_id' hasHierarchy='false'/>
<Attribute name='Store Name' keyColumn='store_name' hasHierarchy='false'>
<Property attribute='Store Type'/>
<Property attribute='Store Manager'/>
<Property attribute='Store Sqft'/>
<Property attribute='Grocery Sqft'/>
<Property attribute='Frozen Sqft'/>
<Property attribute='Meat Sqft'/>
<Property attribute='Has coffee bar'/>
<Property attribute='Street address'/>
</Attribute>
<Attribute name='Store Type' keyColumn='store_type' hierarchyAllMemberName='All Store Types'/>
<Attribute name='Store Manager' keyColumn='store_manager' hasHierarchy='false'/>
<Attribute name='Store Sqft' keyColumn='store_sqft' hasHierarchy='false'/>
<Attribute name='Grocery Sqft' keyColumn='grocery_sqft' hasHierarchy='false'/>
<Attribute name='Frozen Sqft' keyColumn='frozen_sqft' hasHierarchy='false'/>
<Attribute name='Meat Sqft' keyColumn='meat_sqft' hasHierarchy='false'/>
<Attribute name='Has coffee bar' keyColumn='coffee_bar' hasHierarchy='false'/>
<Attribute name='Street address' keyColumn='store_street_address' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Stores' allMemberName='All Stores'>
<Level attribute='Store Country'/>
<Level attribute='Store State'/>
<Level attribute='Store City'/>
<Level attribute='Store Name'/>
</Hierarchy>
<Hierarchy name='Store Size in SQFT'>
<Level attribute='Store Sqft'/>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension name='Store2' key='Store Id'>
<Attributes>
<Attribute name='Store Id' table='store' keyColumn='store_id' hasHierarchy='false'/>
<Attribute name='Store Type' table='store' keyColumn='store_type' hierarchyAllMemberName='false'/>
<Attribute name='Store Manager' table='store' keyColumn='store_manager' hasHierarchy='false'/>
<Attribute name='Store Sqft' table='store' keyColumn='store_sqft' hasHierarchy='false'/>
<Attribute name='Grocery Sqft' table='store' keyColumn='grocery_sqft' hasHierarchy='false'/>
<Attribute name='Frozen Sqft' table='store' keyColumn='frozen_sqft' hasHierarchy='false'/>
<Attribute name='Meat Sqft' table='store' keyColumn='meat_sqft' hasHierarchy='false'/>
<Attribute name='Has coffee bar' table='store' keyColumn='coffee_bar' hasHierarchy='false'/>
<Attribute name='Street address' table='store' keyColumn='store_street_address' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Store' allMemberName='All Path'>
<Level attribute='Store Type'/>
<Level attribute='Has coffee bar'/>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension name='Store3' table='store' key='Store Id'>
<Attributes>
<Attribute name='Store Id' keyColumn='store_id' hasHierarchy='false'/>
<Attribute name='Store Manager' keyColumn='store_manager' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Store' allMemberName='All Path'>
<Level attribute='Store Id'/>
<Level attribute='Store Manager'/>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension name='Time' table='time_by_day' type='TIME' key='Time Id'>
<Attributes>
<Attribute name='Year' keyColumn='the_year' levelType='TimeYears' hasHierarchy='false'>
</Attribute>
<Attribute name='Quarter' levelType='TimeQuarters' hasHierarchy='false'>
<Key>
<Column name='the_year'/>
<Column name='quarter'/>
</Key>
<Name>
<Column name='quarter'/>
</Name>
</Attribute>
<Attribute name='Month' levelType='TimeMonths' hasHierarchy='false'>
<Key>
<Column name='the_year'/>
<Column name='month_of_year'/>
</Key>
<Name>
<Column name='month_of_year'/>
</Name>
</Attribute>
<Attribute name='Week' levelType='TimeWeeks' hasHierarchy='false'>
<Key>
<Column name='the_year'/>
<Column name='week_of_year'/>
</Key>
<Name>
<Column name='week_of_year'/>
</Name>
</Attribute>
<Attribute name='Day' levelType='TimeDays' hasHierarchy='false'>
<Key>
<Column name='time_id'/>
</Key>
<Name>
<Column name='day_of_month'/>
</Name>
<OrderBy>
<Column name='time_id'/>
</OrderBy>
</Attribute>
<Attribute name='Month Name' hasHierarchy='false'>
<Key>
<Column name='the_year'/>
<Column name='month_of_year'/>
</Key>
<Name>
<Column name='the_month'/>
</Name>
</Attribute>
<Attribute name='Date' keyColumn='the_date' hasHierarchy='false'/>
<Attribute name='Date String' keyColumn='date_string' hasHierarchy='false'/>
<Attribute name='Time Id' keyColumn='time_id' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Time' hasAll='false'>
<Level attribute='Year'>
<Annotations><Annotation name="AnalyzerDateFormat">[yyyy]</Annotation></Annotations>
</Level>
<Level attribute='Quarter'>
<Annotations><Annotation name="AnalyzerDateFormat">[yyyy].[Qq]</Annotation></Annotations>
</Level>
<Level attribute='Month'>
<Annotations><Annotation name="AnalyzerDateFormat">[yyyy].[Qq].[mm]</Annotation></Annotations>
</Level>
</Hierarchy>
<Hierarchy name='Weekly' hasAll='true'>
<Level attribute='Year'>
<Annotations><Annotation name="AnalyzerDateFormat">[yyyy]</Annotation></Annotations>
</Level>
<Level attribute='Week'>
<Annotations><Annotation name="AnalyzerDateFormat">[yyyy].[ww]</Annotation></Annotations>
</Level>
<Level attribute='Day'>
<Annotations><Annotation name="AnalyzerDateFormat">[yyyy].[ww].[dd]</Annotation></Annotations>
</Level>
</Hierarchy>
<Hierarchy name='Date Only' hasAll='true'>
<Level attribute='Date String'>
<Annotations><Annotation name="SaikuDayFormatString">yyyy/mm/dd</Annotation></Annotations>
</Level>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension name='Product' key='Product Id'>
<Attributes>
<Attribute name='Product Family' table='product_class' keyColumn='product_family' hasHierarchy='false'/>
<Attribute name='Product Department' table='product_class' hasHierarchy='false'>
<Key>
<Column name='product_family'/>
<Column name='product_department'/>
</Key>
<Name>
<Column name='product_department'/>
</Name>
</Attribute>
<Attribute name='Product Category' table='product_class' hasHierarchy='false'>
<Key>
<Column name='product_family'/>
<Column name='product_department'/>
<Column name='product_category'/>
</Key>
<Name>
<Column name='product_category'/>
</Name>
</Attribute>
<Attribute name='Product Subcategory' table='product_class' hasHierarchy='false'>
<Key>
<Column name='product_family'/>
<Column name='product_department'/>
<Column name='product_category'/>
<Column name='product_subcategory'/>
</Key>
<Name>
<Column name='product_subcategory'/>
</Name>
</Attribute>
<Attribute name='Brand Name' table='product' hasHierarchy='false'>
<Key>
<Column table='product_class' name='product_family'/>
<Column table='product_class' name='product_department'/>
<Column table='product_class' name='product_category'/>
<Column table='product_class' name='product_subcategory'/>
<Column name='brand_name'/>
</Key>
<Name>
<Column name='brand_name'/>
</Name>
</Attribute>
<Attribute name='Product Name' table='product' hasHierarchy='false'
keyColumn='product_id' nameColumn='product_name'/>
<Attribute name='Product Id' table='product' keyColumn='product_id' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Products' allMemberName='All Products'>
<Level attribute='Product Family'/>
<Level attribute='Product Department'/>
<Level attribute='Product Category'/>
<Level attribute='Product Subcategory'/>
<Level attribute='Brand Name'/>
<Level attribute='Product Name'/>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension name='Warehouse' table='warehouse' key='Warehouse Id'>
<Attributes>
<Attribute name='Country' keyColumn='warehouse_country' hasHierarchy='false'/>
<Attribute name='State Province' keyColumn='warehouse_state_province' hasHierarchy='false'/>
<Attribute name='City' hasHierarchy='false'>
<Key>
<Column name='warehouse_state_province'/>
<Column name='warehouse_city'/>
</Key>
<Name>
<Column name='warehouse_city'/>
</Name>
</Attribute>
<Attribute name='Warehouse Name' keyColumn='warehouse_name' hasHierarchy='false'/>
<Attribute name='Warehouse Id' keyColumn='warehouse_id' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Warehouses' allMemberName='All Warehouses'>
<Level attribute='Country'/>
<Level attribute='State Province'/>
<Level attribute='City'/>
<Level attribute='Warehouse Name'/>
</Hierarchy>
</Hierarchies>
</Dimension> <!-- 第三个关键节点:Cube 定义包含哪一些维度 Dimensions -->
<Cube name='Sales' defaultMeasure='Unit Sales'>
<!-- Use annotations to provide translations of this cube's caption and
description into German and French. Use of annotations in this
manner is experimental and unsupported; just for testing right
now. -->
<Annotations>
<Annotation name='caption.de_DE'>Verkaufen</Annotation>
<Annotation name='caption.fr_FR'>Ventes</Annotation>
<Annotation name='caption+fr_FR'>Ventes</Annotation>
<Annotation name='description.fr_FR'>Cube des ventes</Annotation>
<Annotation name='description.de'>Cube Verkaufen</Annotation>
<Annotation name='description.de_AT'>Cube den Verkaufen</Annotation>
</Annotations> <Dimensions> <Dimension source='Store'/> <Dimension source='Time'/> <Dimension source='Product'/> <Dimension name='Promotion' table='promotion' key='Promotion Id'>
<Attributes>
<Attribute name='Promotion Id' keyColumn='promotion_id' hasHierarchy='false'/>
<Attribute name='Promotion Name' keyColumn='promotion_name' hasHierarchy='false'/>
<Attribute name='Media Type' keyColumn='media_type' hierarchyAllMemberName='All Media' hasHierarchy='false'/>
</Attributes>
<Hierarchies>
<Hierarchy name='Media Type' allMemberName='All Media'>
<Level attribute='Media Type'/>
</Hierarchy>
<Hierarchy name='Promotions' allMemberName='All Promotions'>
<Level attribute='Promotion Name'/>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension name='Customer' table='customer' key='Name'>
<Attributes>
<Attribute name='Country' keyColumn='country' hasHierarchy='false'/>
<Attribute name='State Province' hasHierarchy='false'>
<Key>
<Column name='country'/>
<Column name='state_province'/>
</Key>
<Name>
<Column name='state_province'/>
</Name>
</Attribute>
<Attribute name='City' hasHierarchy='false'>
<Key>
<Column name='country'/>
<Column name='state_province'/>
<Column name='city'/>
</Key>
<Name>
<Column name='city'/>
</Name>
</Attribute>
<Attribute name='Name' keyColumn='customer_id' nameColumn='full_name' orderByColumn='full_name' hasHierarchy='false'/>
<Attribute name='Gender' keyColumn='gender' datatype="Boolean"/>
<Attribute name='Marital Status' keyColumn='marital_status' approxRowCount='111'/>
<Attribute name='Education' keyColumn='education' hasHierarchy='false'/>
<Attribute name='Yearly Income' keyColumn='yearly_income' hierarchyAllMemberName='All Yearly Incomes'/>
</Attributes> <Hierarchies>
<Hierarchy name='Customers' allMemberName='All Customers'>
<Level attribute='Country'/>
<Level attribute='State Province'/>
<Level attribute='City'/>
<Level attribute='Name'/>
</Hierarchy>
<Hierarchy name='Education Level'>
<Level attribute='Education' name='Education Level'/>
</Hierarchy>
</Hierarchies>
</Dimension>
</Dimensions> <MeasureGroups>
<MeasureGroup name='Sales' table='sales_fact_1997'>
<Measures>
<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='#,###'/>
<Measure name='Promotion Sales' column='promotion_sales' aggregator='sum' formatString='#,###.00' datatype='Numeric'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Store' foreignKeyColumn='store_id'/>
<ForeignKeyLink dimension='Time' foreignKeyColumn='time_id'/>
<ForeignKeyLink dimension='Product' foreignKeyColumn='product_id'/>
<ForeignKeyLink dimension='Promotion' foreignKeyColumn='promotion_id'/>
<ForeignKeyLink dimension='Customer' foreignKeyColumn='customer_id'/>
</DimensionLinks>
</MeasureGroup>
<MeasureGroup table='agg_c_special_sales_fact_1997' type='aggregate'>
<Measures>
<MeasureRef name='Fact Count' aggColumn='fact_count'/>
<MeasureRef name='Unit Sales' aggColumn='unit_sales_sum'/>
<MeasureRef name='Store Cost' aggColumn='store_cost_sum'/>
<MeasureRef name='Store Sales' aggColumn='store_sales_sum'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Store' foreignKeyColumn='store_id'/>
<ForeignKeyLink dimension='Product' foreignKeyColumn='product_id'/>
<ForeignKeyLink dimension='Promotion' foreignKeyColumn='promotion_id'/>
<ForeignKeyLink dimension='Customer' foreignKeyColumn='customer_id'/>
<CopyLink dimension='Time' attribute='Month'>
<Column aggColumn='time_year' table='time_by_day' name='the_year'/>
<Column aggColumn='time_quarter' table='time_by_day' name='quarter'/>
<Column aggColumn='time_month' table='time_by_day' name='month_of_year'/>
</CopyLink>
</DimensionLinks>
</MeasureGroup>
<MeasureGroup table='agg_l_05_sales_fact_1997' type='aggregate'>
<Measures>
<MeasureRef name='Fact Count' aggColumn='fact_count'/>
<MeasureRef name='Unit Sales' aggColumn='unit_sales'/>
<MeasureRef name='Store Cost' aggColumn='store_cost'/>
<MeasureRef name='Store Sales' aggColumn='store_sales'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Store' foreignKeyColumn='store_id'/>
<ForeignKeyLink dimension='Product' foreignKeyColumn='product_id'/>
<ForeignKeyLink dimension='Promotion' foreignKeyColumn='promotion_id'/>
<ForeignKeyLink dimension='Customer' foreignKeyColumn='customer_id'/>
<NoLink dimension='Time'/>
</DimensionLinks>
</MeasureGroup>
<MeasureGroup table='agg_c_14_sales_fact_1997' type='aggregate'>
<Measures>
<MeasureRef name='Fact Count' aggColumn='fact_count'/>
<MeasureRef name='Unit Sales' aggColumn='unit_sales'/>
<MeasureRef name='Store Cost' aggColumn='store_cost'/>
<MeasureRef name='Store Sales' aggColumn='store_sales'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Store' foreignKeyColumn='store_id'/>
<ForeignKeyLink dimension='Product' foreignKeyColumn='product_id'/>
<ForeignKeyLink dimension='Promotion' foreignKeyColumn='promotion_id'/>
<ForeignKeyLink dimension='Customer' foreignKeyColumn='customer_id'/>
<CopyLink dimension='Time' attribute='Month'>
<Column aggColumn='the_year' table='time_by_day' name='the_year'/>
<Column aggColumn='quarter' table='time_by_day' name='quarter'/>
<Column aggColumn='month_of_year' table='time_by_day' name='month_of_year'/>
</CopyLink>
</DimensionLinks>
</MeasureGroup>
<MeasureGroup table='agg_g_ms_pcat_sales_fact_1997' type='aggregate'>
<Measures>
<MeasureRef name='Fact Count' aggColumn='fact_count'/>
<MeasureRef name='Unit Sales' aggColumn='unit_sales'/>
<MeasureRef name='Store Cost' aggColumn='store_cost'/>
<MeasureRef name='Store Sales' aggColumn='store_sales'/>
<MeasureRef name='Customer Count' aggColumn='customer_count'/>
</Measures>
<DimensionLinks>
<NoLink dimension='Store'/>
<CopyLink dimension='Product'>
<Column aggColumn='product_family' table='product_class' name='product_family'/>
<Column aggColumn='product_department' table='product_class' name='product_department'/>
<Column aggColumn='product_category' table='product_class' name='product_category'/>
</CopyLink>
<NoLink dimension='Promotion'/>
<CopyLink dimension='Customer'>
<Column aggColumn='gender' table='customer' name='gender'/>
<Column aggColumn='marital_status' table='customer' name='marital_status'/>
</CopyLink>
<CopyLink dimension='Time' attribute='Month'>
<Column aggColumn='the_year' table='time_by_day' name='the_year'/>
<Column aggColumn='quarter' table='time_by_day' name='quarter'/>
<Column aggColumn='month_of_year' table='time_by_day' name='month_of_year'/>
</CopyLink>
</DimensionLinks>
</MeasureGroup>
</MeasureGroups> <CalculatedMembers>
<CalculatedMember name='Profit' dimension='Measures'>
<Formula>[Measures].[Store Sales] - [Measures].[Store Cost]</Formula>
<CalculatedMemberProperty name="FORMAT_STRING" expression="Iif(([Measures].[Store Sales]) &lt; 10000, '|(#,##0.00 €)|style=red', '|#,##0.00 €|style=green')"/>
</CalculatedMember>
<CalculatedMember name='Profit last Period' dimension='Measures'
formula='COALESCEEMPTY((Measures.[Profit], [Time].[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='Gewinn-Wachstum'>
<CalculatedMemberProperty name='FORMAT_STRING' value='0.0%'/>
</CalculatedMember>
</CalculatedMembers>
</Cube> <!-- a simpler version of 'Sales' (with MEMBER_ORDINAL-properties) -->
<Cube name='Sales 2'>
<Dimensions>
<Dimension source='Time'/>
<Dimension source='Product'/>
<Dimension name='Gender' table='customer' key='Id'>
<Attributes>
<Attribute name='Gender' keyColumn='gender'/>
<Attribute name='Id' keyColumn='customer_id'/>
</Attributes>
</Dimension>
</Dimensions>
<MeasureGroups>
<MeasureGroup name='Sales' table='sales_fact_1997'>
<Measures>
<Measure name='Sales Count' column='product_id' aggregator='count' formatString='#,###'>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='1'/>
</Measure>
<Measure name='Unit Sales' column='unit_sales' aggregator='sum' formatString='Standard'>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='2'/>
</Measure>
<Measure name='Store Sales' column='store_sales' aggregator='sum' formatString='#,###.00'>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='3'/>
</Measure>
<Measure name='Store Cost' column='store_cost' aggregator='sum' formatString='#,###.00'>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='6'/>
</Measure>
<Measure name='Customer Count' column='customer_id' aggregator='distinct-count' formatString='#,###'>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='7'/>
</Measure>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Time' foreignKeyColumn='time_id'/>
<ForeignKeyLink dimension='Product' foreignKeyColumn='product_id'/>
<ForeignKeyLink dimension='Gender' foreignKeyColumn='customer_id'/>
</DimensionLinks>
</MeasureGroup>
</MeasureGroups>
<CalculatedMembers>
<CalculatedMember
name='Profit'
dimension='Measures'>
<Formula>[Measures].[Store Sales] - [Measures].[Store Cost]</Formula>
<CalculatedMemberProperty name='FORMAT_STRING' value='$#,##0.00'/>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='4'/>
</CalculatedMember>
<CalculatedMember
name='Profit last Period'
dimension='Measures'
formula='COALESCEEMPTY((Measures.[Profit], [Time].[Time].PREVMEMBER), Measures.[Profit])'
visible='false'>
<CalculatedMemberProperty name='MEMBER_ORDINAL' value='5'/>
</CalculatedMember>
</CalculatedMembers>
</Cube> <Cube name='Warehouse and Sales' >
<Dimensions>
<Dimension source='Store2'/>
<Dimension source='Store3'/>
</Dimensions> <MeasureGroups>
<MeasureGroup table='sales_fact_1997'>
<Measures>
<Measure name='Sales Count' column='product_id' aggregator='count'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Store2' foreignKeyColumn='store_id'/>
<ForeignKeyLink dimension='Store3' foreignKeyColumn='product_id'/> </DimensionLinks>
</MeasureGroup>
</MeasureGroups>
</Cube> <Cube name='HR'>
<Dimensions>
<Dimension name='Employee' key='Employee Id'>
<Attributes>
<Attribute name='Manager Id' table='employee' keyColumn='supervisor_id'/>
<Attribute name='Employee Id' table='employee' keyColumn='employee_id' nameColumn='full_name' orderByColumn='employee_id'/>
<Attribute name='Store Id' table='employee' keyColumn='store_id'/>
<Attribute name='Store Type' table='store' keyColumn='store_type' hierarchyAllMemberName='All Store Types'/>
<Attribute name='Pay Type' table='position' keyColumn='pay_type' hierarchyAllMemberName='All Pay Types'/>
<Attribute name='Management Role' table='position' keyColumn='management_role'/>
<Attribute name='Position Title' table='position'>
<Key>
<Column name='management_role'/>
<Column name='position_title'/>
</Key>
<Name>
<Column name='position_title'/>
</Name>
<OrderBy>
<Column name='position_id'/>
</OrderBy>
</Attribute>
<Attribute name='Marital Status' table='employee' keyColumn='marital_status'/>
<Attribute name='Gender' table='employee' keyColumn='gender'/>
<Attribute name='Salary' table='employee' keyColumn='salary'/>
<Attribute name='Education Level' table='employee' keyColumn='education_level'/>
</Attributes>
<Hierarchies>
<Hierarchy name='Employees' allMemberName='All Employees'>
<Level attribute='Employee Id' parentAttribute='Manager Id' nullParentValue='0'>
<Closure table='employee_closure' parentColumn='supervisor_id' childColumn='employee_id'/>
</Level>
</Hierarchy>
<Hierarchy name='Position' allMemberName='All Position'>
<Level attribute='Management Role'/>
<Level attribute='Position Title'/>
</Hierarchy>
</Hierarchies>
</Dimension>
<Dimension name="Actual VS Budget" hanger="true">
<Attributes>
<Attribute name="Type"/>
</Attributes>
</Dimension>
<Dimension name='Department' table='department' key='Department Description'>
<Attributes>
<Attribute name='Department Description' keyColumn='department_id'/>
</Attributes>
<Hierarchies>
<Hierarchy name='Department'>
<Level attribute='Department Description'/>
</Hierarchy>
</Hierarchies>
</Dimension>
<!-- Use private "Time" dimension because key is different than public
"Time" dimension. -->
<Dimension name='Time' table='time_by_day' type='TIME' key='Time Id'>
<Attributes>
<Attribute name='Year' keyColumn='the_year' levelType='TimeYears' hasHierarchy='false'/>
<Attribute name='Quarter' levelType='TimeQuarters' hasHierarchy='false'>
<Key>
<Column name='the_year'/>
<Column name='quarter'/>
</Key>
<Name>
<Column name='quarter'/>
</Name>
</Attribute>
<!-- Use the_month as source for the name, so members look like
[Time].[1997].[Q1].[Jan] rather than [Time].[1997].[Q1].[1]. -->
<Attribute name='Month' hasHierarchy='false'>
<Key>
<Column name='the_year'/>
<Column name='month_of_year'/>
</Key>
<Name>
<Column name='the_month'/>
</Name>
</Attribute>
<Attribute name='Date' keyColumn='the_date' hasHierarchy='false'/>
<Attribute name='Time Id' keyColumn='time_id' hasHierarchy='false'/>
</Attributes> <Hierarchies>
<Hierarchy name='Time' hasAll='false'>
<Level attribute='Year'/>
<Level attribute='Quarter'/>
<Level attribute='Month'/>
</Hierarchy>
</Hierarchies>
</Dimension> <Dimension source='Store'/>
</Dimensions> <MeasureGroups>
<MeasureGroup name='HR' table='salary'>
<Measures>
<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='#,#'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Time' foreignKeyColumn='pay_date' attribute='Date'/>
<ForeignKeyLink dimension='Department' foreignKeyColumn='department_id'/>
<ForeignKeyLink dimension='Employee' foreignKeyColumn='employee_id'/>
<ReferenceLink dimension='Store' viaDimension='Employee' viaAttribute='Store Id'/>
</DimensionLinks>
</MeasureGroup>
</MeasureGroups> <CalculatedMembers>
<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]'/>
<CalculatedMember name="Test" hierarchy="[Store].[Stores]" formula="[Store].[Stores].[All Stores]"/>
</CalculatedMembers>
<CalculatedMember hierarchy="[Actual VS Budget].[Type]" name="Actual">
<Formula>
[Store].[Stores].[All Stores]
</Formula>
</CalculatedMember>
</Cube> <!-- Cubes for compatibility with old FoodMart. Will put them
in a new schema at some point. -->
<Cube name='Warehouse'>
<Dimensions>
<Dimension source='Store'/>
<Dimension source='Time'/>
<Dimension source='Product'/>
<Dimension source='Warehouse'/>
</Dimensions> <MeasureGroups>
<MeasureGroup name='Warehouse' table='inventory_fact_1997'>
<Measures>
<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_profit' aggregator='sum' datatype='Numeric'/>
</Measures>
<DimensionLinks>
<ForeignKeyLink dimension='Store' foreignKeyColumn='store_id'/>
<ForeignKeyLink dimension='Time' foreignKeyColumn='time_id'/>
<ForeignKeyLink dimension='Product' foreignKeyColumn='product_id'/>
<ForeignKeyLink dimension='Warehouse' foreignKeyColumn=''>
<ForeignKey>
<Column name='warehouse_id'/>
</ForeignKey>
</ForeignKeyLink>
</DimensionLinks>
</MeasureGroup>
</MeasureGroups>
<NamedSets>
<NamedSet name='Top Sellers'>
<Formula>TopCount([Warehouse].[Warehouse Name].MEMBERS, 5, [Measures].[Warehouse Sales])</Formula>
</NamedSet>
</NamedSets> </Cube> <!-- A cube based on a single table. -->
<Cube name='Store'>
<Dimensions>
<!-- We could have used the shared dimension 'Store Type', but we
want to test private dimensions without primary key. -->
<Dimension name='Store Type' key='Store Type'>
<Attributes>
<Attribute name='Store Type' table='store' keyColumn='store_type' hasHierarchy='true'/>
</Attributes>
</Dimension>
<Dimension source='Store'/>
<Dimension name='Has coffee bar'>
<Attributes>
<Attribute name='Has coffee bar' table='store' datatype='Boolean' keyColumn='coffee_bar' hasHierarchy='true'/>
</Attributes>
</Dimension>
</Dimensions> <MeasureGroups>
<MeasureGroup name='Store' table='store'>
<Measures>
<Measure name='Store Sqft' column='store_sqft' aggregator='sum'
formatString='#,###'/>
<Measure name='Grocery Sqft' column='grocery_sqft' aggregator='sum'
formatString='#,###'/>
</Measures>
<DimensionLinks>
<FactLink dimension='Store'/>
<FactLink dimension='Store Type'/>
<FactLink dimension='Has coffee bar'/>
</DimensionLinks>
</MeasureGroup>
</MeasureGroups>
</Cube> <!--<Cube name='HR'>-->
<!--<Dimensions>-->
<!--<Dimension source='Time'/>-->
<!--</Dimensions>-->
<!--<MeasureGroups>-->
<!--<MeasureGroup name='HR' table='salary'>-->
<!--<Measures>-->
<!--<Measure name='Org Salary' aggregator='sum' column='salary_paid'/>-->
<!--</Measures>-->
<!--<DimensionLinks>-->
<!--<ForeignKeyLink dimension='Time' foreignKeyColumn='pay_date' attribute='Date'/>-->
<!--</DimensionLinks>-->
<!--</MeasureGroup>-->
<!--</MeasureGroups>-->
<!--</Cube>--> <!-- 第四个关键节点:Role 角色权限控制配置 -->
<Role name='California manager'>
<SchemaGrant access='none'><!--只允许访问Sales这个Cube-->
<CubeGrant cube='Sales' access='all'>
<HierarchyGrant hierarchy='[Store].[Stores]' access='custom' topLevel='[Store].[Stores].[Store Country]'>
<MemberGrant member='[Store].[Stores].[USA].[CA]' access='all'/>
<MemberGrant member='[Store].[Stores].[USA].[CA].[Los Angeles]' access='none'/>
</HierarchyGrant>
<HierarchyGrant hierarchy='[Customer].[Customers]' access='custom' topLevel='[Customer].[Customers].[State Province]' bottomLevel='[Customer].[Customers].[City]'>
<MemberGrant member='[Customer].[Customers].[USA].[CA]' access='all'/>
<MemberGrant member='[Customer].[Customers].[USA].[CA].[Los Angeles]' access='none'/>
</HierarchyGrant>
<HierarchyGrant hierarchy='[Gender]' access='none'/>
</CubeGrant>
</SchemaGrant>
</Role> <Role name='No HR Cube'><!--除了HR这个Cube其他的外都能访问-->
<SchemaGrant access='all'>
<CubeGrant cube='HR' access='none'/>
</SchemaGrant>
</Role> <Role name='No Cubes'><!--不允许访问任何Cube-->
<SchemaGrant access='none'/>
</Role> </Schema>

[saiku] schema文件分析的更多相关文章

  1. [mondrian] 分析一个简单的schema文件

    <?xml version="1.0" encoding="UTF-8"?> <Schema name="Mondrian" ...

  2. 转【Oracle】一款非常好用的trace文件分析工具

    [Oracle]一款非常好用的trace文件分析工具之一   北在南方 2016-04-14 11:23:58 浏览547 评论0 摘要: 介绍一款非常好用的10046分析工具--trca(Trace ...

  3. linux实践之ELF文件分析

    linux实践之ELF文件分析 下面开始elf文件的分析. 我们首先编写一个简单的C代码. 编译链接生成可执行文件. 首先,查看scn15elf.o文件的详细信息. 以16进制形式查看scn15elf ...

  4. 蓝屏 Dump文件分析方法

    WinDbg使用有点麻烦,还要符号表什么的.试了下,感觉显示很乱,分析的也不够全面... 试试其他的吧!今天电脑蓝屏了,就使用其dump文件测试,如下: 1.首先,最详细的,要属Osr Online这 ...

  5. KEIL MDK输出map文件分析

    一.文件分析流程 1.第一部分:Section Cross References 主要是各个源文件生成的模块之间相互引用的关系. stm32f10x.o(STACK) refers (Special) ...

  6. 【HTML/XML 10】XML文档中的Schema文件

    导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema.Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的 ...

  7. ecshop init.php文件分析

    1.  ecshop init.php文件分析 2.  <?php  3.   4.  /**  5.  * ECSHOP 前台公用文件  6.  * ===================== ...

  8. [转载]mysql慢日志文件分析处理

    原文地址:mysql慢日志文件分析处理作者:maxyicha mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysq ...

  9. 关于XML的Schema文件讲解

    1 Schema概述 1.1 什么是Schema l  Schema是新的XML文档约束:DTD出现的比较早. l  Schema要比DTD强大很多: l  Schema本身也是XML文档,但Sche ...

随机推荐

  1. [OSG]OSG的相关扩展

    参考:osg官网 http://www.osgchina.org/index.php?view=article&id=176 http://trac.openscenegraph.org/pr ...

  2. Rails Guide--Working with JavaScript in Rails; 如何把jquery转化为原生js

    1 An Introduction to Ajax 打开网页的的过程也叫:request response cycel. JavaScript也可以request然后parse the respons ...

  3. Rails 5 Test Prescriptions 第3章Test-Driven Rails

    本章,你将扩大你的模型测试,测试整个Rails栈的逻辑(从请求到回复,使用端到端测试). 使用Capybara来帮助写end-to-end 测试. 好的测试风格,包括端到端测试,大量目标明确的单元测试 ...

  4. myeclipse:web项目不能显示Web App Libraries

    项目根路径下.classpath文件,加上 <classpathentry kind="con" path="org.eclipse.jst.j2ee.intern ...

  5. Lightoj-1220

    https://vjudge.net/problem/LightOJ-1220 求x=bp中最大的p,x可能为负数. 因数分解,x=p1x1*p2x2*...*pnxn x=(p1x1'*p2x2'* ...

  6. Leetcode 50

    //1开始我只是按照原来快速幂的思想,当n <0 时,n变成-n,发现当n取-INTMAX时会发生越界的问题,然后在改快速幂代码的时候逐渐了解到快速幂的本质,其实位运算对快速幂来说速度加快不了多 ...

  7. 115. Distinct Subsequences *HARD* -- 字符串不连续匹配

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  8. WEB标准以及W3C的理解和认识

    web标准简单来说可以分为结构.表现和行为.其中结构主要是有HTML标签组成.表现即指css样式表,通过css可以是页面的结构标签更具美感.行为是指页面和用户具有一定的交互,同时页面结构或者表现发生变 ...

  9. eclipse SVN 上传.so库文件

    eclipse SVN提交代码的时候,是自动忽略.so库文件的.用下面所说的操作后,.so库文件右下角的图标会变成一个蓝色的+号的图标,这样就可以提交.so文件了 选择要上传的.so文件,右键 ——& ...

  10. spring boot 教程(三)配置详解

    在大部分情况下,我们不需要做太多的配置就能够让spring boot正常运行.在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性. Spring Boot 支持多种外部配置方式 这些 ...