Monday, 29 July 2013

BIAPPS consultant Role- Interview Questions




1) Expalin your roles and responsibilties?

2) Difference between Rank and Dense Rank?
RANK, ROW_NUMBER and also DENSE_RANK are very useful for taking a set of rows and ordering them in a defined manner, whilst giving each row a “position value”. They Differ based on the approach taken to define the value of their position in the set of output rows. In some circumstances, they may all give the same value however, dependent on the data, they may differ.An example based on the SCOTT.EMP table, helps to illustrate…
SELECT empno,   sal,  RANK() OVER(ORDER BY sal) rank_position,      DENSE_RANK() OVER(ORDER BY sal) dense_rank_position, ROW_NUMBER() OVER(ORDER BY sal) row_number_position
FROM   emp
which returns, on my 11gR1 database…
EMPNO        SAL RANK_POSITION  DENSE_RANK_POSITION  ROW_NUMBER_POSITION

---------- ---------- ------------- ------------------- -------------------

7369        800             1                   1                   1
7900        950             2                   2                   2
7876       1100             3                   3                   3
7521       1250             4                   4                   4
7654       1250             4                   4                   5
7934       1300             6                   5                   6
7844       1500             7                   6                   7
7499       1600             8                   7                   8
7782       2450             9                   8                   9
7698       2850            10                   9                  10
7566       2975            11                  10                  11
7788       3000            12                  11                  12
7902       3000            12                  11                  13
7839       5000            14                  12                  14
14 rows selected.
Notice that RANK has given the two employees with SAL = 1250, the same position value of 4 and the two employees with SAL=3000, the same position value of 12. Notice also that RANK skips position values 5 and 13 as it has two entries for 4 and 12 respectively. RANK uses all numbers between 1 and 14, except 5 and 13. RANK has both repeats and gaps in it’s ordering.DENSE_RANK is similar to RANK, in that it gives the two employees with SAL=1250, the same position value of 4, but then it does not skip over position value 5 – it simply carries on at position 5 for the next values. DENSE_RANK uses, for the position values, all numbers between 1 and 12, without leaving any out, and using 4 and 11 twice. DENSE_RANK has no gaps in it’s ordering, only repeats.ROW_NUMBER gives each row a unique position value and consequently uses all the numbers between 1 and 14. ROW_NUMBER has no gaps or repeats in it’s ordering. Note that the position value on ROW_NUMBER is not deterministic, since the ORDER BY clause only has SAL in it. If you want to ensure the order is the same each time, you need to add further columns to the ORDER BY clause.
3) Explain Obiee Architecture?





4) Differences between 11G and 10 G?
A Database Repository must be created  before installing OBIEE by using Repository Creation Utility(RCU) tool

OBIEE 11g uses a WEBLOGIC server as Applictaion server whereas OBIEE 10g uses OC4J

Many configuration settings (such as uploading a repository into BI server) can be done using EM

OBIEE 11g displays table names and COLUMN NAMES while mapping whereas OBIEE 10g displays only table names

OBIEE 11g join is done from fact to dimension where as in 10g join is done from dimension to fact

In 10g Users and Groups(or Roles) are created in repository whereas in 11g Users and Groups are created in EM

Groups  no longer exist and are replaced by Application roles. Data level security is implemented by using Application roles to which users belong to.
In Presentation Catalog, AuthenticatedUser role is used instead of Everyone group

LTS priority ordering is introduced

We can model LOOK UP TABLE is repository

Presentation layer Hierarchies are introduced

New time series functions PERIOD ROLLING and AGGREGATE AT is introduced

TIME SERIES functions can be created in the front end also

AGGREGATE PERSISTENCE WIZARD creates indexes automatically

SESSION VARIABLES are intialised only when they are used

In addition to the existing views, Map View is introduced in 11g

RAGGED and SKIPPED HIERARCHY are supported in 11g

PARENT CHILD Hierarchy is introduced

Presentation Variable can hold multiple values

KPI's and SCORECARD's are introduced in 11g

ACTION LINKS, MASTER-DETAIL reports, SELECTION STEPS are introduced

SELECT_PHYSICAL is supported

REQUESTS are renamed as ANLAYSIS

IBOTS are renamed as AGENTS

CHARTS are renamed as GRAPHS

5) Performance tuning techniques?
1 implement caching mechanism
2. use aggregates
3. use aggregate navigation
4. limit the number of initialisation blocks
5. turn off logging
6. carry out calculations in database
7. use materialized views if possible
8. use database hints
9. alter the NQSONFIG.ini parameters

6) Explain different types of Cache Mechanism's?
Ø  The use of an Oracle BI Server event polling table (event table) is a way to notify the Oracle BI Server that one or more physical tables have been updated and then that the query cache entries are stale.An event polling table(S_NQ_EPT) is a way to notify the Oracle BI Server that one or more physical tables have been updated. Each row that is added to an event table describes a single update event. The cache system reads rows from, or polls, the event table, extracts the physical table information from the rows, and purges cache entries that reference those physical tables.Finally it truncate the Event Table(S_NQ_EPT).
Ø  Call SAPurgeAllCache()--Purging the whole cache.
Ø  Purging the cache by table
Ø  Purging the cache by database


