Logical Facts not all joined to Dimensions in an OBIEE model

We have a few OBIEE logical models where some of the fact rows don't have a corresponding dimension member. Essentially the FKs on the Fact don't have matching PKs in the Dimensions This has come about over time as we've made enhancements to our models and for the most part, people accept it. It causes the obvious issues when an incomplete dimension is added to a query and the fact rows drop out unexpectedly. It also causes problems where Grand Totals, which don't always include the dimension in their query, don't always match the details above.
Is this a common approach? Is there a best practice surrounding this? Is there a list of other likely issues we will encounter?
Thank you,
Jim

typically incremental fact must resolve these holes created ..wherein you have missing DIM keys . Missing keys are really bad issues as far as data integrity is concerned . unless you dont have a join on those columns , one must fix these holes . The report will be off when joined on these entities

Similar Messages

  • Logical fact table with fragmented data sources with different dimensions

    Hello.
    I have a logical fact table with four logical table sources. Three of the LTS's share the same dimensions, but the fourth LTS has one dimension (called Dim_A) less. In the physical layer the dimension Dim_A is joined to the first three physical fact tables, but not to the fourth fact table (since it doesn't have that dimensionality). In the BMM layer the logical fact table is joines to the logical dimansion Dim_A.
    When I run an analysis on this RPD the measures from the logical fact is aggregated correctly (union of all four table sources) as long as I doesn't include Dim_A, but as soon as I include dimension Dim_A I get the error message:
    +State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 43119] Query Failed: [nQSError: 14052] Internal Error: Logical column Dim_A.Column_X has no physical sources that can be joined to the physical fact table source [Logical table sources (Priority=0): Fact_B.Fact_Y]. (HY000)+
    I would like a solution where the analysis returns correctly aggregated measures also for the LTS with the "missing" dimension, but with a dimension value NULL for this LTS. Or something like this.
    Is there a way to set this up in the RPD.
    Thanks,
    Henning Eriksen

    The SQL could look something like this.
    SELECT dim_a.col_1, fact_a.measure_1
    FROM db.dim_a
    JOIN
    db.fact_a
    ON fact_a.col_2 = dim_a.col_2
    WHERE fact_a.date = '28-nov-2012'
    UNION ALL
    SELECT dim_a.col_1, SUM (fact_b.measure_1)
    FROM db.dim_a
    JOIN
    db.fact_b
    ON fact_b.col_2 = dim_a.col_2
    WHERE fact_b.date = '28-nov-2012'
    UNION ALL
    SELECT dim_a.col_1, SUM (fact_c.measure_1)
    FROM db.dim_a
    JOIN
    db.fact_c
    ON fact_c.col_2 = dim_a.col_2
    WHERE fact_c.date = '28-nov-2012'
    UNION ALL
    SELECT NULL, SUM (fact_d.measure_1)
    FROM    db.fact_d
    WHERE fact_d.date = '28-nov-2012'
    I would appreciate if you could give me some hints for the RPD.
    Thanks,
    Henning

  • Querying against two fact tables with non conformed dimension

    I have two fact tables and I have this set up in RPD :
    Fact1 joined to DimA and DimB
    Fact2 joined to DimA
    On Front end I build two analysis:
    Analysis 1:
    DimA.A, Fact1.1, Fact2.2
    Analysis 2 :
    DimA.A, DimB.B, Fact1.1, Fact2.2
    In the results of Analysis 1 , I am seeing correct values for Fact2.2
    In the results of Analysis 2, I am seeing Fact2.2 as empty column. I think the reason is that Fact2 is not joined to DIMB.
    Is it possible that I should be able to report against both dimension tables (DIMA and DIMB) columns for FACT1 and FACT2 measures.... Even though I don't have join between DIMB and FACT2.
    Any response would be helpful!!!
    Regards,
    Annu

    Hi,
    Go to the LTS-- Content Level of the fact which does not have join with Dimension and put Total level for that Dimension and total level on Column(Measure also)(Double click --Levels)(Assume Dim Hierarchy is  already set up)
    Pull everything(D1,D2,F1,F2) You will see results.
    Update Me
    Thanks
    NK
    Edited by: DNK on Mar 20, 2013 1:35 PM

  • Why not to Join Fatc to fact tables in OBIEE... What is the Logical Reason

    Why not to Join Fatc to fact tables in OBIEE... What is the Logical Reason
    Thanks in advance
    V

    Hi Venkat,
    I am coming from the basics of a star schema here, so hope it helps
    What is a fact?
    A fact is something that has all measures which can be aggregated (Units, Dollars, # of Orders) etc with keys to different dimensions.
    What is a dimension?
    It is the context with which we understand/record/retrieve the measures in the fact. We understand "# of Orders" for a product/By a customer etc.
    So joining a dimension and a fact helps to answer the Who/What/When kind of business questions. Ex : Who bought these products? What was the product type? When these products were sold kind of...
    Now just imagine tying up fact to another fact. With this kind of model, you can never answer any business question.
    I have never tried joining a fact with another fact in OBI (But do not think it will allow it though :) )
    Hope I am clear.
    Thank you,
    Dhar

  • Join a fact to dimensions it's not directly joined to through another fact

    Hello Experts,
    I have a fact1 table with 2 dimensions
    those 2 dimensions join to another fact2 table that is connected to 4 another dimensions.
    How is possible to navigate fact1 through the other 4 dimensions?
    simplification:
    Fact1>----Dim1----<Fact2>----Dim2
    I want to navigate through Fact1 using Dim2
    is there a work around this configuration in the repository?
    Thank You
    Regards

    Hi,
    You need to create a join between a fact and dimension.If you want to navigate fact 1 through other 4 dimensions that are not joined to fact1 then you need to find out some join condition.If you have thought of a report based out of fact1 and those 4 dimension then you should be able to find out some join between these tables.
    What exactly you want to do.
    Can you please elaborate.
    Regards,
    Sandeep

  • Join Between Dimension & Fact Table

    Hi all,
    Here is my scenerio:
    There are two tables, one dimension table and one fact table.
    Normally, they will be joined with a key, says Date_ID.
    However, these two tables do not have the same key.
    Question comes, can I create derived columns in both tables to pretend as key (the value of key assumes the same) and join them together? If yes, which layer (physical or business logic) to do the join? Will data be shown in Answer correctly?
    Thanks.

    Thanks for reply.
    I know that if two tables have the same key, says primary key and foreign key, they can be joined directly.
    However, the tables do not have the same key/column for join.
    Actually, I've tried to create dummy columns in both tables to join together in physical layer. Then use those dummy columns in business model layer to get the value from other columns. Complex join is carried out later in business moel layer. But it seems that it does work.

  • Implementing Logical FACT & Logical dimension from 2 different data sources

    Hi Gurus,
    Here is my situation. We have 2 Different Data sources. One is SRMW and the other one is a different source. What we are trying to implement here is we wanted to create logical dimensions and logical facts as well in the BMM layer. For ex: w_day_d from SRMW and other time dimension from another source makes a logical table. And similarly a fact from SRMW and and another similar fact (Same data types though) will make a logical fact in the BMM.
    I have done the POC of it, but the only problem is that i was able to fetch the data from only one data source not the other source.
    Any suggestions ??
    Thanks in Advance.

    What I already mentioned is that you have to create multiple logical table sources and set the fragmentation content on each logical table source.
    When you have two physical tables for the product dimension, for example DIM_PRODUCT_A and DIM_PRODUCT_B, you must add them to your logical table Products as two separate logical table sources and map all columns to the corresponding logical table columns on the Column Mapping tab.
    Hereafter you should go to the Content tab of each logical table source and describe what content is in the logical table source.
    For example for the logical table source of DIM_PRODUCT_A:
    "BM"."Product"."Product Name" <= 'Product 2'
    and for the logical table source of DIM_PRODUCT_B.
    "BM"."Product"."Product Name" >= 'Product 3'
    Then you must also check "This source should be combined with other sources at this level"
    When you run a query in Answers only on the product table, two queries will be generated to get values from both tables.
    Regards,
    Stijn

  • Not exists / union - two dimensions nothing in the fact folder, possible???

    What I am trying to do is (in functional terms) produce an invoices on hold report.
    This has two distinct characteristics - some invoices are coding but on hold (easy - see first part of the SQL below), but some invoices have no coding, nothing in the FACT folder and I need to show two dimension folders which currently only join via the FACT folder - is this possible??
    equivalent SQL =>
    select supp.supplier_name, inv.invoice_number, inv.invoice_amount, dis.amount, code.segment1||'/||code.segment2
    from     AP_INVOICES_MV inv
    ,          ap_suppliers_mv supp
    ,       ap_holds_mv hold
    ,      AP_INVOICE_DISTRIBUTIONS dis
    ,     gl_coding code
    where inv.invoice_key = hold.invoice_key
    and    inv.supplier_key = supp.supplier_key
    and  inv.invoice_id = dis.invoice_id
    and   dis.code_key = code.code_key
    and   hold.holds <> 'No Holds'
    union
    select supp.supplier_name, inv.invoice_number, inv.invoice_amount, 0 amount, 'XXXXX/XXXX' gl_code
    from     AP_INVOICES_MV inv
    ,          ap_suppliers_mv supp
    ,       ap_holds_mv hold
    where inv.invoice_key = hold.invoice_key
    and    inv.supplier_key = supp.supplier_key
    and   hold.holds <> 'No Holds'
    and   not exists
    (select 'x'
    from    ap_invoice_distributions dis
    where dis.invoice_id = inv.invoice_id)
    order by 1, 2, 4 ascMy problems are; -
    1. is that the second part of the union (not exists section) requires me to join two DIMENSION tables without going via the FACT table is this possible?? (If so how - what JOINS would I need on between the FACT and the DIMENSIONS and would this significantly impede running speed generally)
    2. Given that even when writing direct database requests the FROM part of the SQL is the subject area, not the tables, the tool writes the joins for you, how can I write the equivalent of the above??
    n.b.
    AP_INVOICES_MV - DIMENSION
    ap_suppliers_mv - DIMENSION
    ap_holds_mv - DIMENSION
    gl_coding code - DIMENSION
    AP_INVOICE_DISTRIBUTIONS FACT
    With the structure following the classic STAR with all folders described in the dimensions equi joining to the FACT folder, BUT some in the invoices dimension will not have corresponding values in the FACT folder (un-coded invoices).
    With thanks for your input,
    Robert.

    Try this app: http://tyorex.com/iWorkConverter
    Batch convert Pages files to doc and pdf.

  • In Answers am seeing "Folder is Empty" for Logical Fact and Dimension Table

    Hi All,
    Am working on OBIEE Answers, on of sudden when i clicked on Logical Fact table it showed me as "folder is empty". I restarted all the services and then tried still showing same for Logical Fact and Dimension tables but am able to see all my reports in Shared Folders. I restarted the machine too but no change. Please help me out to resolve this issue.
    Thanks in Advance.
    Regards,
    Rajkumar.

    First of all, follow the forum etiquette :
    http://forums.oracle.com/forums/ann.jspa?annID=939
    React or mark as anwser the post that the user gave.
    And for your question, you must check the log for a possible corrupt catalog :
    OracleBIData_Home\web\log\sawlog0.log

  • Why have I lost a lot (if not all) presets / instruments on Logic Pro 9?

    Hello people.
    First thing is, I had logic on my previous mac (before i accidentally spilt water on it), and luckily the hard drive was unhurt and retrieved all data onto a new one, the thing is, since i have done this, the presets have been lost from plugins, such as Space Designer reverb, AVerb, EnVerb, SilverVerb. Such as, when I open an existing project where i've used a preset that is no longer there, it asks me to locate it:
    And also, I have several (IF NOT ALL) instruments that have been lost, no piano's or anything, and all projects where i've included them have all become the same instrument (like the EVP88 Electric Piano or something).
    Can anyone help me with this problem, what could I do to retrieve everything etc?
    Yes I have download the additional content that was available to me, and yes I have deleted it and re-installed from the App Store, no change.
    Kind Regards,
    Mitch Gardner

    How did you move the data from your old drive to your new one?
    If you used the Migration Assistant or Time Machine. that is likely why.. as many people have reported such issues after doing so.
    The only reliable method is to re format your new drive and start again from scratch but this time don't use MI or TM directly to restore from but instead download and install everything from new and then manually copy across your personal data and projects etc.... from your TM backups.
    You should be fine then... and yes, i know thats a pain to do but in the long term, it will save you a lot of headaches....

  • Multiple facts with shared/non shared dimensions

    Hello All,
    I have a scenario where we are using multiple facts in OBIEE. Fact1(Inventory Onhand) is joined to all shared dimensions, and Fact2( Forecasting Values) is joined to few shared dimesnions so the joins are like:
    Fact1 with Dim1, Dim2, Dim3, Dim4, Dim5, Dim6..
    Fact2 with Dim1,Dim3, Dim5
    I have given the physical joins in the physical layer, later in the logical layer I pulled the fact2 in to to the fact1(multiple LTS) and then set the aggregattion levels for the non conformed dimensions. This was working fine for me but the customer was not happy with this. He doesnt want to have different levels of data in to a single fact.
    What are the allternate possible solutions to implement this in the busines layer?
    Any ideas/inputs are highly appreciated.
    - Abhi

    Hi,
    I have done the same as explained above. But here the issue is we are getting duplicate data.
    For Ex: if i have one common dimmension attribute and two non confirmed dimension attributes with a measure. For non confirmed dimension have different value and for all these values the common dimension attribute is same. Then the common attribute will repeat for all non confirmed dimensions.so, here automatically the Corresponding measures also repeating.
    Common Attr non-Confirm Attr1 non-Cnfirm Attr2 measure
    123 abc xyz 1000
    123 bac yzx 1000
    123 pqr mno 1000
    If you observe the above exapmple the confirm dime attr is same for both non confirm dime attrs, so the measure values also repeating here. If i see the data base i have measure data only for ABC record. For Remaining two records it is 0, but here the value 1000 is showing for remaining two records as well.
    Please let me know if any one face this issue earlier.
    Regards,
    Aari

  • Modelling 2 Fact Tables with Non-Conforming Dimension in OBIEE 11g

    Hi all,
    I have two fact tables (Fact 1 and Fact 2) and two dimension tables (Product and Rule). The Product dimension table is a conforming dimension and is used in both fact tables, but the Rule dimension is a non-conforming dimension which is used only one fact table. I'm using OBIEE 11g (11.1.1.6.0).
    ====
    Fact 1
    ====
    Sales ID | Product ID | Quantity | Sales Description | Sales Status
    S001 | P001 | 100 | bla bla bla bla bla | N
    S001 | P002 | 200 | bla bla bla bla bla | N
    S002 | P001 | 200 | lab lab lab lab lab | Y
    S002 | P003 | 250 | lab lab lab lab lab | Y
    Notes for Fact 1:
    - One Sales ID can have multiple Product IDs
    - Sales Description and Sales Status are the same for one Sales ID (repeating Sales Description and Sales Status for the same Sales ID)
    ====
    Fact 2
    ====
    Sales ID | Product ID | Rule ID | Score
    S001 | P001 | R001 | 2
    S001 | P001 | R002 | 3
    S001 | P002 | R003 | 1
    S002 | P001 | R003 | 1
    S002 | P003 | R002 | 2
    S002 | P003 | R004 | 5
    Notes for Fact 2:
    - One combination of Sales ID and Product ID can have multiple Rule ID
    I'm wondering how best to model these tables so that I can create this report (number of the dimension and fact tables created in the business model, level mapping, aggregation rule, etc)? Any suggestion/advice on how to achieve this?
    Sales ID | Product ID | Quantity | Sales Description | Sales Status | Rule ID | Score
    S001 | P001 | 100 | bla bla bla bla bla | N | R001 | 2
    S001 | P001 | 100 | bla bla bla bla bla | N | R002 | 3
    S001 | P002 | 200 | bla bla bla bla bla | N | R003 | 1
    S002 | P001 | 200 | lab lab lab lab lab | Y | R003 | 1
    S002 | P003 | 250 | lab lab lab lab lab | Y | R002 | 2
    S002 | P003 | 250 | lab lab lab lab lab | Y | R004 | 5
    Thank you very much!

    Hi Dhar, thanks for the suggestions.
    I tested what you suggested, but the result is not as per my expectation mentioned above. Here's what I did:
    1. In physical layer:
    - I joined Fact 1 table with Product dimension table only
    - I joined Fact 2 table with Product and Rule dimension tables
    2. In business model layer:
    - I created 3 logical tables: Fact, Product, and Rule
    - The Product table contains the Product ID and Product Name from the Product dimension table in the physical layer
    - I created the hierarchy (logical dimension) for Product with only ProductTotal level (as the grand total level) and ProductDetail level that contains Product ID and Product Name
    - The Rule table contains the Rule ID and Rule Name from the Rule dimension table in the physical layer
    - I created the hierarchy (logical dimension) for Rule with only RuleTotal level (as the grand total level) and RuleDetail level that contains Rule ID and Rule Name
    - The Fact table contains 2 logical tables sources: Fact 1 (which logical level in the Content tab is mapped to ProductDetail and RuleTotal) and Fact 2 (which logical level in the Content tab is mapped to ProductDetail and RuleDetail)
    - The Fact table contains Sales ID logical column (mapped to both Fact 1 and Fact 2 logical table sources)
    - The Fact table also contains Sales Description and Sales Status logical columns (mapped to only Fact 1), which aggregation rule is the default to None
    - The Fact table also contains Quantity logical column (mapped to only Fact 1), which aggregation rule is set to Sum
    - The Fact table also contains Score logical column (mapped to only Fact 2), which aggregation rule is set to Sum
    OBIEE returns the expected result when I retrieve the report:
    Sales ID | Product ID | Quantity | Sales Description | Sales Status
    However, OBIEE returns an error when I retrieve the reports:
    Sales ID | Product ID | Quantity | Sales Description | Sales Status | Rule ID
    or
    Sales ID | Product ID | Quantity | Sales Description | Sales Status | Rule ID | Score
    The error is:
    Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 43119] Query Failed: [nQSError: 14020] None of the fact tables are compatible with the query request FACT.SALES_STATUS. (HY000)
    And the Score column is blank when I retrieved this report:
    Sales ID | Product ID | Quantity | Sales Description | Sales Status | Score
    Any suggestion anyone? Please help. Thanks a lot!
    Edited by: stewartlife on Nov 29, 2012 4:01 PM

  • Query across two facts with filter on unconformed dimension

    Hi
    This question is actually regurgitated from another post as I wrongly tagged it onto the end of an already answered question.
    Anyway, I am trying to query across 2 fact tables which have a dimension in common (conformed) and also some dimensions that are not directly joined to BOTH fact tables (seemedly referred to as 'unconformed' in OBIEE).
    So in it's simplest form
    Fact1, measure1 linked to dim1 & dim2
    Fact2, measure2 linked to dim2 only
    I have followed the recommended method advertised here and elsewhere of adding the second fact as a LTS of the first in the BMM layer and setting logical levels on measure2 to Total for all dimensions that fact2 is not joined to (in this case dim1).
    When a basic query is issued in Answers that filters on the unconformed dimension (dim1), a spurious result set is returned that includes all records for the second fact.
    This is quite a standard warehousing reporting query whereby 2 sets of data are queried independently and then joined on their common attributes but in this scenario the BI server seems to always generate a FULL OUTER JOIN and return an unrestriced data set.
    Has anyone else come across this strange behaviour?
    thanks
    Tony

    adding the second fact as a LTS of the first in the BMM layer
    Could you try without this step? Just have separate facts and separate LTSs and set
    Fact1 LTS to lowest for Dim1
    Fact1 LTS to lowest for Dim2
    Fact2 LTS to Total for Dim1
    Fact2 LTS to lowest for Dim2
    ?

  • Logical level for logical fact table sources

    it is clear that for fact aggregates, we should use the Content tab of the Logical Table Source dialog to assign the correct logical level to each dimension.
    question is : is it mandatory to assign even for non-aggregates fact tables the logical level for each dimension (which normally should be set to the most detailed level of each dimension) ? is it any known issue if "logical levels"in content tab are not set ?
    the reason I'm asking this is a strange bug I have (I'm not going to discuss it here) and then only workaround seems to be NOT setting the logical levels (on content tab) for logical fact table sources.
    thank you !

    If levels are not set: By default levels are considered as lowest level
    It should not matter if you set or not
    Generally we set for facts explicitly when we are using Aggregate tables.
    Your current issue might be a case by case; I would suggest to check implicit fact, any table mapped to the source to force a join etc
    Mark if helps
    Let me know how it helps
    Edited by: Srini VEERAVALLI on Feb 5, 2013 8:33 AM
    Any updates on this?+_
    Edited by: Srini VEERAVALLI on Feb 14, 2013 9:09 AM

  • 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
    Thanks

    thanks 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.

Maybe you are looking for