3.逻辑模型
Schema的最重要的组成部分是cube、度量measure和维度dimension。
- cube是在某一特定主题区域中维度和度量的集合
- 度量measure是你所感兴趣的测量数量,例如产品的销售数量或库存成本
- 维度dimension是一种属性,或一系列属性,取决于你如何将度量划分成子类型。例如,你可能希望
<schema><br><cube name="Sales"><br><table name="sales_fact_1997"></table> <br><dimension name="Gender" foreignkey="customer_id"><br><hierarchy hasall="true" allmembername="All Genders" primarykey="customer_id"><br><table name="customer"></table> <br><level name="Gender" column="gender" uniquemembers="true"></level><br></hierarchy><br></dimension><br><dimension name="Time" foreignkey="time_id"><br><hierarchy hasall="false" primarykey="time_id"><br><table name="time_by_day"></table> <br><level name="Year" column="the_year" type="Numeric" uniquemembers="true"></level><br><level name="Quarter" column="quarter" uniquemembers="false"></level><br><level name="Month" column="month_of_year" type="Numeric" uniquemembers="false"></level><br></hierarchy><br></dimension><br><measure name="Unit Sales" column="unit_sales" aggregator="sum" formatstring="#,###"></measure><br><measure name="Store Sales" column="store_sales" aggregator="sum" formatstring="#,###.##"></measure><br><measure name="Store Cost" column="store_cost" aggregator="sum" formatstring="#,###.00"></measure><br><calculatedmember name="Profit" dimension="Measures" formula="[Measures].[Store Sales] - [Measures].[Store Cost]"><br><calculatedmemberproperty name="FORMAT_STRING" value="$#,##0.00"></calculatedmemberproperty><br></calculatedmember><br></cube><br></schema> |
上面的例子schema包含一个cube,叫做"Sales”。这个cube有两个维度,“time”和“Gender”,还有两个度量值,“Unit Sales”和“Store Sales”。我们可以基于这个Schema写一个MDX查询:
SELECT {[Measures].[Unit Sales],[Measures].[Store Sales]} ON COLUMNS,{descendants([Time].[1997].[Q1])} ON ROWS FROM [Sales] WHERE [Gender].[F]
这个查询语句基于Sales Cube([Sales]),性别是女。下面是查询结果。
[Time]
[Measures].[Unit Sales]
[Measures].[Store Sales]
[1997].[Q1]
0 0
[1997].[Q1].[Jan]
0 0
[1997].[Q1].[Feb]
0 0
[1997].[Q1].[Mar]
0 0