Commit ad48ebf1c625c949318dea9d168f79ce2a93cfca
1 parent
4a9b29d3
Exists in
master
and in
7 other branches
--no commit message
Showing
1 changed file
with
1006 additions
and
0 deletions
Show diff stats
... | ... | @@ -0,0 +1,1006 @@ |
1 | +<?xml version="1.0"?> | |
2 | +<Schema name="FoodMart"> | |
3 | +<!-- | |
4 | + == $Id:$ | |
5 | + == This software is subject to the terms of the Eclipse Public License v1.0 | |
6 | + == Agreement, available at the following URL: | |
7 | + == http://www.eclipse.org/legal/epl-v10.html. | |
8 | + == Copyright (C) 2000-2002 Kana Software, Inc. | |
9 | + == Copyright (C) 2002-2009 Julian Hyde and others. | |
10 | + == All Rights Reserved. | |
11 | + == You must accept the terms of that agreement to use this software. | |
12 | + --> | |
13 | + | |
14 | +<!-- Shared dimensions --> | |
15 | + | |
16 | + <Dimension name="Store"> | |
17 | + <Hierarchy hasAll="true" primaryKey="store_id"> | |
18 | + <Table name="store"/> | |
19 | + <Level name="Store Country" column="store_country" uniqueMembers="true"/> | |
20 | + <Level name="Store State" column="store_state" uniqueMembers="true"/> | |
21 | + <Level name="Store City" column="store_city" uniqueMembers="false"/> | |
22 | + <Level name="Store Name" column="store_name" uniqueMembers="true"> | |
23 | + <Property name="Store Type" column="store_type"/> | |
24 | + <Property name="Store Manager" column="store_manager"/> | |
25 | + <Property name="Store Sqft" column="store_sqft" type="Numeric"/> | |
26 | + <Property name="Grocery Sqft" column="grocery_sqft" type="Numeric"/> | |
27 | + <Property name="Frozen Sqft" column="frozen_sqft" type="Numeric"/> | |
28 | + <Property name="Meat Sqft" column="meat_sqft" type="Numeric"/> | |
29 | + <Property name="Has coffee bar" column="coffee_bar" type="Boolean"/> | |
30 | + <Property name="Street address" column="store_street_address" type="String"/> | |
31 | + </Level> | |
32 | + </Hierarchy> | |
33 | + </Dimension> | |
34 | + | |
35 | + <Dimension name="Store Size in SQFT"> | |
36 | + <Hierarchy hasAll="true" primaryKey="store_id"> | |
37 | + <Table name="store"/> | |
38 | + <Level name="Store Sqft" column="store_sqft" type="Numeric" uniqueMembers="true"/> | |
39 | + </Hierarchy> | |
40 | + </Dimension> | |
41 | + | |
42 | + <Dimension name="Store Type"> | |
43 | + <Hierarchy hasAll="true" primaryKey="store_id"> | |
44 | + <Table name="store"/> | |
45 | + <Level name="Store Type" column="store_type" uniqueMembers="true"/> | |
46 | + </Hierarchy> | |
47 | + </Dimension> | |
48 | + | |
49 | + <Dimension name="Time" type="TimeDimension"> | |
50 | + <Hierarchy hasAll="false" primaryKey="time_id"> | |
51 | + <Table name="time_by_day"/> | |
52 | + <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true" | |
53 | + levelType="TimeYears"/> | |
54 | + <Level name="Quarter" column="quarter" uniqueMembers="false" | |
55 | + levelType="TimeQuarters"/> | |
56 | + <Level name="Month" column="month_of_year" uniqueMembers="false" type="Numeric" | |
57 | + levelType="TimeMonths"/> | |
58 | + </Hierarchy> | |
59 | + <Hierarchy hasAll="true" name="Weekly" primaryKey="time_id"> | |
60 | + <Table name="time_by_day"/> | |
61 | + <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true" | |
62 | + levelType="TimeYears"/> | |
63 | + <Level name="Week" column="week_of_year" type="Numeric" uniqueMembers="false" | |
64 | + levelType="TimeWeeks"/> | |
65 | + <Level name="Day" column="day_of_month" uniqueMembers="false" type="Numeric" | |
66 | + levelType="TimeDays"/> | |
67 | + </Hierarchy> | |
68 | + </Dimension> | |
69 | + | |
70 | + <Dimension name="Product"> | |
71 | + <Hierarchy hasAll="true" primaryKey="product_id" primaryKeyTable="product"> | |
72 | + <Join leftKey="product_class_id" rightKey="product_class_id"> | |
73 | + <Table name="product"/> | |
74 | + <Table name="product_class"/> | |
75 | + </Join> | |
76 | +<!-- | |
77 | + <Query> | |
78 | + <SQL dialect="generic"> | |
79 | +SELECT * | |
80 | +FROM "product", "product_class" | |
81 | +WHERE "product"."product_class_id" = "product_class"."product_class_id" | |
82 | + </SQL> | |
83 | + </Query> | |
84 | + <Level name="Product Family" column="product_family" uniqueMembers="true"/> | |
85 | + <Level name="Product Department" column="product_department" uniqueMembers="false"/> | |
86 | + <Level name="Product Category" column="product_category" uniqueMembers="false"/> | |
87 | + <Level name="Product Subcategory" column="product_subcategory" uniqueMembers="false"/> | |
88 | + <Level name="Brand Name" column="brand_name" uniqueMembers="false"/> | |
89 | + <Level name="Product Name" column="product_name" uniqueMembers="true"/> | |
90 | +--> | |
91 | + <Level name="Product Family" table="product_class" column="product_family" | |
92 | + uniqueMembers="true"/> | |
93 | + <Level name="Product Department" table="product_class" column="product_department" | |
94 | + uniqueMembers="false"/> | |
95 | + <Level name="Product Category" table="product_class" column="product_category" | |
96 | + uniqueMembers="false"/> | |
97 | + <Level name="Product Subcategory" table="product_class" column="product_subcategory" | |
98 | + uniqueMembers="false"/> | |
99 | + <Level name="Brand Name" table="product" column="brand_name" uniqueMembers="false"/> | |
100 | + <Level name="Product Name" table="product" column="product_name" | |
101 | + uniqueMembers="true"/> | |
102 | + </Hierarchy> | |
103 | + </Dimension> | |
104 | + | |
105 | + <Dimension name="Warehouse"> | |
106 | + <Hierarchy hasAll="true" primaryKey="warehouse_id"> | |
107 | + <Table name="warehouse"/> | |
108 | + <Level name="Country" column="warehouse_country" uniqueMembers="true"/> | |
109 | + <Level name="State Province" column="warehouse_state_province" | |
110 | + uniqueMembers="true"/> | |
111 | + <Level name="City" column="warehouse_city" uniqueMembers="false"/> | |
112 | + <Level name="Warehouse Name" column="warehouse_name" uniqueMembers="true"/> | |
113 | + </Hierarchy> | |
114 | + </Dimension> | |
115 | + | |
116 | +<!-- Sales --> | |
117 | +<Cube name="Sales" defaultMeasure="Unit Sales"> | |
118 | + <Table name="sales_fact_1997"> | |
119 | +<!-- | |
120 | + <AggExclude name="agg_l_03_sales_fact_1997" /> | |
121 | + <AggExclude name="agg_ll_01_sales_fact_1997" /> | |
122 | + <AggExclude name="agg_pl_01_sales_fact_1997" /> | |
123 | + <AggExclude name="agg_l_05_sales_fact_1997" /> | |
124 | +--> | |
125 | + <AggExclude name="agg_c_special_sales_fact_1997" /> | |
126 | +<!-- | |
127 | + <AggExclude name="agg_c_14_sales_fact_1997" /> | |
128 | +--> | |
129 | + <AggExclude name="agg_lc_100_sales_fact_1997" /> | |
130 | + <AggExclude name="agg_lc_10_sales_fact_1997" /> | |
131 | + <AggExclude name="agg_pc_10_sales_fact_1997" /> | |
132 | + <AggName name="agg_c_special_sales_fact_1997"> | |
133 | + <AggFactCount column="FACT_COUNT"/> | |
134 | + <AggIgnoreColumn column="foo"/> | |
135 | + <AggIgnoreColumn column="bar"/> | |
136 | + <AggForeignKey factColumn="product_id" aggColumn="PRODUCT_ID" /> | |
137 | + <AggForeignKey factColumn="customer_id" aggColumn="CUSTOMER_ID" /> | |
138 | + <AggForeignKey factColumn="promotion_id" aggColumn="PROMOTION_ID" /> | |
139 | + <AggForeignKey factColumn="store_id" aggColumn="STORE_ID" /> | |
140 | +<!-- | |
141 | + <AggMeasure name="[Measures].[Avg Unit Sales]" column="UNIT_SALES_AVG"/> | |
142 | +--> | |
143 | + <AggMeasure name="[Measures].[Unit Sales]" column="UNIT_SALES_SUM" /> | |
144 | + <AggMeasure name="[Measures].[Store Cost]" column="STORE_COST_SUM" /> | |
145 | + <AggMeasure name="[Measures].[Store Sales]" column="STORE_SALES_SUM" /> | |
146 | + <AggLevel name="[Time].[Year]" column="TIME_YEAR" /> | |
147 | + <AggLevel name="[Time].[Quarter]" column="TIME_QUARTER" /> | |
148 | + <AggLevel name="[Time].[Month]" column="TIME_MONTH" /> | |
149 | + </AggName> | |
150 | + </Table> | |
151 | + | |
152 | + <DimensionUsage name="Store" source="Store" foreignKey="store_id"/> | |
153 | + <DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT" | |
154 | + foreignKey="store_id"/> | |
155 | + <DimensionUsage name="Store Type" source="Store Type" foreignKey="store_id"/> | |
156 | + <DimensionUsage name="Time" source="Time" foreignKey="time_id"/> | |
157 | + <DimensionUsage name="Product" source="Product" foreignKey="product_id"/> | |
158 | + <Dimension name="Promotion Media" foreignKey="promotion_id"> | |
159 | + <Hierarchy hasAll="true" allMemberName="All Media" primaryKey="promotion_id" defaultMember="All Media"> | |
160 | + <Table name="promotion"/> | |
161 | + <Level name="Media Type" column="media_type" uniqueMembers="true"/> | |
162 | + </Hierarchy> | |
163 | + </Dimension> | |
164 | + <Dimension name="Promotions" foreignKey="promotion_id"> | |
165 | + <Hierarchy hasAll="true" allMemberName="All Promotions" primaryKey="promotion_id" defaultMember="[All Promotions]"> | |
166 | + <Table name="promotion"/> | |
167 | + <Level name="Promotion Name" column="promotion_name" uniqueMembers="true"/> | |
168 | + </Hierarchy> | |
169 | + </Dimension> | |
170 | + <Dimension name="Customers" foreignKey="customer_id"> | |
171 | + <Hierarchy hasAll="true" allMemberName="All Customers" primaryKey="customer_id"> | |
172 | + <Table name="customer"/> | |
173 | + <Level name="Country" column="country" uniqueMembers="true"/> | |
174 | + <Level name="State Province" column="state_province" uniqueMembers="true"/> | |
175 | + <Level name="City" column="city" uniqueMembers="false"/> | |
176 | + <Level name="Name" column="customer_id" type="Numeric" uniqueMembers="true"> | |
177 | + <NameExpression> | |
178 | + <SQL dialect="oracle"> | |
179 | +"fname" || ' ' || "lname" | |
180 | + </SQL> | |
181 | + <SQL dialect="access"> | |
182 | +fname + ' ' + lname | |
183 | + </SQL> | |
184 | + <SQL dialect="postgres"> | |
185 | +"fname" || ' ' || "lname" | |
186 | + </SQL> | |
187 | + <SQL dialect="mysql"> | |
188 | +CONCAT(`customer`.`fname`, ' ', `customer`.`lname`) | |
189 | + </SQL> | |
190 | + <SQL dialect="mssql"> | |
191 | +fname + ' ' + lname | |
192 | + </SQL> | |
193 | + <SQL dialect="derby"> | |
194 | +"customer"."fullname" | |
195 | + </SQL> | |
196 | + <SQL dialect="db2"> | |
197 | +CONCAT(CONCAT("customer"."fname", ' '), "customer"."lname") | |
198 | + </SQL> | |
199 | + <SQL dialect="luciddb"> | |
200 | +"fname" || ' ' || "lname" | |
201 | + </SQL> | |
202 | + <SQL dialect="teradata"> | |
203 | +"fname" || ' ' || "lname" | |
204 | + </SQL> | |
205 | + <SQL dialect="generic"> | |
206 | +"fname" | |
207 | + </SQL> | |
208 | + </NameExpression> | |
209 | + <OrdinalExpression> | |
210 | + <SQL dialect="oracle"> | |
211 | +"fname" || ' ' || "lname" | |
212 | + </SQL> | |
213 | + <SQL dialect="access"> | |
214 | +fname + ' ' + lname | |
215 | + </SQL> | |
216 | + <SQL dialect="postgres"> | |
217 | +"fname" || ' ' || "lname" | |
218 | + </SQL> | |
219 | + <SQL dialect="mysql"> | |
220 | +CONCAT(`customer`.`fname`, ' ', `customer`.`lname`) | |
221 | + </SQL> | |
222 | + <SQL dialect="mssql"> | |
223 | +fname + ' ' + lname | |
224 | + </SQL> | |
225 | + <SQL dialect="derby"> | |
226 | +"customer"."fullname" | |
227 | + </SQL> | |
228 | + <SQL dialect="db2"> | |
229 | +CONCAT(CONCAT("customer"."fname", ' '), "customer"."lname") | |
230 | + </SQL> | |
231 | + <SQL dialect="luciddb"> | |
232 | +"fname" || ' ' || "lname" | |
233 | + </SQL> | |
234 | + <SQL dialect="generic"> | |
235 | +"fname" | |
236 | + </SQL> | |
237 | + </OrdinalExpression> | |
238 | + <Property name="Gender" column="gender"/> | |
239 | + <Property name="Marital Status" column="marital_status"/> | |
240 | + <Property name="Education" column="education"/> | |
241 | + <Property name="Yearly Income" column="yearly_income"/> | |
242 | + </Level> | |
243 | + </Hierarchy> | |
244 | + </Dimension> | |
245 | + <Dimension name="Education Level" foreignKey="customer_id"> | |
246 | + <Hierarchy hasAll="true" primaryKey="customer_id"> | |
247 | + <Table name="customer"/> | |
248 | + <Level name="Education Level" column="education" uniqueMembers="true"/> | |
249 | + </Hierarchy> | |
250 | + </Dimension> | |
251 | + <Dimension name="Gender" foreignKey="customer_id"> | |
252 | + <Hierarchy hasAll="true" allMemberName="All Gender" primaryKey="customer_id"> | |
253 | + <Table name="customer"/> | |
254 | + <Level name="Gender" column="gender" uniqueMembers="true"/> | |
255 | + </Hierarchy> | |
256 | + </Dimension> | |
257 | + <Dimension name="Marital Status" foreignKey="customer_id"> | |
258 | + <Hierarchy hasAll="true" allMemberName="All Marital Status" primaryKey="customer_id"> | |
259 | + <Table name="customer"/> | |
260 | + <Level name="Marital Status" column="marital_status" uniqueMembers="true" approxRowCount="111"/> | |
261 | + </Hierarchy> | |
262 | + </Dimension> | |
263 | + <Dimension name="Yearly Income" foreignKey="customer_id"> | |
264 | + <Hierarchy hasAll="true" primaryKey="customer_id"> | |
265 | + <Table name="customer"/> | |
266 | + <Level name="Yearly Income" column="yearly_income" uniqueMembers="true"/> | |
267 | + </Hierarchy> | |
268 | + </Dimension> | |
269 | + | |
270 | + <Measure name="Unit Sales" column="unit_sales" aggregator="sum" | |
271 | + formatString="Standard"/> | |
272 | + <Measure name="Store Cost" column="store_cost" aggregator="sum" | |
273 | + formatString="#,###.00"/> | |
274 | + <Measure name="Store Sales" column="store_sales" aggregator="sum" | |
275 | + formatString="#,###.00"/> | |
276 | + <Measure name="Sales Count" column="product_id" aggregator="count" | |
277 | + formatString="#,###"/> | |
278 | + <Measure name="Customer Count" column="customer_id" | |
279 | + aggregator="distinct-count" formatString="#,###"/> | |
280 | + <Measure name="Promotion Sales" aggregator="sum" formatString="#,###.00"> | |
281 | + <MeasureExpression> | |
282 | + <SQL dialect="access"> | |
283 | +Iif("sales_fact_1997"."promotion_id" = 0, 0, "sales_fact_1997"."store_sales") | |
284 | + </SQL> | |
285 | + <SQL dialect="oracle"> | |
286 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
287 | + </SQL> | |
288 | + <SQL dialect="postgres"> | |
289 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
290 | + </SQL> | |
291 | + <SQL dialect="mysql"> | |
292 | +(case when `sales_fact_1997`.`promotion_id` = 0 then 0 else `sales_fact_1997`.`store_sales` end) | |
293 | + </SQL> | |
294 | + <!-- Workaround the fact that Infobright does not have a CASE operator. | |
295 | + The simpler expression gives wrong results, so some tests are | |
296 | + disabled. --> | |
297 | + <SQL dialect="infobright"> | |
298 | +`sales_fact_1997`.`store_sales` | |
299 | + </SQL> | |
300 | + <SQL dialect="derby"> | |
301 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
302 | + </SQL> | |
303 | + <SQL dialect="luciddb"> | |
304 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
305 | + </SQL> | |
306 | + <SQL dialect="db2"> | |
307 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
308 | + </SQL> | |
309 | + <SQL dialect="generic"> | |
310 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
311 | + </SQL> | |
312 | + </MeasureExpression> | |
313 | + </Measure> | |
314 | + <CalculatedMember | |
315 | + name="Profit" | |
316 | + dimension="Measures"> | |
317 | + <Formula>[Measures].[Store Sales] - [Measures].[Store Cost]</Formula> | |
318 | + <CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/> | |
319 | + </CalculatedMember> | |
320 | + <CalculatedMember | |
321 | + name="Profit last Period" | |
322 | + dimension="Measures" | |
323 | + formula="COALESCEEMPTY((Measures.[Profit], [Time].PREVMEMBER), Measures.[Profit])" | |
324 | + visible="false"> | |
325 | + <CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/> | |
326 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="18"/> | |
327 | + </CalculatedMember> | |
328 | + <CalculatedMember | |
329 | + name="Profit Growth" | |
330 | + dimension="Measures" | |
331 | + formula="([Measures].[Profit] - [Measures].[Profit last Period]) / [Measures].[Profit last Period]" | |
332 | + visible="true" | |
333 | + caption="Gewinn-Wachstum"> | |
334 | + <CalculatedMemberProperty name="FORMAT_STRING" value="0.0%"/> | |
335 | + </CalculatedMember> | |
336 | +</Cube> | |
337 | +<Cube name="Sales Scenario" defaultMeasure="Unit Sales"> | |
338 | + <Table name="sales_fact_1997"> | |
339 | +<!-- | |
340 | + <AggExclude name="agg_l_03_sales_fact_1997" /> | |
341 | + <AggExclude name="agg_ll_01_sales_fact_1997" /> | |
342 | + <AggExclude name="agg_pl_01_sales_fact_1997" /> | |
343 | + <AggExclude name="agg_l_05_sales_fact_1997" /> | |
344 | +--> | |
345 | + <AggExclude name="agg_c_special_sales_fact_1997" /> | |
346 | +<!-- | |
347 | + <AggExclude name="agg_c_14_sales_fact_1997" /> | |
348 | +--> | |
349 | + <AggExclude name="agg_lc_100_sales_fact_1997" /> | |
350 | + <AggExclude name="agg_lc_10_sales_fact_1997" /> | |
351 | + <AggExclude name="agg_pc_10_sales_fact_1997" /> | |
352 | + <AggName name="agg_c_special_sales_fact_1997"> | |
353 | + <AggFactCount column="FACT_COUNT"/> | |
354 | + <AggIgnoreColumn column="foo"/> | |
355 | + <AggIgnoreColumn column="bar"/> | |
356 | + <AggForeignKey factColumn="product_id" aggColumn="PRODUCT_ID" /> | |
357 | + <AggForeignKey factColumn="customer_id" aggColumn="CUSTOMER_ID" /> | |
358 | + <AggForeignKey factColumn="promotion_id" aggColumn="PROMOTION_ID" /> | |
359 | + <AggForeignKey factColumn="store_id" aggColumn="STORE_ID" /> | |
360 | +<!-- | |
361 | + <AggMeasure name="[Measures].[Avg Unit Sales]" column="UNIT_SALES_AVG"/> | |
362 | +--> | |
363 | + <AggMeasure name="[Measures].[Unit Sales]" column="UNIT_SALES_SUM" /> | |
364 | + <AggMeasure name="[Measures].[Store Cost]" column="STORE_COST_SUM" /> | |
365 | + <AggMeasure name="[Measures].[Store Sales]" column="STORE_SALES_SUM" /> | |
366 | + <AggLevel name="[Time].[Year]" column="TIME_YEAR" /> | |
367 | + <AggLevel name="[Time].[Quarter]" column="TIME_QUARTER" /> | |
368 | + <AggLevel name="[Time].[Month]" column="TIME_MONTH" /> | |
369 | + </AggName> | |
370 | + </Table> | |
371 | + | |
372 | + <DimensionUsage name="Store" source="Store" foreignKey="store_id"/> | |
373 | + <DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT" | |
374 | + foreignKey="store_id"/> | |
375 | + <DimensionUsage name="Store Type" source="Store Type" foreignKey="store_id"/> | |
376 | + <DimensionUsage name="Time" source="Time" foreignKey="time_id"/> | |
377 | + <DimensionUsage name="Product" source="Product" foreignKey="product_id"/> | |
378 | + <Dimension name="Promotion Media" foreignKey="promotion_id"> | |
379 | + <Hierarchy hasAll="true" allMemberName="All Media" primaryKey="promotion_id" defaultMember="All Media"> | |
380 | + <Table name="promotion"/> | |
381 | + <Level name="Media Type" column="media_type" uniqueMembers="true"/> | |
382 | + </Hierarchy> | |
383 | + </Dimension> | |
384 | + <Dimension name="Promotions" foreignKey="promotion_id"> | |
385 | + <Hierarchy hasAll="true" allMemberName="All Promotions" primaryKey="promotion_id" defaultMember="[All Promotions]"> | |
386 | + <Table name="promotion"/> | |
387 | + <Level name="Promotion Name" column="promotion_name" uniqueMembers="true"/> | |
388 | + </Hierarchy> | |
389 | + </Dimension> | |
390 | + <Dimension name="Customers" foreignKey="customer_id"> | |
391 | + <Hierarchy hasAll="true" allMemberName="All Customers" primaryKey="customer_id"> | |
392 | + <Table name="customer"/> | |
393 | + <Level name="Country" column="country" uniqueMembers="true"/> | |
394 | + <Level name="State Province" column="state_province" uniqueMembers="true"/> | |
395 | + <Level name="City" column="city" uniqueMembers="false"/> | |
396 | + <Level name="Name" column="customer_id" type="Numeric" uniqueMembers="true"> | |
397 | + <NameExpression> | |
398 | + <SQL dialect="oracle"> | |
399 | +"fname" || ' ' || "lname" | |
400 | + </SQL> | |
401 | + <SQL dialect="access"> | |
402 | +fname + ' ' + lname | |
403 | + </SQL> | |
404 | + <SQL dialect="postgres"> | |
405 | +"fname" || ' ' || "lname" | |
406 | + </SQL> | |
407 | + <SQL dialect="mysql"> | |
408 | +CONCAT(`customer`.`fname`, ' ', `customer`.`lname`) | |
409 | + </SQL> | |
410 | + <SQL dialect="mssql"> | |
411 | +fname + ' ' + lname | |
412 | + </SQL> | |
413 | + <SQL dialect="derby"> | |
414 | +"customer"."fullname" | |
415 | + </SQL> | |
416 | + <SQL dialect="db2"> | |
417 | +CONCAT(CONCAT("customer"."fname", ' '), "customer"."lname") | |
418 | + </SQL> | |
419 | + <SQL dialect="luciddb"> | |
420 | +"fname" || ' ' || "lname" | |
421 | + </SQL> | |
422 | + <SQL dialect="teradata"> | |
423 | +"fname" || ' ' || "lname" | |
424 | + </SQL> | |
425 | + <SQL dialect="generic"> | |
426 | +"fname" | |
427 | + </SQL> | |
428 | + </NameExpression> | |
429 | + <OrdinalExpression> | |
430 | + <SQL dialect="oracle"> | |
431 | +"fname" || ' ' || "lname" | |
432 | + </SQL> | |
433 | + <SQL dialect="access"> | |
434 | +fname + ' ' + lname | |
435 | + </SQL> | |
436 | + <SQL dialect="postgres"> | |
437 | +"fname" || ' ' || "lname" | |
438 | + </SQL> | |
439 | + <SQL dialect="mysql"> | |
440 | +CONCAT(`customer`.`fname`, ' ', `customer`.`lname`) | |
441 | + </SQL> | |
442 | + <SQL dialect="mssql"> | |
443 | +fname + ' ' + lname | |
444 | + </SQL> | |
445 | + <SQL dialect="derby"> | |
446 | +"customer"."fullname" | |
447 | + </SQL> | |
448 | + <SQL dialect="db2"> | |
449 | +CONCAT(CONCAT("customer"."fname", ' '), "customer"."lname") | |
450 | + </SQL> | |
451 | + <SQL dialect="luciddb"> | |
452 | +"fname" || ' ' || "lname" | |
453 | + </SQL> | |
454 | + <SQL dialect="generic"> | |
455 | +"fname" | |
456 | + </SQL> | |
457 | + </OrdinalExpression> | |
458 | + <Property name="Gender" column="gender"/> | |
459 | + <Property name="Marital Status" column="marital_status"/> | |
460 | + <Property name="Education" column="education"/> | |
461 | + <Property name="Yearly Income" column="yearly_income"/> | |
462 | + </Level> | |
463 | + </Hierarchy> | |
464 | + </Dimension> | |
465 | + <Dimension name="Education Level" foreignKey="customer_id"> | |
466 | + <Hierarchy hasAll="true" primaryKey="customer_id"> | |
467 | + <Table name="customer"/> | |
468 | + <Level name="Education Level" column="education" uniqueMembers="true"/> | |
469 | + </Hierarchy> | |
470 | + </Dimension> | |
471 | + <Dimension name="Gender" foreignKey="customer_id"> | |
472 | + <Hierarchy hasAll="true" allMemberName="All Gender" primaryKey="customer_id"> | |
473 | + <Table name="customer"/> | |
474 | + <Level name="Gender" column="gender" uniqueMembers="true"/> | |
475 | + </Hierarchy> | |
476 | + </Dimension> | |
477 | + <Dimension name="Marital Status" foreignKey="customer_id"> | |
478 | + <Hierarchy hasAll="true" allMemberName="All Marital Status" primaryKey="customer_id"> | |
479 | + <Table name="customer"/> | |
480 | + <Level name="Marital Status" column="marital_status" uniqueMembers="true" approxRowCount="111"/> | |
481 | + </Hierarchy> | |
482 | + </Dimension> | |
483 | + <Dimension name="Yearly Income" foreignKey="customer_id"> | |
484 | + <Hierarchy hasAll="true" primaryKey="customer_id"> | |
485 | + <Table name="customer"/> | |
486 | + <Level name="Yearly Income" column="yearly_income" uniqueMembers="true"/> | |
487 | + </Hierarchy> | |
488 | + </Dimension> | |
489 | + <Dimension name='Scenario' foreignKey='time_id'> | |
490 | +<Hierarchy primaryKey='time_id' hasAll='true'> | |
491 | +<InlineTable alias='_dummy'> | |
492 | +<ColumnDefs> | |
493 | +<ColumnDef name='foo' type='Numeric'/> | |
494 | +</ColumnDefs> | |
495 | +<Rows/> | |
496 | +</InlineTable> | |
497 | +<Level name='Scenario' column='foo'/> | |
498 | +</Hierarchy> | |
499 | +</Dimension> | |
500 | + | |
501 | + <Measure name="Unit Sales" column="unit_sales" aggregator="sum" | |
502 | + formatString="Standard"/> | |
503 | + <Measure name="Store Cost" column="store_cost" aggregator="sum" | |
504 | + formatString="#,###.00"/> | |
505 | + <Measure name="Store Sales" column="store_sales" aggregator="sum" | |
506 | + formatString="#,###.00"/> | |
507 | + <Measure name="Sales Count" column="product_id" aggregator="count" | |
508 | + formatString="#,###"/> | |
509 | + <Measure name="Customer Count" column="customer_id" | |
510 | + aggregator="distinct-count" formatString="#,###"/> | |
511 | + <Measure name="Promotion Sales" aggregator="sum" formatString="#,###.00"> | |
512 | + <MeasureExpression> | |
513 | + <SQL dialect="access"> | |
514 | +Iif("sales_fact_1997"."promotion_id" = 0, 0, "sales_fact_1997"."store_sales") | |
515 | + </SQL> | |
516 | + <SQL dialect="oracle"> | |
517 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
518 | + </SQL> | |
519 | + <SQL dialect="postgres"> | |
520 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
521 | + </SQL> | |
522 | + <SQL dialect="mysql"> | |
523 | +(case when `sales_fact_1997`.`promotion_id` = 0 then 0 else `sales_fact_1997`.`store_sales` end) | |
524 | + </SQL> | |
525 | + <!-- Workaround the fact that Infobright does not have a CASE operator. | |
526 | + The simpler expression gives wrong results, so some tests are | |
527 | + disabled. --> | |
528 | + <SQL dialect="infobright"> | |
529 | +`sales_fact_1997`.`store_sales` | |
530 | + </SQL> | |
531 | + <SQL dialect="derby"> | |
532 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
533 | + </SQL> | |
534 | + <SQL dialect="luciddb"> | |
535 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
536 | + </SQL> | |
537 | + <SQL dialect="db2"> | |
538 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
539 | + </SQL> | |
540 | + <SQL dialect="generic"> | |
541 | +(case when "sales_fact_1997"."promotion_id" = 0 then 0 else "sales_fact_1997"."store_sales" end) | |
542 | + </SQL> | |
543 | + </MeasureExpression> | |
544 | + </Measure> | |
545 | + <CalculatedMember | |
546 | + name="Profit" | |
547 | + dimension="Measures"> | |
548 | + <Formula>[Measures].[Store Sales] - [Measures].[Store Cost]</Formula> | |
549 | + <CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/> | |
550 | + </CalculatedMember> | |
551 | + <CalculatedMember | |
552 | + name="Profit last Period" | |
553 | + dimension="Measures" | |
554 | + formula="COALESCEEMPTY((Measures.[Profit], [Time].PREVMEMBER), Measures.[Profit])" | |
555 | + visible="false"> | |
556 | + <CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/> | |
557 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="18"/> | |
558 | + </CalculatedMember> | |
559 | + <CalculatedMember | |
560 | + name="Profit Growth" | |
561 | + dimension="Measures" | |
562 | + formula="([Measures].[Profit] - [Measures].[Profit last Period]) / [Measures].[Profit last Period]" | |
563 | + visible="true" | |
564 | + caption="Gewinn-Wachstum"> | |
565 | + <CalculatedMemberProperty name="FORMAT_STRING" value="0.0%"/> | |
566 | + </CalculatedMember> | |
567 | +</Cube> | |
568 | + | |
569 | +<Cube name="Warehouse"> | |
570 | + <Table name="inventory_fact_1997"/> | |
571 | + | |
572 | + <DimensionUsage name="Store" source="Store" foreignKey="store_id"/> | |
573 | + <DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT" | |
574 | + foreignKey="store_id"/> | |
575 | + <DimensionUsage name="Store Type" source="Store Type" foreignKey="store_id"/> | |
576 | + <DimensionUsage name="Time" source="Time" foreignKey="time_id"/> | |
577 | + <DimensionUsage name="Product" source="Product" foreignKey="product_id"/> | |
578 | + <DimensionUsage name="Warehouse" source="Warehouse" foreignKey="warehouse_id"/> | |
579 | + | |
580 | + <Measure name="Store Invoice" column="store_invoice" aggregator="sum"/> | |
581 | + <Measure name="Supply Time" column="supply_time" aggregator="sum"/> | |
582 | + <Measure name="Warehouse Cost" column="warehouse_cost" aggregator="sum"/> | |
583 | + <Measure name="Warehouse Sales" column="warehouse_sales" aggregator="sum"/> | |
584 | + <Measure name="Units Shipped" column="units_shipped" aggregator="sum" formatString="#.0"/> | |
585 | + <Measure name="Units Ordered" column="units_ordered" aggregator="sum" formatString="#.0"/> | |
586 | + <Measure name="Warehouse Profit" aggregator="sum"> | |
587 | + <MeasureExpression> | |
588 | + <SQL dialect="mysql"> | |
589 | +`warehouse_sales` - `inventory_fact_1997`.`warehouse_cost` | |
590 | + </SQL> | |
591 | + <SQL dialect="infobright"> | |
592 | +`warehouse_sales` - `inventory_fact_1997`.`warehouse_cost` | |
593 | + </SQL> | |
594 | + <SQL dialect="generic"> | |
595 | +"warehouse_sales" - "inventory_fact_1997"."warehouse_cost" | |
596 | + </SQL> | |
597 | + </MeasureExpression> | |
598 | + </Measure> | |
599 | + <CalculatedMember | |
600 | + name="Average Warehouse Sale" | |
601 | + dimension="Measures"> | |
602 | + <Formula>[Measures].[Warehouse Sales] / [Measures].[Warehouse Cost]</Formula> | |
603 | + <CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/> | |
604 | + </CalculatedMember> | |
605 | + <NamedSet name="Top Sellers"> | |
606 | + <Formula>TopCount([Warehouse].[Warehouse Name].MEMBERS, 5, [Measures].[Warehouse Sales])</Formula> | |
607 | + </NamedSet> | |
608 | +</Cube> | |
609 | + | |
610 | +<!-- Test a cube based upon a single table. --> | |
611 | +<Cube name="Store"> | |
612 | + <Table name="store"/> | |
613 | + <!-- We could have used the shared dimension "Store Type", but we | |
614 | + want to test private dimensions without primary key. --> | |
615 | + <Dimension name="Store Type"> | |
616 | + <Hierarchy hasAll="true"> | |
617 | + <Level name="Store Type" column="store_type" uniqueMembers="true"/> | |
618 | + </Hierarchy> | |
619 | + </Dimension> | |
620 | + | |
621 | + <!-- We don't have to specify primary key or foreign key since the shared | |
622 | + dimension "Store" has the same underlying table as the cube. --> | |
623 | + <DimensionUsage name="Store" source="Store"/> | |
624 | + | |
625 | + <Dimension name="Has coffee bar"> | |
626 | + <Hierarchy hasAll="true"> | |
627 | + <Level name="Has coffee bar" column="coffee_bar" uniqueMembers="true" | |
628 | + type="Boolean"/> | |
629 | + </Hierarchy> | |
630 | + </Dimension> | |
631 | + | |
632 | + <Measure name="Store Sqft" column="store_sqft" aggregator="sum" | |
633 | + formatString="#,###"/> | |
634 | + <Measure name="Grocery Sqft" column="grocery_sqft" aggregator="sum" | |
635 | + formatString="#,###"/> | |
636 | + | |
637 | +</Cube> | |
638 | + | |
639 | +<Cube name="HR"> | |
640 | + <Table name="salary"/> | |
641 | + <!-- Use private "Time" dimension because key is different than public | |
642 | + "Time" dimension. --> | |
643 | + <Dimension name="Time" type="TimeDimension" foreignKey="pay_date"> | |
644 | + <Hierarchy hasAll="false" primaryKey="the_date"> | |
645 | + <Table name="time_by_day"/> | |
646 | + <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true" | |
647 | + levelType="TimeYears"/> | |
648 | + <Level name="Quarter" column="quarter" uniqueMembers="false" | |
649 | + levelType="TimeQuarters"/> | |
650 | + <!-- Use the_month as source for the name, so members look like | |
651 | + [Time].[1997].[Q1].[Jan] rather than [Time].[1997].[Q1].[1]. --> | |
652 | + <Level name="Month" column="month_of_year" nameColumn="the_month" | |
653 | + uniqueMembers="false" type="Numeric" levelType="TimeMonths"/> | |
654 | + </Hierarchy> | |
655 | + </Dimension> | |
656 | + | |
657 | + <Dimension name="Store" foreignKey="employee_id" > | |
658 | + <Hierarchy hasAll="true" primaryKey="employee_id" | |
659 | + primaryKeyTable="employee"> | |
660 | + <Join leftKey="store_id" rightKey="store_id"> | |
661 | + <Table name="employee"/> | |
662 | + <Table name="store"/> | |
663 | + </Join> | |
664 | + <Level name="Store Country" table="store" column="store_country" | |
665 | + uniqueMembers="true"/> | |
666 | + <Level name="Store State" table="store" column="store_state" | |
667 | + uniqueMembers="true"/> | |
668 | + <Level name="Store City" table="store" column="store_city" | |
669 | + uniqueMembers="false"/> | |
670 | + <Level name="Store Name" table="store" column="store_name" | |
671 | + uniqueMembers="true"> | |
672 | + <Property name="Store Type" column="store_type"/> | |
673 | + <Property name="Store Manager" column="store_manager"/> | |
674 | + <Property name="Store Sqft" column="store_sqft" type="Numeric"/> | |
675 | + <Property name="Grocery Sqft" column="grocery_sqft" type="Numeric"/> | |
676 | + <Property name="Frozen Sqft" column="frozen_sqft" type="Numeric"/> | |
677 | + <Property name="Meat Sqft" column="meat_sqft" type="Numeric"/> | |
678 | + <Property name="Has coffee bar" column="coffee_bar" type="Boolean"/> | |
679 | + <Property name="Street address" column="store_street_address" | |
680 | + type="String"/> | |
681 | + </Level> | |
682 | + </Hierarchy> | |
683 | + </Dimension> | |
684 | + | |
685 | + <Dimension name="Pay Type" foreignKey="employee_id"> | |
686 | + <Hierarchy hasAll="true" primaryKey="employee_id" | |
687 | + primaryKeyTable="employee"> | |
688 | + <Join leftKey="position_id" rightKey="position_id"> | |
689 | + <Table name="employee"/> | |
690 | + <Table name="position"/> | |
691 | + </Join> | |
692 | + <Level name="Pay Type" table="position" column="pay_type" | |
693 | + uniqueMembers="true"/> | |
694 | + </Hierarchy> | |
695 | + </Dimension> | |
696 | + | |
697 | + <Dimension name="Store Type" foreignKey="employee_id"> | |
698 | + <Hierarchy hasAll="true" primaryKeyTable="employee" primaryKey="employee_id"> | |
699 | + <Join leftKey="store_id" rightKey="store_id"> | |
700 | + <Table name="employee"/> | |
701 | + <Table name="store"/> | |
702 | + </Join> | |
703 | + <Level name="Store Type" table="store" column="store_type" | |
704 | + uniqueMembers="true"/> | |
705 | + </Hierarchy> | |
706 | + </Dimension> | |
707 | + | |
708 | + <Dimension name="Position" foreignKey="employee_id"> | |
709 | + <Hierarchy hasAll="true" allMemberName="All Position" | |
710 | + primaryKey="employee_id"> | |
711 | + <Table name="employee"/> | |
712 | + <Level name="Management Role" uniqueMembers="true" | |
713 | + column="management_role"/> | |
714 | + <Level name="Position Title" uniqueMembers="false" | |
715 | + column="position_title" ordinalColumn="position_id"/> | |
716 | + </Hierarchy> | |
717 | + </Dimension> | |
718 | + | |
719 | + <Dimension name="Department" foreignKey="department_id"> | |
720 | + <Hierarchy hasAll="true" primaryKey="department_id"> | |
721 | + <Table name="department"/> | |
722 | + <Level name="Department Description" uniqueMembers="true" | |
723 | + column="department_id"/> | |
724 | + </Hierarchy> | |
725 | + </Dimension> | |
726 | + <Dimension name="Employees" foreignKey="employee_id"> | |
727 | + <Hierarchy hasAll="true" allMemberName="All Employees" | |
728 | + primaryKey="employee_id"> | |
729 | + <Table name="employee"/> | |
730 | + <Level name="Employee Id" type="Numeric" uniqueMembers="true" | |
731 | + column="employee_id" parentColumn="supervisor_id" | |
732 | + nameColumn="full_name" nullParentValue="0"> | |
733 | + <Closure parentColumn="supervisor_id" childColumn="employee_id"> | |
734 | + <Table name="employee_closure"/> | |
735 | + </Closure> | |
736 | + <Property name="Marital Status" column="marital_status"/> | |
737 | + <Property name="Position Title" column="position_title"/> | |
738 | + <Property name="Gender" column="gender"/> | |
739 | + <Property name="Salary" column="salary"/> | |
740 | + <Property name="Education Level" column="education_level"/> | |
741 | + <Property name="Management Role" column="management_role"/> | |
742 | + </Level> | |
743 | + </Hierarchy> | |
744 | + </Dimension> | |
745 | + | |
746 | + <Measure name="Org Salary" column="salary_paid" aggregator="sum" | |
747 | + formatString="Currency"/> | |
748 | + <Measure name="Count" column="employee_id" aggregator="count" | |
749 | + formatString="#,#"/> | |
750 | + <Measure name="Number of Employees" column="employee_id" | |
751 | + aggregator="distinct-count" formatString="#,#"/> | |
752 | + <CalculatedMember name="Avg Salary" dimension="Measures" | |
753 | + formatString="Currency" | |
754 | + formula="[Measures].[Org Salary]/[Measures].[Number of Employees]"/> | |
755 | +</Cube> | |
756 | + | |
757 | +<!-- Cube with one ragged hierarchy (otherwise the same as the "Sales" | |
758 | + cube). --> | |
759 | +<Cube name="Sales Ragged"> | |
760 | + <Table name="sales_fact_1997"> | |
761 | + <AggExclude name="agg_pc_10_sales_fact_1997"/> | |
762 | + <AggExclude name="agg_lc_10_sales_fact_1997"/> | |
763 | + </Table> | |
764 | + <Dimension name="Store" foreignKey="store_id"> | |
765 | + <Hierarchy hasAll="true" primaryKey="store_id"> | |
766 | + <Table name="store_ragged"/> | |
767 | + <Level name="Store Country" column="store_country" uniqueMembers="true" | |
768 | + hideMemberIf="Never"/> | |
769 | + <Level name="Store State" column="store_state" uniqueMembers="true" | |
770 | + hideMemberIf="IfParentsName"/> | |
771 | + <Level name="Store City" column="store_city" uniqueMembers="false" | |
772 | + hideMemberIf="IfBlankName"/> | |
773 | + <Level name="Store Name" column="store_name" uniqueMembers="true" | |
774 | + hideMemberIf="Never"> | |
775 | + <Property name="Store Type" column="store_type"/> | |
776 | + <Property name="Store Manager" column="store_manager"/> | |
777 | + <Property name="Store Sqft" column="store_sqft" type="Numeric"/> | |
778 | + <Property name="Grocery Sqft" column="grocery_sqft" type="Numeric"/> | |
779 | + <Property name="Frozen Sqft" column="frozen_sqft" type="Numeric"/> | |
780 | + <Property name="Meat Sqft" column="meat_sqft" type="Numeric"/> | |
781 | + <Property name="Has coffee bar" column="coffee_bar" type="Boolean"/> | |
782 | + <Property name="Street address" column="store_street_address" type="String"/> | |
783 | + </Level> | |
784 | + </Hierarchy> | |
785 | + </Dimension> | |
786 | + | |
787 | + <Dimension name="Geography" foreignKey="store_id"> | |
788 | + <Hierarchy hasAll="true" primaryKey="store_id"> | |
789 | + <Table name="store_ragged"/> | |
790 | + <Level name="Country" column="store_country" uniqueMembers="true" | |
791 | + hideMemberIf="Never"/> | |
792 | + <Level name="State" column="store_state" uniqueMembers="true" | |
793 | + hideMemberIf="IfParentsName"/> | |
794 | + <Level name="City" column="store_city" uniqueMembers="false" | |
795 | + hideMemberIf="IfBlankName"/> | |
796 | + </Hierarchy> | |
797 | + </Dimension> | |
798 | + | |
799 | + <DimensionUsage name="Store Size in SQFT" source="Store Size in SQFT" | |
800 | + foreignKey="store_id"/> | |
801 | + <DimensionUsage name="Store Type" source="Store Type" foreignKey="store_id"/> | |
802 | + <DimensionUsage name="Time" source="Time" foreignKey="time_id"/> | |
803 | + <DimensionUsage name="Product" source="Product" foreignKey="product_id"/> | |
804 | + <Dimension name="Promotion Media" foreignKey="promotion_id"> | |
805 | + <Hierarchy hasAll="true" allMemberName="All Media" primaryKey="promotion_id"> | |
806 | + <Table name="promotion"/> | |
807 | + <Level name="Media Type" column="media_type" uniqueMembers="true"/> | |
808 | + </Hierarchy> | |
809 | + </Dimension> | |
810 | + <Dimension name="Promotions" foreignKey="promotion_id"> | |
811 | + <Hierarchy hasAll="true" allMemberName="All Promotions" primaryKey="promotion_id"> | |
812 | + <Table name="promotion"/> | |
813 | + <Level name="Promotion Name" column="promotion_name" uniqueMembers="true"/> | |
814 | + </Hierarchy> | |
815 | + </Dimension> | |
816 | + <Dimension name="Customers" foreignKey="customer_id"> | |
817 | + <Hierarchy hasAll="true" allMemberName="All Customers" primaryKey="customer_id"> | |
818 | + <Table name="customer"/> | |
819 | + <Level name="Country" column="country" uniqueMembers="true"/> | |
820 | + <Level name="State Province" column="state_province" uniqueMembers="true"/> | |
821 | + <Level name="City" column="city" uniqueMembers="false"/> | |
822 | + <Level name="Name" uniqueMembers="true"> | |
823 | + <KeyExpression> | |
824 | + <SQL dialect="oracle"> | |
825 | +"fname" || ' ' || "lname" | |
826 | + </SQL> | |
827 | + <SQL dialect="access"> | |
828 | +fname + ' ' + lname | |
829 | + </SQL> | |
830 | + <SQL dialect="postgres"> | |
831 | +"fname" || ' ' || "lname" | |
832 | + </SQL> | |
833 | + <SQL dialect="mysql"> | |
834 | +CONCAT(`customer`.`fname`, ' ', `customer`.`lname`) | |
835 | + </SQL> | |
836 | + <SQL dialect="mssql"> | |
837 | +fname + ' ' + lname | |
838 | + </SQL> | |
839 | + <SQL dialect="derby"> | |
840 | +"customer"."fullname" | |
841 | + </SQL> | |
842 | + <SQL dialect="db2"> | |
843 | +CONCAT(CONCAT("customer"."fname", ' '), "customer"."lname") | |
844 | + </SQL> | |
845 | + <SQL dialect="luciddb"> | |
846 | +"fname" || ' ' || "lname" | |
847 | + </SQL> | |
848 | + <SQL dialect="generic"> | |
849 | +"fname" | |
850 | + </SQL> | |
851 | + </KeyExpression> | |
852 | + <Property name="Gender" column="gender"/> | |
853 | + <Property name="Marital Status" column="marital_status"/> | |
854 | + <Property name="Education" column="education"/> | |
855 | + <Property name="Yearly Income" column="yearly_income"/> | |
856 | + </Level> | |
857 | + </Hierarchy> | |
858 | + </Dimension> | |
859 | + <Dimension name="Education Level" foreignKey="customer_id"> | |
860 | + <Hierarchy hasAll="true" primaryKey="customer_id"> | |
861 | + <Table name="customer"/> | |
862 | + <Level name="Education Level" column="education" uniqueMembers="true"/> | |
863 | + </Hierarchy> | |
864 | + </Dimension> | |
865 | + <Dimension name="Gender" foreignKey="customer_id"> | |
866 | + <Hierarchy hasAll="true" allMemberName="All Gender" primaryKey="customer_id"> | |
867 | + <Table name="customer"/> | |
868 | + <Level name="Gender" column="gender" uniqueMembers="true"/> | |
869 | + </Hierarchy> | |
870 | + </Dimension> | |
871 | + <Dimension name="Marital Status" foreignKey="customer_id"> | |
872 | + <Hierarchy hasAll="true" allMemberName="All Marital Status" primaryKey="customer_id"> | |
873 | + <Table name="customer"/> | |
874 | + <Level name="Marital Status" column="marital_status" uniqueMembers="true"/> | |
875 | + </Hierarchy> | |
876 | + </Dimension> | |
877 | + <Dimension name="Yearly Income" foreignKey="customer_id"> | |
878 | + <Hierarchy hasAll="true" primaryKey="customer_id"> | |
879 | + <Table name="customer"/> | |
880 | + <Level name="Yearly Income" column="yearly_income" uniqueMembers="true"/> | |
881 | + </Hierarchy> | |
882 | + </Dimension> | |
883 | + <Measure name="Unit Sales" column="unit_sales" aggregator="sum" | |
884 | + formatString="Standard"/> | |
885 | + <Measure name="Store Cost" column="store_cost" aggregator="sum" | |
886 | + formatString="#,###.00"/> | |
887 | + <Measure name="Store Sales" column="store_sales" aggregator="sum" | |
888 | + formatString="#,###.00"/> | |
889 | + <Measure name="Sales Count" column="product_id" aggregator="count" | |
890 | + formatString="#,###"/> | |
891 | + <Measure name="Customer Count" column="customer_id" aggregator="distinct-count" | |
892 | + formatString="#,###"/> | |
893 | +</Cube> | |
894 | + | |
895 | +<!-- a simpler version of "Sales" (with MEMBER_ORDINAL-properties) --> | |
896 | +<Cube name="Sales 2"> | |
897 | + <Table name="sales_fact_1997"/> | |
898 | + | |
899 | + <DimensionUsage name="Time" source="Time" foreignKey="time_id"/> | |
900 | + <DimensionUsage name="Product" source="Product" foreignKey="product_id"/> | |
901 | + | |
902 | + <Dimension name="Gender" foreignKey="customer_id"> | |
903 | + <Hierarchy hasAll="true" allMemberName="All Gender" primaryKey="customer_id"> | |
904 | + <Table name="customer"/> | |
905 | + <Level name="Gender" column="gender" uniqueMembers="true"/> | |
906 | + </Hierarchy> | |
907 | + </Dimension> | |
908 | + | |
909 | + <Measure name="Sales Count" column="product_id" aggregator="count" formatString="#,###"> | |
910 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="1"/> | |
911 | + </Measure> | |
912 | + | |
913 | + <Measure name="Unit Sales" column="unit_sales" aggregator="sum" formatString="Standard"> | |
914 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="2"/> | |
915 | + </Measure> | |
916 | + | |
917 | + <Measure name="Store Sales" column="store_sales" aggregator="sum" formatString="#,###.00"> | |
918 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="3"/> | |
919 | + </Measure> | |
920 | + | |
921 | + <Measure name="Store Cost" column="store_cost" aggregator="sum" formatString="#,###.00"> | |
922 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="6"/> | |
923 | + </Measure> | |
924 | + | |
925 | + <Measure name="Customer Count" column="customer_id" aggregator="distinct-count" formatString="#,###"> | |
926 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="7"/> | |
927 | + </Measure> | |
928 | + | |
929 | + <CalculatedMember | |
930 | + name="Profit" | |
931 | + dimension="Measures"> | |
932 | + <Formula>[Measures].[Store Sales] - [Measures].[Store Cost]</Formula> | |
933 | +<CalculatedMemberProperty name="FORMAT_STRING" expression="Iif(([Measures].[Store Sales] - [Measures].[Store Cost]) < 10000, '|(#,##0.00 €)|style=red', '|#,##0.00 €|style=green')"/> | |
934 | +<CalculatedMemberProperty name="MEMBER_ORDINAL" value="4"/> | |
935 | + </CalculatedMember> | |
936 | + | |
937 | + <CalculatedMember | |
938 | + name="Profit last Period" | |
939 | + dimension="Measures" | |
940 | + formula="COALESCEEMPTY((Measures.[Profit], [Time].PREVMEMBER), Measures.[Profit])" | |
941 | + visible="false"> | |
942 | + <CalculatedMemberProperty name="MEMBER_ORDINAL" value="5"/> | |
943 | + </CalculatedMember> | |
944 | +</Cube> | |
945 | + | |
946 | +<VirtualCube name="Warehouse and Sales" defaultMeasure="Store Sales"> | |
947 | + <VirtualCubeDimension cubeName="Sales" name="Customers"/> | |
948 | + <VirtualCubeDimension cubeName="Sales" name="Education Level"/> | |
949 | + <VirtualCubeDimension cubeName="Sales" name="Gender"/> | |
950 | + <VirtualCubeDimension cubeName="Sales" name="Marital Status"/> | |
951 | + <VirtualCubeDimension name="Product"/> | |
952 | + <VirtualCubeDimension cubeName="Sales" name="Promotion Media"/> | |
953 | + <VirtualCubeDimension cubeName="Sales" name="Promotions"/> | |
954 | + <VirtualCubeDimension name="Store"/> | |
955 | + <VirtualCubeDimension name="Time"/> | |
956 | + <VirtualCubeDimension cubeName="Sales" name="Yearly Income"/> | |
957 | + <VirtualCubeDimension cubeName="Warehouse" name="Warehouse"/> | |
958 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Sales Count]"/> | |
959 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Cost]"/> | |
960 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Sales]"/> | |
961 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Unit Sales]"/> | |
962 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Profit]"/> | |
963 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Profit Growth]"/> | |
964 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Store Invoice]"/> | |
965 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Supply Time]"/> | |
966 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Units Ordered]"/> | |
967 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Units Shipped]"/> | |
968 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Cost]"/> | |
969 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Profit]"/> | |
970 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Sales]"/> | |
971 | + <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Average Warehouse Sale]"/> | |
972 | + <!-- | |
973 | + <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Sales Net]"/> | |
974 | + --> | |
975 | + <CalculatedMember name="Profit Per Unit Shipped" dimension="Measures"> | |
976 | + <Formula>[Measures].[Profit] / [Measures].[Units Shipped]</Formula> | |
977 | + </CalculatedMember> | |
978 | +</VirtualCube> | |
979 | + | |
980 | +<!-- A California manager can only see customers and stores in California. | |
981 | + They cannot drill down on Gender. --> | |
982 | +<Role name="California manager"> | |
983 | + <SchemaGrant access="none"> | |
984 | + <CubeGrant cube="Sales" access="all"> | |
985 | + <HierarchyGrant hierarchy="[Store]" access="custom" | |
986 | + topLevel="[Store].[Store Country]"> | |
987 | + <MemberGrant member="[Store].[USA].[CA]" access="all"/> | |
988 | + <MemberGrant member="[Store].[USA].[CA].[Los Angeles]" access="none"/> | |
989 | + </HierarchyGrant> | |
990 | + <HierarchyGrant hierarchy="[Customers]" access="custom" | |
991 | + topLevel="[Customers].[State Province]" bottomLevel="[Customers].[City]"> | |
992 | + <MemberGrant member="[Customers].[USA].[CA]" access="all"/> | |
993 | + <MemberGrant member="[Customers].[USA].[CA].[Los Angeles]" access="none"/> | |
994 | + </HierarchyGrant> | |
995 | + <HierarchyGrant hierarchy="[Gender]" access="none"/> | |
996 | + </CubeGrant> | |
997 | + </SchemaGrant> | |
998 | +</Role> | |
999 | + | |
1000 | +<Role name="No HR Cube"> | |
1001 | + <SchemaGrant access="all"> | |
1002 | + <CubeGrant cube="HR" access="none"/> | |
1003 | + </SchemaGrant> | |
1004 | +</Role> | |
1005 | + | |
1006 | +</Schema> | ... | ... |