J'espère que je suis sur le bon forum.
Je dois réaliser un cube olap dont le but est de visualiser les n meilleurs ventes d'une période, ça peut être les deux dernières journées, la dernière semaine, le dernier mois, la dernière année ... Je veux aussi pouvoir visualiser les n meilleurs acheteurs d'une période.
Je crée pour celà un schema avec deux dimensions, clients et temps :
et une requête MDX juste pour visualiser les données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <Schema name="sales"> <Cube name="customer" cache="true" enabled="true"> <Table name="v_sales"> </Table> <Dimension type="StandardDimension" foreignKey="customer_id" name="customer"> <Hierarchy name="customer" hasAll="true" primaryKey="customer_id"> <Table name="v_customer"> </Table> <Level name="firstname" column="firstname" nameColumn="firstname" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> </Level> </Hierarchy> </Dimension> <Dimension foreignKey="time_id" name="Time"> <Hierarchy hasAll="false" primaryKey="time_id"> <Table name="bi_time"> </Table> <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true" levelType="Regular" hideMemberIf="Never"> </Level> <Level name="Month" column="the_month" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> </Level> <Level name="Day" column="the_day" uniqueMembers="false"> </Level> </Hierarchy> </Dimension> <Measure name="price" column="grand_total" datatype="Numeric" aggregator="sum" visible="true"> </Measure> <Measure name="tax_amount" column="base_tax_amount" aggregator="sum" caption="tax" visible="true"> </Measure> </Cube> </Schema>
Mon problème actuellement est de savoir si je dois m'y prendre au niveau de BD avec les group by ou si je peux me suffir de MDX.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select NON EMPTY {[Measures].[price], [Measures].[tax_amount]} ON COLUMNS, Hierarchize(Union({([Time].[2007], [customer.customer].[All customer.customers]), ([Time].[2008], [customer.customer].[All customer.customers]), ([Time].[2009], [customer.customer].[All customer.customers])}, Crossjoin([Time].[2007].Children, {[customer.customer].[All customer.customers]}))) ON ROWS from [customer]
Partager