Simultaneous hash joins of the same large table with many small ones?

Hello
I've got a typical data warehousing scenario where a HUGE_FACT table is to be joined with numerous very small lookup/dimension tables for data enrichment. Joins with these small lookup tables are mutually independent, which means that the result of any of these joins is not needed to perform another join.
So this is a typical scenario for a hash join: the lookup table is converted into a hashed map in RAM memory, fits there without drama cause it's small and a single pass over the HUGE_FACT suffices to get the results.
Problem is, so far as I can see it in the query plan, these hash joins are not executed simultaneously but one after another, which renders Oracle to do the full scan of the HUGE_FACT (or any intermediary enriched form of it) as many times as there are joins.
Questions:
- is my interpretation correct that the mentioned joins are sequential, not simultaneous?
- if this is the case, is there any possibility to force Oracle to perform these joins simultaneously (building more than one hashed map in memory and doing the single pass over the HUGE_FACT while looking up in all of these hashed maps for matches)? If so, how to do it?
Please note that the parallel execution of a single join at a time is not the matter of the question.
Database version is 10.2.
Thank you very much in advance for any response.

user13176880 wrote:
Questions:
- is my interpretation correct that the mentioned joins are sequential, not simultaneous?Correct. But why do you think this is an issue? Because of this:
which renders Oracle to do the full scan of the HUGE_FACT (or any intermediary enriched form of it) as many times as there are joins.That is (should not be) true. Oracle does one pass of the big table, and then sequentually joins to each of the hashmaps (of each of the smaller tables).
If you show us the execution plan, we can be sure of this.
- if this is the case, is there any possibility to force Oracle to perform these joins simultaneously (building more than one hashed map in memory and doing the single pass over the HUGE_FACT while looking up in all of these hashed maps for matches)? If so, how to do it?Yes there is. But again you should not need to resort to such a solution. What you can do is use subquery factoring (WITH clause) in conjunction with the MATERIALIZE hint to first construct the cartesian join of all of the smaller (dimension) tables. And then join the big table to that.

