Define logical Key on Logical Dimension Table
It's recommended to define a logical key for any logical dimension table - in 10g there was a function on the right mouse button, as far as I remember - but in 11g there is no such functionality ? the foreign key can be added by "green plus" button, but not the primary key ?? you have to type in the name of the key, then you can choose the column and then you select as primary key ... funny.
bug or undocumented feature?
Hi Srini,
Since my main logical fact table consists of two LTS and the dimension being created from this table will also have 2 LTS, the content level will be set to all levels on which the fact is joined.
So I would like to create a logical dimension based out of my dimension and then assign the content level at the detail level.
Please let me know if I am not clear.
Thanks
Similar Messages
-
What is the use of logical key in logical tabls in bmm
hi
can any one tell me why we have to create logical key for logical table in bmm
Thanks
sreedharSee the links below
why we have to create logical key at levels in Hierarchies
Re: Business Model - Logical Primary key
Regards,
Sandeep
Edited by: Sandeep Saini on 15-Sep-2010 05:17 -
How to determine the logical Keys of logical fact table in BMM layer?
Hello guys
I'd like to know more about how to know what columns of the logical fact table should be used as key in BMM layer. How OBIEE behaving differently when different keys are selected?
In my situation, I have 1 fact table that physically joins to 20 dimensions in physical layer. Therefore, in physical layer, this fact table has about 20 foreign keys but no primary keys..
In the logical layer, this fact table is logically joined to the same group of dimension tables. So in this case, how do I know what columns in logical fact table I should use as keys?
Please advice
Thanksthanks for the reply...
The interesting thing I notice is that, when I start using fragmentation with the fact tables in its LTS, if not primary key is defined in the logical fact table, then I will be getting errors:
[nQSError: 10058] A general error has occurred. [nQSError: 14023] None of the fact sources for columns are compatible with the detail filter []. (HY000)
When I create the key by choosing random columns from the fact table as the logical key columns, this error goes way and the correct SQL is generated according to the frag..
Because of such behavior, I'd really like to know how logical key really works in BMM layer. -
Logical Key for Degenerate Dimension
Hi Gurus,
Need some help on the degenerate dimensions in the BMM layer.
I have one fact table with dimension attributes and I would like to move the attributes into separate logical table and treat it as dimension.
Now my newly created dimension has the Fact LTS and I would like to assign a logical key to the newly created table and then create the logical dimension.
Can anyone provide some inputs on we can assign the logical key to the column?
ThanksHi Srini,
Since my main logical fact table consists of two LTS and the dimension being created from this table will also have 2 LTS, the content level will be set to all levels on which the fact is joined.
So I would like to create a logical dimension based out of my dimension and then assign the content level at the detail level.
Please let me know if I am not clear.
Thanks -
Demographics dimension and Logical Key.
Hello,
I have a simple star schema where there is a fact table linked to four dimensions. One of the dimensions is Customer Demographics. Others are Product, Time and Dealer.
Am I correct in using surrogate key of the demographics dimension as Logical Key for Demographics dimension in the BMM layer? Could you please let me know?
Thanks,
Manoj.If the requirement is to do lots of "demographic" type queries - like sales amounts by race, gender, age, etc. - then snowflaking it off of a "person" dimension would really hurt query performance. Typically you only have demographic dimensions when either:
1. You don't have a person dimension at all - it's only the demographics you are interested in, or
2. You have a person dimension with millions of members, and splitting the demographics out into a separate dimension (typically a few thousand rows) means you can do a small join between the fact and a 3 thousand row demographics dimenion instead of doing a join between the fact table and a multi million row dimension table
In either case, snowflaking off of a person dimension table is either impossible or very bad for performance.
Thanks,
Scott -
Primary Key & Logical Key in Hierarchy
Am a bit confused with the primary key in Dimensions.....
1. Can anyone explain the use of Primary key and the criteria to define the primary key for a level if the level has more than one level keys....
2. If a level has more than 2 logical keys and both of them are used for drilldown (use for drilldown checked) then what will happen.... lets say we have 2 keys key1 & key2 then which key is used for drilldown in answers.....1. Can anyone explain the use of Primary key and the criteria to define the primary key for a level if the level has more than one level keys....The level key defines the unique elements in each logical level. The dimension table logical key has to be associated with the lowest level of a dimension and has to be the level key for that level.A logical level can have multiple level keys. When that is the case, specify the key that is the primary key of that level.
2. If a level has more than 2 logical keys and both of them are used for drilldown (use for drilldown checked) then what will happen.... lets say we have 2 keys key1 & key2 then which key is used for drilldown in answers.....With "use for drilldown" checked for 2 logical keys , when you drill form the parent level both the keys will be displayed in the report.
Rgds,
Dpka -
Hi,
Should I define foreign keys in logical fact table? I need to use "aggregation rule=count distinct" of the foreign key column in my reports.
Thanks.
AndyHi Andy,
You can add the foreign keys to your fact table as a measure column (count distinct aggregation).
Do not use these foreign keys to create foreign key joins in the logical layer. Always use complex joins (http://obibb.wordpress.com/2010/08/06/joins-in-oracle-bi-ee/)
Good Luck,
Daan Bakboord
http://obibb.wordpress.com -
Why we have to create logical key at levels in Hierarchies
hi
i have one doubt that what is the use of logical key at levels in hierarchies directly we can create logical primary key and we can enable for drill down option
what is the use of creating logical key at levels (what i known is that is for unique column in the logical level)
i need small example for this
apart from that why we have to create logical key in logical tables in bmm layer so what is the need of it
Thanks
Sreedharhi Sreedhar,
I suggest you to go through
http://download.oracle.com/docs/cd/E12103_01/books/admintool/admintool_BusModSetup20.html#wp1005703
will clarify your doubts :-)
Thanks,
Saichand.v -
How to Maintain Surrogate Key Mapping (cross-reference) for Dimension Tables
Hi,
What would be the best approach on ODI to implement the Surrogate Key Mapping Table on the STG layer according to Kimball's technique:
"Surrogate key mapping tables are designed to map natural keys from the disparate source systems to their master data warehouse surrogate key. Mapping tables are an efficient way to maintain surrogate keys in your data warehouse. These compact tables are designed for high-speed processing. Mapping tables contain only the most current value of a surrogate key— used to populate a dimension—and the natural key from the source system. Since the same dimension can have many sources, a mapping table contains a natural key column for each of its sources.
Mapping tables can be equally effective if they are stored in a database or on the file system. The advantage of using a database for mapping tables is that you can utilize the database sequence generator to create new surrogate keys. And also, when indexed properly, mapping tables in a database are very efficient during key value lookups."
We have a requirement to implement cross-reference mapping tables with Natural and Surrogate Keys for each dimension table. These mappings tables will be populated automatically (only inserts) during the E-LT execution, right after inserting into the dimension table.
Someone have any idea on how to implement this on ODI?
Thanks,
DaniloHi,
first of all please avoid bolding something. After this according Kimball (if i remember well) is a 1:1 mapping, so no-surrogate key.
After that personally you could use Lookup Table
http://www.odigurus.com/2012/02/lookup-transformation-using-odi.html
or make a simple outer join filtering by your "Active_Flag" column (remember that this filter need to be inside your outer join).
Let us know
Francesco -
Best Practice loading Dimension Table with Surrogate Keys for Levels
Hi Experts,
how would you load an Oracle dimension table with a hierarchy of at least 5 levels with surrogate keys in each level and a unique dimension key for the dimension table.
With OWB it is an integrated feature to use surrogate keys in every level of a hierarchy. You don't have to care about
the parent child relation. The load process of the mapping generates the right keys and cares about the relation between the parent and child inside the dimension key.
I tried to use one interface per Level and created a surrogate key with a native Oracle sequence.
After that I put all the interfaces in to one big Interface with a union data set per level and added look ups for the right parent child relation.
I think it is a bit too complicated making the interface like that.
I will be more than happy for any suggestions? Thank you in advance!
negib
Edited by: nmarhoul on Jun 14, 2012 2:26 AMHi,
I do like the level keys feature of OWB - It makes aggregate tables very easy to implement if your sticking with a star schema.
Sadly there is nothing off the shelf with the built in knowledge modules with ODI , It doesnt support creating dimension objects in the database by default but there is nothing stopping you coding up your own knowledge module (use flex fields maybe on the datastore to tag column attributes as needed)
Your approach is what I would have done, possibly use a view (if you dont mind having it external to ODI) to make the interface simpler. -
Dimension Table populating data
Hi
I am in the process of creating a data mart with a star schema.
The star schema has been defined with the fact and dimension tables and the primary and foreign keys.
I have written the script for one of the dimensions and would like to know when the job runs on a daily basis should the job truncate the table every day and rebuild the dimension table or should it only add new records to the table. If it should add only
new records to the table how do is this done?
I assume that the fact table job is run once a day and only new data is added to it?
ThanksIt will depend on the volume of your dimensions. In most of our projects, we do not truncate, we update only updated rows based on a fingerprint (to make the comparison faster than column by column), and insert for new rows (SCD1). For SCD2 we apply
similar approach for updates and inserts, and expirations in batch (one UPDATE for all applicable rows at the end of the package/ETL).
If your dimension is very large, you can consider truncating all data or deleting only affected modified rows (based on nosiness key) to later reload those, but you have to be carefully maintaining the same surrogate keys reference by your
existing facts.
HTH,
Please, mark this post as Answer if this helps you to solve your question/problem.
Alan Koo | "Microsoft Business Intelligence and more..."
http://www.alankoo.com -
Facts and Dimension tables.
We have around 6 facts tables and 10 dimensions tables. The ER diagram shows the fact tables are joined. Now how do I arrange these tables in order to form a star schema? Any suggestions?
You should make Joins (foreign keys) between fact tables and dimensions tables on Physical Layer of Administration Tool. The cardinality should be 1 to N, being 1 in table dimension and N in the fact table.
Right click on one element of physical layer, and select 'physical diagram' -> 'Object(s) and all joins'. Then appears all tables. To define foreign keys, select icon 'new foreign keys', first select dimension table and second click over fact table to make a cardinality 1:N.
Good luck,
Regards.
Edited by: Hammett81 on Jul 21, 2010 11:14 PM
Edited by: Hammett81 on Jul 21, 2010 11:22 PM -
Static and small dimension table should I use lookup
Hi Gurus,
I am creating interface to load my fact table.
Generally for different codes to replace with surrogate keys I use dimension table for look-up in interface.
but I have question if dimension table is very small and has only static values like
Sur_key, Code, Description.
1, C, Create
2 , R, Redeem
in such case if in interface for fact table, I just write expression "if source_table.column=C then 1 else 2".
Please advice if this is better way or not.
Thanks in advance.I agree - it is much better practice to use lookups to populate surrogate keys. Using hard-coded values in code requires the developer to always remember that dependency on dimensional data and can cause unexpected results down the line if the keys are updated or are inconsistent across environments.
-
What is '#Distinct values' in Index on dimension table
Gurus!
I have loaded my BW Quality system (master data and transaction data) with almost equivalent volume as in Production.
I am comparing the sizes of dimension and fact tables of one of the cubes in Quality and PROD.
I am taking one of the dimension tables into consideration here.
Quality:
/BIC/DCUBENAME2 Volume of records: 4,286,259
Index /BIC/ECUBENAME~050 on the E fact table /BIC/ECUBENAME for this dimension key KEY_CUBENAME2 shows #Distinct values as 4,286,259
Prod:
/BIC/DCUBENAME2 Volume of records: 5,817,463
Index /BIC/ECUBENAME~050 on the E fact table /BIC/ECUBENAME for this dimension key KEY_CUBENAME2 shows #Distinct values as 937,844
I would want to know why the distinct value is different from the dimension table count in PROD
I am getting this information from the SQL execution plan, if I click on the /BIC/ECUBENAME table in the code. This screen gives me all details about the fact table volumes, indexes etc..
The index and statistics on the cube is up to date.
Quality:
E fact table:
Table /BIC/ECUBENAME
Last statistics date 03.11.2008
Analyze Method 9,767,732 Rows
Number of rows 9,767,732
Number of blocks allocated 136,596
Number of empty blocks 0
Average space 0
Chain count 0
Average row length 95
Partitioned YES
NONUNIQUE Index /BIC/ECUBENAME~P:
Column Name #Distinct
KEY_CUBENAMEP 1
KEY_CUBENAMET 7
KEY_CUBENAMEU 1
KEY_CUBENAME1 148,647
KEY_CUBENAME2 4,286,259
KEY_CUBENAME3 6
KEY_CUBENAME4 322
KEY_CUBENAME5 1,891,706
KEY_CUBENAME6 254,668
KEY_CUBENAME7 5
KEY_CUBENAME8 9,430
KEY_CUBENAME9 122
KEY_CUBENAMEA 10
KEY_CUBENAMEB 6
KEY_CUBENAMEC 1,224
KEY_CUBENAMED 328
Prod:
Table /BIC/ECUBENAME
Last statistics date 13.11.2008
Analyze Method 1,379,086 Rows
Number of rows 13,790,860
Number of blocks allocated 187,880
Number of empty blocks 0
Average space 0
Chain count 0
Average row length 92
Partitioned YES
NONUNIQUE Index /BIC/ECUBENAME~P:
Column Name #Distinct
KEY_CUBENAMEP 1
KEY_CUBENAMET 10
KEY_CUBENAMEU 1
KEY_CUBENAME1 123,319
KEY_CUBENAME2 937,844
KEY_CUBENAME3 6
KEY_CUBENAME4 363
KEY_CUBENAME5 691,303
KEY_CUBENAME6 226,470
KEY_CUBENAME7 5
KEY_CUBENAME8 8,835
KEY_CUBENAME9 124
KEY_CUBENAMEA 14
KEY_CUBENAMEB 6
KEY_CUBENAMEC 295
KEY_CUBENAMED 381Arun,
The cube in QA and PROD are compressed. Index building and statistics are also up to date.
But I am not sure what other jobs are run by BASIS as far as this cube in production is concerned.
Is there any other Tcode/ Func Mod etc which can give information about the #distinct values of this Index or dimension table?
One basic question, As the DIM key is the primary key in the dimension table, there cant be duplicates.
So, how would the index on Ftable on this dimension table show #distinct values less than the entries in that dimension table?
Should the entries in dimension table not exactly match with the #Distinct entries shown in
Index /BIC/ECUBENAME~P on this DIM KEY? -
[Rookie] Some clarification on Dimension Table
Hi!
I am preparing for BW certification, and sorry to post this very basic query. On certification notes, I came accross a statement that says - "Dimension table contains link to fact table and SID table".
I think this statement is wrong. Dimension table has DIM-ID & SID-Ids so there is no link to fact table in dimension table.
Please give your comment on this.hi,
should true/correct, check
http://help.sap.com/bp_biv335/BI_EN/documentation/Multi-dimensional_modeling_EN.doc
page 11
... These dimension tables surround the fact table, which contains the facts (key figures), and are linked to that fact table via unique keys, one per dimension table. Each dimension key uniquely identifies a row in the associated dimension table....
hope this helps.
Maybe you are looking for
-
Status for Purchase order or contract.
Hi, Where can I see the Standard settings for Statuses of PO or PC in the SRM system ? Basically I want to know which are the statuses (Held, awating approval, ordered or released...so on) set by system for PO & PC & their sequence. I am working
-
Apex_util.get_print_document with bind
All, I'm trying to create a process to bulk print a report to the file system using the API apex_util.get_print_document. Is there a way to pass bind variables to the report query when using this API? If not, has anyone come up w/another solution on
-
Triggering of dynamic actions in infotypes!
Hi Experts, I have Query regarding the triggering of dynamic actions. Have a scenario where I create a record in infotype 21 with subtype 'XX". On save of this record I need the dynamic actions to be triggered , where I will write the logic to modify
-
Hi, I have a credit memo..and it is now cleared. But 4 days back it was not cleard. When I went in icon of hat, it says posting on 3/6 and the id of the person I would like know whether the ID here shows of the person who made the payments on 3/6 a
-
How can i stop people from buring our music
We will be be setting up a studio. I need to be able to let people LISTEN to the music they and we recorded, but NOT be able to burn it. how can I do this? Is there something like apples DRM that I can encode my own files so they can be taken off the