1
Creating Cube Definition using XML file
2
=======================================
4
.. describe:: Things to know
6
Before going through XML details its good to have an idea of all :ref:`Terminolgies <terminologies-link>` of OLAP.
8
**Lets understand XML file in details**
11
**Step: 1. The first step is to specify the database it will use with parameter like name, database name , database login and database password**
15
<record model="olap.fact.database" id="fact_databases_BI">
16
<field name="name">Tiny ERP databases</field>
17
<field name="db_name">Sales</field>
18
<field name="db_login">postgres</field>
19
<field name="db_password">postgres</field>
22
* This will create the connection parameters needed for connecting to the database.
24
**Step: 2. Defining Schema**
28
<record model="olap.schema" id="schema_main_sales">
29
<field name="name">tinysales</field>
30
<field name="state">none</field>
31
<field name="database_id" ref="fact_databases_BI"/>
34
* This will create schema name tinysales for fact_database_BI made in step 1
37
**Step: 3. Defining fact table to be used (In this case, sale_order_line)**
41
<record model="olap.cube.table" id="table_sales_order_line">
42
<field name="name">sale_order_line</field>
43
<field name='schema_id' ref='schema_main_sales'/>
46
**Step: 4. Making Cube on fact_table**
50
<record model="olap.cube" id="cube_sales_order_line">
51
<field name="name">sale_order_line</field>
52
<field name="table_id" ref="table_sales_order_line"/>
53
<field name="schema_id" ref="schema_main_sales"/>
56
* This will create cube name sale_order_line
58
**Step: 5. Creating Dimension product**
60
* This will used to fetch and make MDX Query on all the product
64
<record model="olap.dimension" id="dimension_product_template">
65
<field name="name">Products</field>
66
<field name="cube_id" ref="cube_sales_order_line"/>
69
<record model="olap.cube.table" id="table_product_template">
70
<field name="name">product_product</field>
73
**Step: 5a. Creating Hierarchy for the Dimension Product**
77
<record model="olap.hierarchy" id="hierarchy_product_template">
78
<field name="name">All Products</field>
79
<field name="dimension_id" ref="dimension_product_template"/>
80
<field name="primary_key_table">product_product</field>
81
<field name="table_id" ref="table_product_template"/>
84
**Step: 5b Creating Level for the Dimension Product**
86
First,We Create Column.
90
<record model="olap.database.columns" id="columns_product_product_default_code">
91
<field name="name">default_code</field>
92
<field name="column_db_name">default_code</field>
93
<field name="type">varchar</field>
94
<field name="table_id" ref="table_product_template>
95
<field name="active">True</field>
102
<record model="olap.level" id="level_product_template">
103
<field name="name">default_code</field>
104
<field name="column_name" ref="columns_product_product_default_code"></field>
105
<field name="hierarchy_id" ref="hierarchy_product_template"/>
106
<field name="table_name">res_partner</field>
107
<field name="column_id_name">name</field>
110
**Step: 6 Creating Dimension date_order up to the quarters**
114
<record model="olap.dimension" id="dimension_sales_order">
115
<field name="name">Order Date</field>
116
<field name="cube_id" ref="cube_sales_order_line"/>
119
<record model="olap.cube.table" id="table_sales_order">
120
<field name="name">sale_order</field>
123
<record model="olap.hierarchy" id="hierarchy_sales_order">
124
<field name="name">Order Date</field>
125
<field name="dimension_id" ref="dimension_sales_order"/>
126
<field name="primary_key_table">sale_order</field>
127
<field name="table_id" ref="table_sales_order"/>
130
<record model="olap.database.columns" id="columns_sale_order_date_order">
131
<field name="name">date_order</field>
132
<field name="column_db_name">date_order</field>
133
<field name="type">date</field>
134
<field name="table_id" ref="table_sale_order"/>
135
<field name="active">True</field>
138
Making levels in Order Date so to get details as per year,quarters and months.
142
<record model="olap.level" id="level_sales_order">
143
<field name="name">date_order</field>
144
<field name="column_name" ref="columns_sale_order_date_order"></field>
145
<field name="column_id_name">date_order</field>
146
<field name="type">date_year</field>
147
<field name="sequence">1</field>
148
<field name="table_name">sale_order</field>
149
<field name="hierarchy_id" ref="hierarchy_sales_order"/>
152
<record model="olap.level" id="level_sales_order_q">
153
<field name="name">date_order</field>
154
<field name="column_name" ref="columns_sale_order_date_order"></field>
155
<field name="column_id_name">date_order</field>
156
<field name="type">date_quarter</field>
157
<field name="sequence">2</field>
158
<field name="table_name">sale_order</field>
159
<field name="hierarchy_id" ref="hierarchy_sales_order"/>
161
<record model="olap.level" id="level_sales_order_m">
162
<field name="name">date_order</field>
163
<field name="column_name" ref="columns_sale_order_date_order"></field>
164
<field name="column_id_name">date_order</field>
165
<field name="type">date_month</field>
166
<field name="sequence">3</field>
167
<field name="table_name">sale_order</field>
168
<field name="hierarchy_id" ref="hierarchy_sales_order"/>
171
**Step: 7 Creating Dimension res_country**
175
<record model="olap.cube.table" id="table_sale_order">
176
<field name="name">sale_order</field>
177
<field name='schema_id' ref='schema_main_sales'/>
180
<record model="olap.cube.table" id="table_partner_address_0">
181
<field name="name">res_partner_address</field>
182
<field name='schema_id' ref='schema_main_sales'/>
184
<record model="olap.cube.table" id="table_partner_address_1">
185
<field name="name">res_country</field>
186
<field name='schema_id' ref='schema_main_sales'/>
189
<record model="olap.cube.table" id="table_partner_address">
190
<field name="name">res_partner_address</field>
191
<field name='schema_id' ref='schema_main_sales'/>
194
<record model="olap.cube.table" id="table_partner_country">
195
<field name="name">sale_order_country</field>
196
<field name='schema_id' ref='schema_main_sales'/>
199
<record model="olap.dimension" id="dimension_partner_country">
200
<field name="name">Sales From Partners</field>
201
<field name="cube_id" ref="cube_sales_order_line"/>
204
<record model="olap.hierarchy" id="hierarchy_partner_country">
205
<field name="name">partner_country</field>
206
<field name="dimension_id" ref="dimension_partner_country"/>
207
<field name="primary_key_table">sale_order</field>
208
<field name="table_id" ref="table_partner_country"/>
211
<record model="olap.level" id="level_partner_country">
212
<field name="name">country_id</field>
213
<field name="column_name" ref="columns_sale_order_date_order"></field>
214
<field name="column_id_name">name</field>
215
<field name="table_name">res_country</field>
216
<field name="hierarchy_id" ref="hierarchy_partner_country"/>
219
**Step: 8 Creating Dimension res_parnter_address**
223
<record model="olap.database.columns" id="columns_res_partner_address">
224
<field name="name">name</field>
225
<field name="column_db_name">name</field>
226
<field name="type">varchar</field>
227
<field name="table_id" ref="table_sales_order"/>
228
<field name="active">True</field>
230
<record model="olap.cube.table" id="table_address">
231
<field name="name">res_partner_address</field>
232
<field name='schema_id' ref='schema_main_sales'/>
235
<record model="olap.cube.table" id="table_address_country">
236
<field name="name">sale_order_country</field>
237
<field name='schema_id' ref='schema_main_sales'/>
240
<record model="olap.dimension" id="dimension_partner_address_country">
241
<field name="name">Sales by Order Address</field>
242
<field name="cube_id" ref="cube_sales_order_line"/>
245
<record model="olap.hierarchy" id="hierarchy_partner_address_country">
246
<field name="name">address_country</field>
247
<field name="dimension_id" ref="dimension_partner_address_country"/>
248
<field name="primary_key_table">sale_order</field>
249
<field name="table_id" ref="table_address_country"/>
252
<record model="olap.level" id="level_address_country">
253
<field name="name">country_id</field>
254
<field name="sequence">1</field>
255
<field name="column_name" ref="columns_res_partner_address"></field>
256
<field name="column_id_name">country_id</field>
257
<field name="table_name">res_partner_address</field>
258
<field name="hierarchy_id" ref="hierarchy_partner_address_country"/>
261
<record model="olap.level" id="level_address_partner">
262
<field name="name">partner_id</field>
263
<field name="sequence">2</field>
264
<field name="column_name" ref="columns_res_partner_address"></field>
265
<field name="column_id_name">partner_id</field>
266
<field name="table_name">res_partner_address</field>
267
<field name="hierarchy_id" ref="hierarchy_partner_address_country"/>
271
**Step: 9 Creating Dimension res_user**
275
<record model="olap.database.columns" id="columns_res_user_name">
276
<field name="name">name</field>
277
<field name="column_db_name">name</field>
278
<field name="type">varchar</field>
279
<field name="table_id" ref="table_sales_order"/>
280
<field name="active">True</field>
283
<record model="olap.dimension" id="dimension_sales_user">
284
<field name="name">user</field>
285
<field name="cube_id" ref="cube_sales_order_line"/>
288
<record model="olap.cube.table" id="table_sales_res_users">
289
<field name="name">res_users</field>
292
<record model="olap.hierarchy" id="hierarchy_sales_user">
293
<field name="name">user</field>
294
<field name="dimension_id" ref="dimension_sales_user"/>
295
<field name="primary_key_table">res_users</field>
296
<field name="table_id" ref="table_sales_res_users"/>
299
<record model="olap.level" id="hierarchy_sales_user_level">
300
<field name="name">name</field>
301
<field name="column_name" ref="columns_res_user_name""></field>
302
<field name="hierarchy_id" ref="hierarchy_sales_user"/>
305
**Step: 10 Creating Measures Item Sold and Total Sold**
309
<record model="olap.database.columns" id="columns_sale_order_line_product_uom_qty">
310
<field name="name">product_uom_qty</field>
311
<field name="column_db_name">product_uom_qty</field>
312
<field name="type">numeric</field>
313
<field name="table_id" ref="table_sale_order_line"/>
314
<field name="active">True</field>
317
<record model="olap.measure" id="measure_item_sold">
318
<field name="name">Items Sold</field>
319
<field name="cube_id" ref="cube_sales_order_line"/>
320
<field name="value_column" ref="columns_sale_order_line_product_uom_qty"></field>
321
<field name="value_column_id_name">product_uom_qty</field>
322
<field name="table_name">sale_order_line</field>
323
<field name="agregator">sum</field>
325
<record model="olap.measure" id="measure_total_sales">
326
<field name="name">Total Sold</field>
327
<field name="cube_id" ref="cube_sales_order_line"/>
328
<field name="value_column" ref="columns_sale_order_line_price_unit"></field>
329
<field name="value_column_id_name">price_unit</field>
330
<field name="table_name">sale_order_line</field>
331
<field name="agregator">sum</field>