Loading facts at multiple levels
Hi
I have a cube with six dimensions. For one of those six dimensions I get data at all levels so what I want to do is load data at all levels and choose no aggregation for that particular dimension. I need levels in that dimension because I have other cubes in same AW for which I get only leaf level data for all dimensions. How can I load data at all levels for a given dimension?
olap version: 11.2.0.3
Thanks
Dileep.
In AWM you should be able to drag the dimension key column from the fact table to multiple levels of the hierarchy.
At the XML level you should see elements in the cube map like this:
<CubeDimensionalityMap
Name="MY_DIM"
Dimensionality="MY_DIM"
MappedDimension="MY_DIM.MY_HIER.LEAF_LEVEL"
Expression="MY_FACT.MY_DIM_COLUMN">
</CubeDimensionalityMap>The MappedDimension attribute instructs the server to load data at the LEAF_LEVEL only. To get it to load at all levels you can simply delete the MappedDimension line and recreate the cube. If you then look in the AWM mapping screen you should see MY_FACT.MY_DIM_COLUMN mapped to all levels within MY_DIM.MY_HIER.
There are a few cases where this will not work, so be warned! Here are some that I can think of.
(1) If you have an MV on the cube
(2) You are partitioning by the dimension
(3) The expression for the CubeDimensionalityMap comes from the dimension table.
Case (3) sometimes happens because users map to a dimension table column instead of to a fact table column wwhen they are different sides of the table join. For example if the table join condition is "MY_FACT.MY_DIM_COLUMN = MY_DIM_TABLE.KEY_COLUMN" then some people map to the expression MY_DIM_TABLE.KEY_COLUMN instead of to MY_FACT.MY_DIM_COLUMN. If this is true, then you can just change the expression to point to the fact column. A legitimate case of (3) happens where the fact table contains data at a lower level (e.g. DAY) than what is loaded into the AW (e.g. MONTH). A solution there is to create a VIEW that does the correct join and then map the cube to the VIEW.
Similar Messages
-
Load cube data at multiple levels
Hi All,
I have a time dimension with following hierarchies.
all_time --> Year --> Quarter -->Month
all_time -->Week
My fact table contains data at week and month level. I mapped my fact table time_key to both levels(Week and month) in AWM but when I load data into cube AWM loading data only at week level and ignoring all moths facts rows in facts table. How can I load data at both levels?
Olap Version: 10.2.0.4
Thanks
Dileep.I am trying to wrap my mind around your design. It appears that you have a fact table with two levels of granularity. Why not just have one hierarchy with a granularity at the week level?
All Time --> Year --> Quarter --> Month --> Week
Do you have some facts that relate only to a month level? If so, can you just relate the month total to one of the weeks in the month? Or is it acceptable to just have data at the month level and eliminate the week level?
If your week and month data are mutually exclusive, you could run into problems. When you look at data rolled up to the year level, for example, it would exclude the data that was inserted at the week level.
When I think of multiple hierarchies of time, I first think of calendar years versus fiscal years. The two hierarchies are completely unique due to a business requirement, yet they are clearly related as measures of time (years, months, etc.). But a fiscal month never rolls up into a calendar quarter, or a calendar day into a fiscal week or year, because the hierarchies are distinct. But the fact table is at only one level of granularity (day or week or month), no matter how it rolls up into the separate hierarchies.
At first glance, your two hierarchies look like they should be one. -
Aggregating data loaded into different hierarchy levels
I have some problems when i try to aggregate a variable called PRUEBA2_IMPORTE dimensinated by time dimension (parent-child type).
I read the help in DML Reference of the OLAP Worksheet and it said the follow:
When data is loaded into dimension values that are at different levels of a hierarchy, then you need to be careful in how you set status in the PRECOMPUTE clause in a RELATION statement in your aggregation specification. Suppose that a time dimension has a hierarchy with three levels: months aggregate into quarters, and quarters aggregate into years. Some data is loaded into month dimension values, while other data is loaded into quarter dimension values. For example, Q1 is the parent of January, February, and March. Data for March is loaded into the March dimension value. But the sum of data for January and February is loaded directly into the Q1 dimension value. In fact, the January and February dimension values contain NA values instead of data. Your goal is to add the data in March to the data in Q1. When you attempt to aggregate January, February, and March into Q1, the data in March will simply replace the data in Q1. When this happens, Q1 will only contain the March data instead of the sum of January, February, and March. To aggregate data that is loaded into different levels of a hierarchy, create a valueset for only those dimension values that contain data. DEFINE all_but_q4 VALUESET time
LIMIT all_but_q4 TO ALL
LIMIT all_but_q4 REMOVE 'Q4'
Within the aggregation specification, use that valueset to specify that the detail-level data should be added to the data that already exists in its parent, Q1, as shown in the following statement. RELATION time.r PRECOMPUTE (all_but_q4)
How to do it this for more than one dimension?
Above i wrote my case of study:
DEFINE T_TIME DIMENSION TEXT
T_TIME
200401
200402
200403
200404
200405
200406
200407
200408
200409
200410
200411
2004
200412
200501
200502
200503
200504
200505
200506
200507
200508
200509
200510
200511
2005
200512
DEFINE T_TIME_PARENTREL RELATION T_TIME <T_TIME T_TIME_HIERLIST>
-----------T_TIME_HIERLIST-------------
T_TIME H_TIME
200401 2004
200402 2004
200403 2004
200404 2004
200405 2004
200406 2004
200407 2004
200408 2004
200409 2004
200410 2004
200411 2004
2004 NA
200412 2004
200501 2005
200502 2005
200503 2005
200504 2005
200505 2005
200506 2005
200507 2005
200508 2005
200509 2005
200510 2005
200511 2005
2005 NA
200512 2005
DEFINE PRUEBA2_IMPORTE FORMULA DECIMAL <T_TIME>
EQ -
aggregate(this_aw!PRUEBA2_IMPORTE_STORED using this_aw!OBJ262568349 -
COUNTVAR this_aw!PRUEBA2_IMPORTE_COUNTVAR)
T_TIME PRUEBA2_IMPORTE
200401 NA
200402 NA
200403 2,00
200404 2,00
200405 NA
200406 NA
200407 NA
200408 NA
200409 NA
200410 NA
200411 NA
2004 4,00 ---> here its right!! but...
200412 NA
200501 5,00
200502 15,00
200503 NA
200504 NA
200505 NA
200506 NA
200507 NA
200508 NA
200509 NA
200510 NA
200511 NA
2005 10,00 ---> here must be 30,00 not 10,00
200512 NA
DEFINE PRUEBA2_IMPORTE_STORED VARIABLE DECIMAL <T_TIME>
T_TIME PRUEBA2_IMPORTE_STORED
200401 NA
200402 NA
200403 NA
200404 NA
200405 NA
200406 NA
200407 NA
200408 NA
200409 NA
200410 NA
200411 NA
2004 NA
200412 NA
200501 5,00
200502 15,00
200503 NA
200504 NA
200505 NA
200506 NA
200507 NA
200508 NA
200509 NA
200510 NA
200511 NA
2005 10,00
200512 NA
DEFINE OBJ262568349 AGGMAP
AGGMAP
RELATION this_aw!T_TIME_PARENTREL(this_aw!T_TIME_AGGRHIER_VSET1) PRECOMPUTE(this_aw!T_TIME_AGGRDIM_VSET1) OPERATOR SUM -
args DIVIDEBYZERO YES DECIMALOVERFLOW YES NASKIP YES
AGGINDEX NO
CACHE NONE
END
DEFINE T_TIME_AGGRHIER_VSET1 VALUESET T_TIME_HIERLIST
T_TIME_AGGRHIER_VSET1 = (H_TIME)
DEFINE T_TIME_AGGRDIM_VSET1 VALUESET T_TIME
T_TIME_AGGRDIM_VSET1 = (2005)
Regards,
Mel.Mel,
There are several different types of "data loaded into different hierarchy levels" and the aproach to solving the issue is different depending on the needs of the application.
1. Data is loaded symmetrically at uniform mixed levels. Example would include loading data at "quarter" in historical years, but at "month" in the current year, it does /not/ include data loaded at both quarter and month within the same calendar period.
= solved by the setting of status, or in 10.2 or later with the load_status clause of the aggmap.
2. Data is loaded at both a detail level and it's ancestor, as in your example case.
= the aggregate command overwrites aggregate values based on the values of the children, this is the only repeatable thing that it can do. The recomended way to solve this problem is to create 'self' nodes in the hierarchy representing the data loaded at the aggregate level, which is then added as one of the children of the aggregate node. This enables repeatable calculation as well as auditability of the resultant value.
Also note the difference in behavior between the aggregate command and the aggregate function. In your example the aggregate function looks at '2005', finds a value and returns it for a result of 10, the aggregate command would recalculate based on january and february for a result of 20.
To solve your usage case I would suggest a hierarchy that looks more like this:
DEFINE T_TIME_PARENTREL RELATION T_TIME <T_TIME T_TIME_HIERLIST>
-----------T_TIME_HIERLIST-------------
T_TIME H_TIME
200401 2004
200402 2004
200403 2004
200404 2004
200405 2004
200406 2004
200407 2004
200408 2004
200409 2004
200410 2004
200411 2004
200412 2004
2004_SELF 2004
2004 NA
200501 2005
200502 2005
200503 2005
200504 2005
200505 2005
200506 2005
200507 2005
200508 2005
200509 2005
200510 2005
200511 2005
200512 2005
2005_SELF 2005
2005 NA
Resulting in the following cube:
T_TIME PRUEBA2_IMPORTE
200401 NA
200402 NA
200403 2,00
200404 2,00
200405 NA
200406 NA
200407 NA
200408 NA
200409 NA
200410 NA
200411 NA
200412 NA
2004_SELF NA
2004 4,00
200501 5,00
200502 15,00
200503 NA
200504 NA
200505 NA
200506 NA
200507 NA
200508 NA
200509 NA
200510 NA
200511 NA
200512 NA
2005_SELF 10,00
2005 30,00
3. Data is loaded at a level based upon another dimension; for example product being loaded at 'UPC' in EMEA, but at 'BRAND' in APAC.
= this can currently only be solved by issuing multiple aggregate commands to aggregate the different regions with different input status, which unfortunately means that it is not compatable with compressed composites. We will likely add better support for this case in future releases.
4. Data is loaded at both an aggregate level and a detail level, but the calculation is more complicated than a simple SUM operator.
= often requires the use of ALLOCATE in order to push the data to the leaves in order to correctly calculate the aggregate values during aggregation. -
Problem in Aggregate with Multiple level of dimension
Hi,
I have a BI repository with a snowflake schema. I have also designed the business model with snowflake, It works with drilling and all but I am facing problem when I am
creating a logical column aggregating with a higher level of dimentation. Let me illustrate that :
I have the Following Hierarchy :
Tournament(id, Name) ---- > Round (id, name, tournament_id) -------> Match (id, Name, RoundId ) | Match is fact table and other 2 dimension.
I also created a logical dimension called tournament with 3 levels.
Now say I want to create a logical column Total Number of Matches , aggregating to the dimension level of Tournament. The result gives counts a 0 for every tournament. However
it is working perfectly when the dimension level is Round (which is the immediate next level after fact).
The Logical request generated (in case of Tournament level) :
MatchId:[DAggr(Measure1.MATCHID by [ Matches$.TournamentId] SB Tournament)] as c1 GB.
There is no such column as TournamentId in Matches$ table. How does the BI server got this ?
The execution plan evaluate this:
cast(NULL as INTEGER ) as c1 GB [for database 0:0,1]
Can someone please explain why is this happening, is it because of the snowflake schema, but I guess if BI server can handle a snowflake schema it should work the Aggregate
properly in multiple levels of dimensions, or it is something I am doing wrong.
Execution Environment:
Windows XP , OBI 10g on OC4J. Data source : MS Excel (ODBC 3.5)
Regards,
RuHi,
With reference to your question.
Can any operator perform this task..I don't think any single operator will help you.
I suggest using an intermediate (staging) table by using a PL SQL procedure with output port to store the values of account number provided the number of accounts are limited. Else use an array variable for account of an employee.
In short no simple solution because of the bad source design else the pivot/unpivot operator would have helped you.
Cheers
- Mohammed -
Multiple levels in a mobile game
Hi
Im a little confused on multiple levels in a j2me game with respects to re-initialising the level, once level 1 is complete.
How, and what would be the best code practise, once level1=true(complete) to load level 2. Where do i actually send my code back too, to start the next level. Do i do some kind of garbage collection/reset, then simply load all the graphics in for level 2?.
Also, some games feature levels like in an RPG, where each room is loaded when the character reaches the exit - how is this being called from the j2me code?
Thanks
SteveWould you be able to explain it to me? Here is a picture of what i'm trying to do..
When 'player_mc' touches' hitbox_mc', the movieclip 'bat_mc' plays once and erases itself.
And for the level change its the same concept... Player touches box and gets sent to second frame on timeline which is t he next level...
Been trying to figure this out all weekend and just turned to pros for help now.. -
Is it possible to load data at aggregated level directly
Hi All,
My question may sound vague but still would like to clarify this.
Is it possible to load data at some higher level than the leaf level? The reason for asking this question is that we are facing severe performance issues while loading the cube.
We are trying to reduce the number of members which inturn can reduce the loading time. On this attempt to reduce the number of members client said that there are 3 million leaf members(out of 4.3 million total members) for which they do not bother if they appear on report or not but they want to see the total value correct. i.e. the dimension will be only loaded with 1.3 million(4.3 - 3) members but the total can still be correct(including the 3 million leaf members).
Is it possible to have two loads one at leaf level only and other at parents and above levels.
DB - 10.2.0.4
Also I want to know when do we use allocmap? how does this work?
Regards,
Brijesh
Edited by: BGaur on Feb 13, 2009 3:33 PMHi Carey,
Thanks for your response.
I worked on your suggestion and I could able to load data at higher level for a value based hierarchy. But I met with a other problem while doing this.
I am describing this as a level based but while loading we are converting to value based hierarchy.
we have following levels in the customer dimension having two hierarchy
hier1
lvl1
lvl2
lvl3
lvl4
lvl5
prnt
leaf
hier2
level1
level2
level3
level4
prnt
leaf
so prnt and leaf is common levels are common in both the hierarchies but we were facing multipath issues in second hierarchy and we work around it by concatenating the level name.
In attemp to decrease the number of this dimension member(currrently 4.3 million) business suggested that there are some kind of customer for which they dont want to see the data at leaf and prnt level instead the level4 or lvl5 should have the total consisting of those members. So by this way we need not to load those members and they were making up 2.4 million out of 4.3
To implement above I did following.
1. Created six hierarchies.
one to have members from level4 till level1
second to have members from lvl5 till lvl1
third to have all members of hier1
fourth to have all members of hier2
fifth will have leaf and prnt of hier1
sixth will have leaf and prnt of hier2
In fifth and sixth hierarchy leaf is common but prnt is different due to the concatenation.
In the cube I am selecting the aggregation hierarhies as first,second,fifth and sixth. hierarchies third and fourth will be used for viewing the data.
Fact will have data corresponding for leaf level data,level4 and lvl5.
The challenge I am facing is that if there is some fact value for leaf level loaded through relational fact but no value being loaded through fact for lvl5 or level4 I am not seeing the total value as leaf value is aggregating till prnt level and no value at level4 or lvl5 so same is propagated till lvl1 and level1.
I tried to be as clear as possible but still if there is any confussion pls update the thread. I understand that the approach is vague but I am not seeing any other way.
Thanks
Brijesh -
Using SUM BY or MAX BY for multiple levels
I was wondering if anyone knows if you can use the SUM BY for multiple levels e.g.
I am using the following at the moment: SUM("Fact.Value" BY Dimension.Level1), but I also want to sum the value by a different level, so adding a second 'BY' level.
I can't seem to figure if its possible. Any help would be appreciated.Hi,
If I understood you correctly, yes, you can use for example: SUM(saw_4 by saw_1, saw_2, saw_3)
I hope this helps. -
Can we load data for all levels in ASO?
Hi All,
Im creating cube in ASO
can i load data for all levels in ASO
we can load data for all Levels In BSO but in ASO i need confirmation????
and one more
wat is the consider all levels option in ASO is used for ? wat is the purpose?
Can any one help ,it would be appriciate.
ThanksIn an ASO cube you can only load to level zero
The consider all levels if used for aggregation hints. It allows you to tell the aggregation optimizer to look at all levels when deciding if aggregation needs to be done on the dimension -
Can we load data for all levels in ASO cube
Hi All,
Can we load data for all levels of members in ASO cube in 9.3.1.
RegardsYes you can load data for all levels in an ASO cube in any version HOWEVER, none of the upper level data in any cube will be there when you look for it. You will get a warning message in the load because ASO cubes don't store data at upper levels. It is the same as loading data into dynamic calc members in BSO cube. It will do the load without compalints, but there will be no data there (At least you get the warning in ASO)
-
Load fact table with null dimension keys
Dear All,
We have OWB 10g R2 and ROLAP star schema. In our source system some rows don’t have all attributes populated with values (null value), and this empty attributes are dimension (business) keys in star schema. Is it possible to load fact table with such rows (some dimension keys are null) in the OWB mappings? We use cube operator in mappings.
Thanks And Regards
MiranThe dimension should have a row indicating UNKNOWN, this will have a business key outside of the normal range e.g. -999999.
In the mapping the missing business keys can then be NVL'd to -999999.
Cheers
Si -
Load software on multiple devices?
Does my license allow me to load Elements on multiple devices? If so, is there an iPad version?
Elements does not work on tablet devices. You are permitted two activations; either on two desktop machines or one desktop plus one laptop.
-
CL_SALV_HIERSEQ_TABLE - Multiple level heirachial sequential list
Class CL_SALV_HIERSEQ_TABLE - Can this class be used for multiple level heirarchial sequential list ?
It works perfect for 2 level heirarchial list u2013 Thanks to Rich Heilman. Say for Eg, SCARR and SFLIGHT.
My requirement has more levels. I looked into all the methods of the class, but none of them seems to help to append more levels.
Here is my requirement.
Selection screen had date range, partner functions etc ..
-->Select all Inquiries for given date range or (TABLE u2013 VBAK) given sold to party/ship to party etcu2026
-->Get all statuses (system status /user status etc (TABLE u2013 JCDS and TJ30T ).
-->Select all Quotations for given inquiry, if any
-->Select all Orders for the selected quotations, if any
-->Select all deliveries for selected orders, if any and read status, whether shipped or not (VBFA/LIKP/ VBUK )
And list these in a multilevel heirarchial mode
Inquiry1/created by/created on/ sold to party/ Application engineer/inside sales Rep
Status1 / description/ active / changed by / date
Status2/ description/ active / changed by / date
u2026..
u2026..
Status 5u2026..
Quotation1 / Created on /created by/quantityu2026
Order1/created on/created by/
Delivery1 /created on / created by/ not shipped
Delivery2/ created on / created by / partially shipped
Order2/created on/created by
Inquiry2/created by/created on/ sold to party/ Application engineer/inside sales Rep
Status1 / description/ active / changed by / date
Status2/ description/ active / changed by / date
u2026..
u2026..
Status 5u2026..
Quotation1 / Created on /created by/quantityu2026
I need atleast 3 internal tables, 1 for Inquiry, another for status data, another for Quotation/order/delivery.
Anyone has any clue, how to achieve this ? cl_salv_tree also doesnu2019t seems to helpu2026
As per my understanding, we could pass only 1 single structure to a tree output.
For eg, all lines of the tree output should be of the same structure. (please correct me if I am wrong )..
But In my case, the fields on each level are different, and I need to pass different structures to the tree.
Please let me know, if anyone have a clue..
Thanks muchSujamol (or anyone),
did you ever manage to do this? I would like to do the same.
Report SALV_DEMO_HIERSEQ_COLUMN does it for two levels. What about 3, 4.....?
Thanks. -
ARRAY and records at multiple level ? please help
Hi experts!!
I am struck up with a problem. If u can please help me.
I need a structure of this type.
create type GRADE as object(
grade varchar2(30)
/ -- works fine , creates
create type GRADE_ARRAY as VARRAY(10) of GRADE;
/ -- works fine and creates
create type SPECIES as object
Species_number number,
array_of_grade GRADE_ARRAY
/ works fine
create type SPECIES_ARRAY as VARRAY(20) of SPECIES;
-- error comes here.. Can not have multiple level..type error
and so can not go ahead. In fect I wanted to use next level also. like this.
The next command remains my dream only then because I could not create the SPECIES ARRAY it self..
create type TIMBER as object
timber_mark varchar2(6),
no_species number,
array_of_species(20) SPECIES_ARRAY
the problem is for multiple level ARRAY AND RECORD/object combination..
I tried with OBJECT AND VARRAY it does only for one level.. not even two level.
my Mail ID:
[email protected]
Thanks and Regards..
Virendra chauhanI think multi-level collections was first implemented in 9.2. You failed to mention what version of the DB you are using.
-
Multiple level bursting in OBIEE
I am creating a report in OBIEE, which needs to be bursted.
the bursting should be done at multiple levels
For ex:
take a sample report of employees table, dept table.
I want to burst by dept-wise , Job-wise and manager-wise.
i mean, 10 dept PDF , 7 position PDF and X manager PDF.
Will i be able to do this by using bursting query ??I was at a conference and heard that someone actually uses OBIEE. Is that you? Or is it two people now?
-
Before I upgraded to Firefox 4, the back button (as it is in every other browser under the sun,) had a dropdown so you could skip one tier of going back and drop back multiple levels. This is especially important when there is a site redirecting you and you can't rewind past it with single Back clicks. However, FF4 doesn't have this -- at least not by default -- and I don't see it anywhere in the options to add it. Is it hiding somewhere I haven't found, or was that removed?
You have to either click and hold the back button or right click to access the drop down selection.
Maybe you are looking for
-
Opacity problems with exported movie
Hi all I'm having an issue with Motion 5. My project is 3046x1080 @ 30fps with a transparent canvas as a background and I have my timeline with about 5 clips all placed in seperate layers. All I'm trying to do is fade from one clip to the next so I f
-
How to create an ODBC entry from Java
From Java application, how can I create an ODBC entry in Ms Windows client?
-
How to read Chinese Characters in iTunes?
Hi all, Is there anyone who can enlighten me on how I can read chinese characters in iTunes? I have quite a number of Chinese songs that I wish to be played in iTunes, but I noticed that it does not read the chinese song titles and had small rectangl
-
Timesheet App in Sharepoint 2013
How to add timesheet app in sharepoint 2013.i tried but cant get the result.Please suggest me the correct way to add timesheet App in sp 2013.Using that i want to create Dashboard for displaying the Project details. Want immediate solution for this.
-
Hi , could you please help on this scenario. We had implemented Service based IV recently, but business people want to add -ve qty during SES , before implementing this Service based IV check users can enter -ve qty in SES, because of this implementa