Similar Messages

  • Getting a large file with 2 small ones

    HI,
    I'm playing with final cut pro 5 ...
    I created a very basic project with 2 movies (quicktime movie 320x240, 8.9 and 9.9 MB) done with my coolpix 3100 camera
    I added a transition at the beginning, and one between the 2 movies. (5s each transition)
    I select the Render ALL, then I export it into a quicktime movie with "current settings" "include audio and video" and "make movie self contained"
    I get a final file which is 1'10 length, 720x576 and 253.5MB long !!! (Codecs is DV-PAL Integer)
    is that normal to have such a big file ??

    Did you create a sequence with settings that matched your source movies? It looks like you edited your 320x240 quicktimes into a standard PAL dv sequence. DV is about 5 minutes a gig.
    Create a new sequence preset that matches your source movies as far as pixel size. For the codec, you might want to match your source files or choose an alternative.

  • How to use the same credit card for more than one customer master

    Hi,
    this is a question for consultants at least a little familiar with SAP business partner, Customer-vendor-intergration cvi, contract accounting:
    My customer wants to store the same credit card with more than one customer. Arguments are that family members or partners may mutually agree to use the same credit card for their distinct purchases.
    I never tried with amazon or the likes but I know that SAP validates the uniqueness of credit cards.
    I found 6 code line where the message (V/)005 "Payment card &1 &2 is already assigned to customer &3" prohibits duplicate assignment.
    Even if I create a couple of enhancements to suppress the error, I don't know how the system will work.
    The customer does not like the idea of using alternative payer.
    Did you ever face the same problem and how did you solve it?
    Much Thanks in advance
    Best regards
    Clemens

    thanks

  • Assign the same credit card to more than one customer master

    Hi,
    this is a question for consultants at least a little familiar with SAP business partner, Customer-vendor-intergration cvi, contract accounting:
    My customer wants to store the same credit card with more than one customer. Arguments are that family members or partners may mutually agree to use the same credit card for their distinct purchases.
    I never tried with amazon or the likes but I know that SAP validates the uniqueness of credit cards.
    I found 6 code line where the message (V/)005 "Payment card &1 &2 is already assigned to customer &3" prohibits duplicate assignment.
    Even if I create a couple of enhancements to suppress the error, I don't know how the system will work.
    The customer does not like the idea of using alternative payer.
    Did you ever face the same problem and how did you solve it?
    Much Thanks in advance
    Best regards
    Clemens

    Thank you Rafael,
    as I said "The customer does not like the idea of using alternative payer."
    I know this would be the correct way but the customer rules - so I try to evaluate a solution.
    Regards
    Clemens

  • Two diffferent type of joins on the same table

    I have a query that, it seems, requires me to two two different types of joins to the same table.
    from table t1
    LEFT OUTER JOIN table2 t2
    ON t1.col1= t2.col1
    and t1.col2 = t2.col2
    and t1.col5 = t2.col5
    LEFT OUTER JOIN table2 t3
    ON t1.col1= t3.col1
    and t1.col2 = t3.col2
    and t1.col4 = t3.col4
    would I run into a problem if I just did:
    LEFT OUTER JOIN table2 t2
    ON t1.col1= t2.col1
    and t1.col2 = t2.col2
    and t1.col3 = t2.col3
    and t1.col4 = t2.col4
    and t1.col5 = t2.col5
    And if I go with option 1 and I also create two different types of indexes to accommodate each join, will 10g know which ones to use?
    Message was edited by:
    user623359
    Message was edited by:
    user623359

    No version number and no statement of what it is you are trying to do ... but one solutions is to use the traditional Oracle syntax and the first part, then wraps it in parentheses turning it into an inline view, and then join that to the next part.

  • Illegal cross join within the same dimension caused by incorrect subject ar

    hi!
    Imagine the following BMM:
    There is one Logical Dimension Table "Service Account" with the following LTS:
    - LTS "D_SERVICE"
    - LTS "D_SERVICE_CLASS"
    - LTS "D_SERVICE_STATUS"
    This Logical Tabe "Service Account" joins (One-to-many) with several Fact Tables (other Logical Tables).
    In the Physical Layer the joins for the "Service Account" LTS are:
    - One-to-many between D_SERVICE_CLASS and D_SERVICE
    - One-to-many between D_SERVICE_STATUS and D_SERVICE
    The problem is that when I build a report in Answers using only the following columns of the Logical Table "Service Account":
    - Service Class Desc (which exists in the Logical Table "Service Account" and in the Physical Table D_SERVICE_CLASS)
    - Service Status Desc (which exists in the Logical Table "Service Account" and in the Physical Tabl D_SERVICE_STATUS)
    - MSISDN (which existis in the Logical Table "Service Account" and in the Phsyical Table D_SERVICE)
    the following error appears:
    Estado: HY000. Código: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 14065] Illegal cross join within the same dimension caused by incorrect subject area setup: [ (select * from prd.D_SERVICE where SOURCE_SYS in ('ARBOR','PPB') and DW_SERV_ST_ID in (100000003,100000009)) as T1836, D_SERVICE_CLASS T1916] with [ D_SERVICE_STATUS T1948] (HY000)
    SQL emitido: SELECT "SERVICE ACCOUNT"."TLC MSISDN9" saw_0, "SERVICE ACCOUNT"."IWS Service Class Desc" saw_1, "SERVICE ACCOUNT"."TLC Service Status Desc" saw_2 FROM "VFPT - Upgrade Siebel" WHERE "SERVICE ACCOUNT"."TLC MSISDN9" = '917330340' ORDER BY saw_0, saw_1, saw_2
    Help, please!
    Thanks.

    Physically, only D_SERVICE is joined to the facts. Then D_SERVICE_CLASS is joined to D_SERVICE (one-to-many) and D_SERVICE_STATUS is joined also to D_SERVICE (one-to-many).
    In the BMM, there is only one Logical Dimension Table for those 3 physical tables. This Logical Dimension Table is called "Service Account" and has 3 LTS: D_SERVICE, D_SERVICE_CLASS, D_SERVICE_STATUS. The Logical Dimension Table has several logical columns that are associated to those 3 LTS: SERVICE_KEY, SERVICE_CLASS_KEY, SERVICE_STATUS_KEY, SERVICE_MSISDN, SERVICE_CLASS_DESC, SERVICE_STATUS_DESC.
    The Logical Dimension Table "Service Account" is then joined to a fact table (one-to-many).
    I didn't understand the suggestion about the 3 LTS... Aren't we doing that already? Can you explain it better, please?
    thanks.

  • Fact table have tow column reference the same dim table

    In my analytic domain, my fact table have tow column reference the same dim table, but in physical diagram, between two table ,can only have one join, so i create a copy of the dim table, then finish the join in physical. This method can resolve this question, but not so good, Anyone have perfect solution?

    user4497169 wrote:
    Thanks,
    yours method is very very good, I don't know this method before. Where do you get this imfomation?The sample sales RPD has (good) modelling references you can refer to, otherwise think about how you'd write the SQL Statement yourself, you'd need to use an alias to access the same table on seperate joins.

  • Mix source data with different granularity into the same fact table?

    I have two transaction tables "Incident (157 columns)" and "Unit (70 Colums)". For every "Incident" that happens there could be one or more records in the "Unit" table.
    As part of my data mart design, I have merged both the tables into a single Fact "Incident Fact (227 Columns)" and inserted the records from both the tables with a join condition between them [incident.IN_NUM = Unit.IN_NUM].
    Is this correct, is my question? or am I mixing source data with different granularity in the same fact table. Appreciate your help.
    Best Regards
    Bees

    Bees,
    Are the measures from 'Incident' , repeated for a given incident where it has more than one record in the Unit table ? If so, then the sum(indicent.measure) will give an incorrect result, no ?
    What requirement is there to physically merge the tables together outside of OBIEE? With OBIEE you could have one logical 'fact' table to present to report users, which sourced from seperate Incidents and Units tables and would stop the incorrect aggregations occuring. A common modelling piece in the same way would be Order Headers and Order Lines, quite common in OBIEE to have a logical 'Orders' fact which contained both Order header measures and Order line measures, this translates to your Incidents -> Units relationship.
    To do what I've mentioned, is relatively straight forward, you need a 'Dim - Incident' with two levels, Incident and Unit, mapp the unique identifiers in as the level keys and then use these levels to set the content levels correctly in your 2 logical tables sources for logical 'Fact' , ie Incidents LTS at incident level, Units LTS as units level.
    Hope this helps, let us know if you get stuck.
    Cheers
    Alastair

  • [nQSError: 14065] Illegal cross join within the same dimension

    Hey guys,
    I'm stumped. I have two dimension tables that are joined 1:N (there is NOT an M:N relationship between them) and I have them joined in the Physical Layer and the Business Model and Mapping Layer. The two tables are F4101 (the "1") and F4102 (the "N") in the 1:N relationship. F4102 then joins to a fact table, and F4101 joins to NOTHING else. So I don't believe I have a circular condition or a need for a bridge table. Both tables are published to the Presentation Layer for reporting.
    The error occurs in Answers when I want to do something as trivial as display the three primary key columns together from F4101: F4101.col1, F4101.col2, F4101.col3 (all three make up the PK). When I do that, the following error occurs:
    "nQSError: 14065] Illegal cross join within the same dimension caused by incorrect subject area setup: [ F4101 T28761] with [ F4102 T1805] "
    What I can't figure out is WHY the F4102 table is listed in this error. I didn't try to report on it at all. See the logical SQL below from my query:
    "SQL Issued: SELECT "Item Master (F4101)".IMITM saw_0, "Item Master (F4101)".IMLITM saw_1, "Item Master (F4101)".IMAITM saw_2 FROM "Sales Analysis" ORDER BY saw_0, saw_1, saw_2"
    As soon as I take out one of the three PK columns and add in another non-PK column from F4101, it works just fine. And reporting on each of the three PK columns individually works as well in Answers.
    Any ideas? I would greatly appreciate it.
    Thanks.

    Try this;
    1. In the logical layer, create one folder called F4101_F4102.
    2. Map both F4101 and F4102 as logical table sources in that folder.
    3. Join from the folder F4101_F4102 to the fact using a Logical (new complex join) join.
    Chris.

  • Getting Error : Illegal cross join within the same dimension

    Hi All,
    At database there are 4 tables - XLE_Entity_profiles (A) , XLE_ETB_profiles (B) ,XLE_Registration (C),XLE_Reg_Function(D) .
    Attribute info is as below -
    A.Le_name
    B.LRU_name
    C. Registraton name
    D. Function_code
    I have to model a single dimension which contains the attributes from these tables and dimension should also support queries which contains attributes from this dimension only without selecting any fact.
    For Exp - query is as below -
    Le_name,Le-Registraton name,Le_Function_code,LRU_name,LRU_Registraton name,LRU_Function_code
    To support such query , i created aliases of table XLE_Registration,XLE_Reg_Function.
    Aliases names are - XLE_Registration_LE (E),XLE_Registration_LRU (F),XLE_Reg_Function_LE (G).,XLE_Reg_Function_LRU (H)
    Attributes from aliases are as below -
    XLE_Registration_LE- Le-Registraton name
    XLE_Registration_LRU -LRU_Registraton name
    XLE_Reg_Function_LE - Le_Function_code
    XLE_Reg_Function_LRU - LRU_Function_code
    i have renamed the attributes For LE and LRU.
    The Physical layer diagram is as below
    A < B
    E F
    G H
    [A:B (1:M) , A:E(1:M), E:G(1:M),B:F(1:M),F:H(1:M)]
    At logical layer , i have created a dimension DIM-LE with below logical table sources -
    A ,B,E,F,G,H
    Using the properties of LTS B , i mapped B to A.
    Using the properties of LTS E , i mapped E to A.
    Using the properties of LTS F , i mapped F to B.
    Using the properties of LTS G , i mapped G to E.
    Using the properties of LTS H , i mapped H to F.
    Now when i run the query , i am getting the error -
    Query - Le_name,Le-Registraton name,Le_Function_code,LRU_name,LRU_Registraton name,LRU_Function_code
    +++Administrator:2a0000:2a0004:----2008/11/07 19:39:03
    Query Status: Query Failed: [nQSError: 14065|http://forums.oracle.com/forums/] Illegal cross join within the same dimension caused by incorrect subject area setup: [
    XLE_REGISTRATIONS T1218 On XLE_REGISTRATIONS_LRU.REGISTRATION_ID = XLE_REG_FUNCTIONS_LRU.REGISTRATION_ID,
    XLE_REG_FUNCTIONS T5737,
    XLE_ETB_PROFILES T900 On XLE_ETB_PROFILES.ESTABLISHMENT_ID = XLE_REGISTRATIONS_LRU.SOURCE_ID,
    XLE_ENTITY_PROFILES T836 On XLE_ENTITY_PROFILES.LEGAL_ENTITY_ID = XLE_ETB_PROFILES.LEGAL_ENTITY_ID] with [
    XLE_REGISTRATIONS T1155 On XLE_REGISTRATIONS_LE.REGISTRATION_ID = XLE_REG_FUNCTIONS_LE.REGISTRATION_ID,
    XLE_REG_FUNCTIONS T5703,
    XLE_ENTITY_PROFILES T836 On XLE_ENTITY_PROFILES.LEGAL_ENTITY_ID = XLE_REGISTRATIONS_LE.SOURCE_ID]
    But when i run below query,which resembles the BI Answer query, against the database ,
    select distinct A.NAME as c1,
    B.REGISTERED_NAME as c2,
    E.Function_code as c5,
    C.NAME as c3,
    D.REGISTERED_NAME as c4,
    F.Function_code as c6
    from
    XLE_ENTITY_PROFILES A,
    XLE_REGISTRATIONS B,
    XLE_REG_FUNCTIONS E,
    XLE_ETB_PROFILES C,
    XLE_REGISTRATIONS D,
    XLE_REG_FUNCTIONS F
    where (A.LEGAL_ENTITY_ID = C.LEGAL_ENTITY_ID and
    A.LEGAL_ENTITY_ID = B.SOURCE_ID and
    C.ESTABLISHMENT_ID = D.SOURCE_ID and
    B.SOURCE_TABLE = 'XLE_ENTITY_PROFILES' and
    D.SOURCE_TABLE = 'XLE_ETB_PROFILES' and
    E.Registration_id = B.Registration_id and
    F.Registration_id = D.Registration_id)
    order by c1, c2,c5, c3, c4,c6
    i don't get any error.
    Please let me know , why am i getting this error and how can i resolve this issue?

    Hi All,
    Is there any update on this ?
    Thanks,Ashish

  • Illegal cross join within the same dimension caused by incorrect subject.

    Hello Gurus,
    I am getting this error for one calculated column in OBIEE 11G
    Illegal cross join within the same dimension caused by incorrect subject area setup. *[ WC_PC_POSITION_D AS Dim_WC_PC_POSITION_D] with [ W_GL_ACCOUNT_D AS Dim_W_GL_ACCOUNT_D On Dim_W_GL_ACCOUNT_D.ROW_WID = Fact_WC_PC_BUDGET_DTLS_F.GL_ACCOUNT_WID, WC_PC_BUDGET_DTLS_F AS Fact_WC_PC_BUDGET_DTLS_F] (HY000)*
    the same column is calculated in OBIEE 10G and it's giving fine result.
    the way it's calculated in BMM is we are using 2 different logical table's column for deriving new column.
    is anyone having any idea?
    Thanking You..

    More Specially,
    Physical Layer:
    Dim:View1,View2,View3,View4
    Fact:View5
    all Views are PK joined in Phsical layer.
    So I need all columns in 3 Views and few column in View4.
    In BMM :
    Dim:View1,View2,View3
    Fact:View 5
    are joined and created LTS in View3 for LTS View4 and dropped few coulmns and mapped the columns.
    In reports,
    If I pull the columns from View3 which is came from view4 then getting the error.
    I hope does it make sense.
    Please help on this.

  • Illegal cross join within the same dimension

    Hi,
    When certain fields are selected within the presentation table an "illegal cross join" error is returned by the BI Server. However if a FACT is added from one of the other presentation tables the "illegal cross join" error goes away. we need to query without fact column.
    We are getting following error
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 14065] Illegal cross join within the same dimension caused by incorrect subject area setup: [ CALL_CENTER.COUNSELOR_MANAGER T782130] with [ CALL_CENTER.COUNSELOR_HR T781594 On CALL_CENTER.COUNSELOR_HR.MASTER_STAFF_COUNSELOR_ID = CALL_CENTER.MASTER_STAFF_COUNSELOR.MASTER_STAFF_COUNSELOR_ID, CALL_CENTER.MASTER_STAFF_COUNSELOR T781739] (HY000)
    Can anybody help me solving this issue.
    Thanks,
    KS.

    Please give us an example of what you need.
    OBIEE perform a query in the dimension or through the fact table.
    You can't join two dimensions in the repository without going through a fact table.
    If you need to query without fact column, it's because you have design two dimensions where
    normally you can do one.
    You have then two solutions :
    * change the design of your logical model to make only one dimension.
    * use the OBIEE logical SQL in answer.
    http://gerardnico.com/wiki/dat/obiee/bi_server/design/obiee_logical_sql
    Success
    Nico

  • Illegal cross join within the same dimension caused by incorrect

    Hi,
    I created a logical table from 2 different Physical tables. Then I created a Dimension out of this logical table.
    At the BI Answer, while I tried drilling on the dimension, I get the following error:
    “Illegal cross join within the same dimension caused by incorrect subject area setup “
    Please let me know if there is any work around this issue.
    Thanks,

    I think that OBIEE try to do a cross join but don't allow it
    http://gerardnico.com/wiki/dw/join/cross_join
    It generate surely a join with two tables where you don't have any condition or relation in the physical layer.
    When you check the column from the subject area are you sure that you have a condition in the physical layer for the two tables ?
    When you say "I tried drilling on the dimension", does it means that you have a report and when you click on link which come from a dimension level, it doesn't work ?
    Regards
    Nico

  • Want to use the same #TEMP table for multiple datasets in SSRS 2005

    I am using Visual Studio 2005 to create SSRS 2005 reports. The report will consist of two different matrix from two different dataset that will gather data from the same data source. The first dataset is a procedure that inserts data from a query into
    a #temp table and outputs it in the first matrix. I want the second dataset to be a different procedure that references the same #temp table. When the report is pulled then can the #temp table be dropped.

    Try in the Dataset properties.  In the Query tab, under and to the right of "Data source:" click the box with the elipses (...).  In the General tab, toward the bottom, there is a check box beside "Use single transaction".
    Rakesh M J | MCTS,MCITP ( SQL SERVER 2008 )
    Dont forget to mark it as Answered if found useful |
    myspeakonbi

  • I can not join my Apple extreme with the Apple express. I shows a conflict in the network! I've tried everything. How can they join on the same network?

    I can not join my Apple extreme with the Apple express. I shows a conflict in the network! I've tried everything. How can they join on the same network?

    It says that my DHCP has to be changed! How? to what?
    It is 802.11g.express. but is set to default by the computer (Macbook Air).
    The other is 802.11n. (express)
    Extreme is 802.11.g. Is the Main Airport.
    It is on ethernet & wep 128 security.

Maybe you are looking for

  • Is there a way to add, delete or change a FAC code via CLI in CUCM?

    Hi everyone, I was wondering if it is possible to add, delete or change a fac code(or client matter) via CLI? I know how to do it via BAT tool, but I want to do it via CLI(if it's possible). I´m using CUCM 6. I'll really appreciate your comments. Tha

  • CVP Securing Private Data

    Can anyone provide tips, best practices, links to documents regarding security and securing private data when using CVP, VXML Server, Reporting Server, Nuance ASR, UCCE? I'm sure some folks have already implemented the solution in secure environments

  • Sticky space bar

    i have a hp probook 4530s. spilled drink on it. only the space bar sticks. someone told me to pop the key off and wipe it down. i am worried that i will not be able to get it back on. as you can see it is working but it makes a lil cruchy noise when

  • Info on Oracle Cert Expert, Oracle Database11 Release2 SQL Tuning

    Searching at http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=39&p_org_id=1001 for database admin on Database product I' ve found a dead link for a (in my perspective) NEW (interesting) learning path: Oracle Certified Expert,

  • I have a problem when I create message via t-code notif_create.

    when I create message via 'notif_create',I can't fill the blank 'Component'.How can I get the 'Component'?