7) What is complex join And foreign key join?


8) Can you use complex join in physical layer?
Complex join is used in a physical layer when we want to use join expressions. For ex: we want to use greater than or less than operator.

9) Types of Security?
Ø  Data Level Security
Ø  Object Level Security

10) How do you implement Data level Security?
Data Level security is implemented in the case when the user logging in views the data which he/ she has the access to. This includes to include a system session variable 'USER'to capture the user's logging credentials and apply it to the reports query.

I am having three tables for serving their purpose.
1. Dimension Table - DIM2
2. Fact Table  - FACT1
3. Security Table -SECURITY_1

Data present in the above tables is shown below-



Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBKjeemqryn-MpqiL57XJx797J5qcltI3gWbUxbRxZtJnZfzVs0LY_iOlbz5KTikNqF4P1NbhngJrdJjMBmwfcDAMFljcuNb2Pca3CbEe42M_iTatS4xqfYw026XIA1Xgp5GF59Nx29aGw/s1600/10.JPG



Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh59rOpB2R179ofSi-74yljADB1HtPYf-vqSc7GwZRU_RNR4qSsi34jejm2FonIoeZZqxD8gHWYb7U49l3tFYhBXStGsRWbyvX13bFbsaIEBWvrj-MLJWf2uUaH0RVM6yi_Y6q7lreCoysX/s1600/11.JPG

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho8GPIkZDuHJaXRT9RbBmBnHzvOhB7xpnS_y5iOLndVBb5_KvRBaYTRVeP3QdIjpJQmdW5lLZlwoD4dOEDQR89F3j65XBp1S0Xbbo2cG7xgGMXZ5nm46AU0qsLuu0zg58AwWofT8IxcpOn/s1600/12.JPG



Next we need to import the three tables in the RPD and do the below joins-

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-xsXh8vqu2zSXr_LjyzE_2yCDwApJ-egQ6vi0bcpKhF-clu11HdlnRrUWj5p3hazld1pfYqkoCLhuKQRzvAKqFvmBdL7CoDvL9F0t2awAoSZ6LZdagcUxTRtzO0DSrJYbRwROQv3A73w1/s320/5.JPG


Joins with Dimension and Security table in physical Layer

"DIM2"."COUNTRYID" = "SECURITY_1"."COUNTRYID"

Joins with Fact and Security table in physical Layer

"FACT1"."EMPID" = "SECURITY_1"."EMPID"

Joins with Fact and Security table in physical Layer

"DIM2"."COUNTRYID" ="FACT1"."COUNTRY_ID"


In the BMM layer for the dimension table we need to make the below changes. This change is used to apply when the user selects only the dimension column. So that the values which he/ she has the access will be shown after making the joins with the security table. For example- On clicking of the Prompt values.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1tLDp08QbiFChJ-YS8pp5OORcgbPt2qOoy_AUPBxWyn646dTRndlmvxOc7Khezg9W91g8IAYi3zOO_lXnwkvPupgvTzqkjtR3vJ2UezJgpnafKFB-OuVMo90L-G5hJbLKWtC1XyCbospu/s320/6.JPG

And the below change in the Content Tab -where clause



Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrrVj7Sf15FiCXZNgWkImIE0PdaXzgzlqzMJTL8ayaU-zWU7aZ5e5cIC1BAiogLdvPdRGy2LshB_r1dhNLTbfun36dbiRMkiHTP4bz2F7EOsMjj3UQH6o0QbDf89JbBLcGiwUVI_uouDl/s320/7.JPG


In the BMM layer for the fact table we need to make the below changes. Data will be restricted after making joins with the security table and joins with the dimension  table. You can try removing the joins with the dimension and security tables which is not mandatory, since we are joining with the fact and security tables.


Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQKAqZQWcWdLtjm-HV005aLu6IjhCpTHto0ASovq-q3avhBrxI__3F1DecanTmeDAvj4T1-mUtGqIANgjl-00_HocypNZ7jebh5v0sNjy3xbEjTf9uv0_x3tkWF7wrzc5mCoZzmuPSTw5i/s320/8.JPG

And the below change in the Content Tab -where clause


Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg56To97p5qv3Vv0bnKzcMG4pu1FNm2JMSYm5XVp1WTK5LOUb8PWmcFNIG9OuoaL1ejsdZ9lsUh7OUDKYB-Q5yFRi00AyJKwoV_f6fY7zuXaqwspspD4fcBsL6Ji01L35DdLsxEjLDOwt8b/s320/9.JPG

Now its time to view our reports in answers. When the user logs in with 100 as empid then the user is allowed to view only his/ her data.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg46O8jqFWmxGZo07egDdXoC5v75xQSfN5blf436RyHoNDKWUvn6SHlaDhCUPiCsrOTrBh3j_L6LjipbbjeSSlUofXUfphtahLF5oaDc-hj2PeIHD5tzYBg1akVIJgZtVC8z6siq2wQwpEV/s1600/1.JPG

With the Fact column-


Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-IBhvum8IDrRb6wO5adjUvkHx8EDEsW_7DLWG3LvfS-hLf3v0usMWaBoz79bjV_S2jAfAjflRgh-FVThX8mdBzUa0zYVCZwpRjVwg9Z3AA18m8DVL1UP5QA4XYNTt2bWVCC3Ye0oV-m6b/s1600/2.JPG


When the user with 200 empid logs in-



Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF0OnsNam9Gwl8AaR6F_y63vWRZ3lItXwtuO2hD1mOw1HAh4kB1WR4hY4Bhv9eAx3MqkcXHz_eXhFKQKhauMC65LqremWTQ2U8VYGe4AmI3LqzeJ1HRzWpTk3diRfCCKrJus34F_YW5Cx6/s1600/3.JPG

Prompt value shown for the user with empid 200

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdeOYMEpK-_yBQDbvGIwND0PJAJiCBpX-YbdDT26i2vKYmDt0Zf9QysG792VRwEpip4ZXYEoGvc1EQVKMb6bVsYB09E2LuNzHhnjDSWiOnxKCNpysF_nQr_StrNVpXR8eXPbSDMEAh8Jge/s1600/4.JPG
Below are the queries generated-

For Dimension Security

WITH SAWITH0 AS
  (SELECT DISTINCT T222731.COUNTRY_NAME AS c1
  FROM OBIEE_DBA.SECURITY_1 T222728,
    OBIEE_DBA.DIM2 T222731
  WHERE ( T222728.EMPID = '100'
  AND T222728.COUNTRYID = T222731.COUNTRYID )
  )
SELECT DISTINCT 0 AS c1, D1.c1 AS c2 FROM SAWITH0 D1 ORDER BY c2

With Fact Dimension columns with Security tables joins. With user with login id as 100

WITH SAWITH0 AS
  (SELECT DISTINCT T222731.COUNTRY_NAME AS c1,
    T222734.SALARY                      AS c2
  FROM OBIEE_DBA.SECURITY_1 T222728,
    OBIEE_DBA.DIM2 T222731,
    OBIEE_DBA.FACT1 T222734
  WHERE ( T222728.EMPID = T222734.EMPID
  AND T222728.EMPID     = '100'
  AND T222728.COUNTRYID = T222731.COUNTRYID
  AND T222731.COUNTRYID = T222734.COUNTRY_ID )
  )
SELECT DISTINCT 0 AS c1,
  D1.c1           AS c2,
  D1.c2           AS c3
FROM SAWITH0 D1
ORDER BY c2,
  c3

With user with login id as 200

WITH SAWITH0 AS
  (SELECT DISTINCT T222731.COUNTRY_NAME AS c1,
    T222734.SALARY                      AS c2
  FROM OBIEE_DBA.SECURITY_1 T222728,
    OBIEE_DBA.DIM2 T222731,
    OBIEE_DBA.FACT1 T222734
  WHERE ( T222728.EMPID = T222734.EMPID
  AND T222728.EMPID     = '200'
  AND T222728.COUNTRYID = T222731.COUNTRYID
  AND T222731.COUNTRYID = T222734.COUNTRY_ID )
  )
SELECT DISTINCT 0 AS c1,
  D1.c1           AS c2,
  D1.c2           AS c3
FROM SAWITH0 D1
ORDER BY c2,
  c3
11) What is Fragmentation?
We use fragmentation when we have fact or dimensional data in one or more different tables or data is splitted in different data sources. Then each logical table source represents one data segment

12) What are variables? Have you worked on variables? Give me examples
Ø  Repository Variables
Ø  Session Variables

13) What do you know about DAC?

14) Give me examples of active transformation which will decrease the number of ports in Targets?
An active transformation can change the number of rows that pass through it, but a passive transformation can not change the number of rows that pass through it

15) What is the load strategy you followed?

16) SCD types?

17) Explain about MUDE?
MUDE  (Multi-user development environment) is used for multi-user development of the repository. 

Create a shared directory on the network for Multi-user Development (MUD).
Open the RPD to use in MUD. From Tools->Options, setup the MUD directory to point to the above directory.
Define projects within the RPD to allow multiple users to develop within their subject area or Facts.
Save and move the RPD to the shared directory setup in point 1.
When users work in the MUD mode, they open the admin tool and start with
MUD ->Checkout to check out the project they need to work on (not use the File open as you would Usually do).
After completely the development, user checking the changes back to the network and merge the changes.


18) What are the different utilities you have worked on?

19) How many dimensions and facts you have worked on?
Sales Subject area:- 4 dimensions and 1 fact table
20) Explain SCD Type 2 method?

21) tell about the features you have worked on DAC?

22) What is Opaque View?
OPAQUE VIEWS are the tables that are created with join or other query data that contain SELECT query o/p. The opaque views make logical understanding simple for implementation but they are heavy performance constraints. They are only used when there is no other way to get the final solution.

No comments:

Post a Comment