F.A.Q. Business-Objects

F.A.Q. Business-ObjectsConsultez toutes les FAQ
Nombre d'auteurs : 15, nombre de questions : 101, dernière mise à jour : 15 juin 2021
Sommaire→ Designer→Tables dérivées (V6 - XI)
La version 6 permet au Designer de créer des Tables Dérivées qui sont équivalentes à des vues Oracle, c'est à dire définies à l'aide de SQL s'appuyant sur les tables existantes.
Une table calendrier est très utile dans un univers et peut être obtenue à peu de frais en créant une table dérivée
Procéder de la façon suivante :
- Créer une Table Dérivée.
- Créer les objets Dimension correspondants.
- Etablir entre ce champ et le champ Date de la table de données une jointure externe.
SELECT
to_date('20080101','yyyymmdd') + (rownum - 1) as JOURID,
to_char(to_date('20080101','yyyymmdd') + (rownum - 1), yyyymm') as ANNEEMOIS,
to_char(to_date('20080101','yyyymmdd') + (rownum - 1), 'yyyy') as ANNEE
FROM dual
connect BY to_date('20080101','yyyymmdd') + (rownum - 1) <= to_date('20081231','yyyymmdd') as CALENDARDans une Classe Calendrier, créer les objets Dimensions suivants :
- ANNEE
- ANNEEMOIS
- JOURID
En établissant des jointures externes entre le champ Date de chaque table de données et le champ JOURID de la table dérivée,
(ces objets Dimensions permettront à l'utilisateur de rapatrier les données dans des suites ordonnées et continues (donc exhaustives) de dates provenant de la table dérivée CALENDAR et les données correspondantes lorsqu'elles existent.
CALENDAR.JOURID = TABLEDONNEES.LADATE(+)Par exemple on a dans une table Table1 :
| ID | Valeur | Type |
|---|---|---|
| 2 | 10 | A |
| 2 | 20 | B |
| 2 | 30 | C |
Et on veut
| ID | A | B | C |
|---|---|---|---|
| 2 | 10 | 20 | 30 |
Il faut définir une table dérivée dont le SQL est :
SELECT T1.ID, T1.VALEUR AS A, T2.VALEUR AS B, T3.VALEUR AS C
FROM (SELECT ID, VALEUR FROM Table1 WHERE TYPE='A') T1,
(SELECT ID, VALEUR FROM Table1 WHERE TYPE='B') T2,
(SELECT ID, VALEUR FROM Table1 WHERE TYPE='C') T3
WHERE T1.ID = T2.ID AND T1.ID = T3.IDPar exemple on a dans une table Table1 :
| ID | A | B | C |
|---|---|---|---|
| 2 | 10 | 20 | 30 |
Et on veut
| ID | Valeur | Type |
|---|---|---|
| 2 | 10 | A |
| 2 | 20 | B |
| 2 | 30 | C |
Il faut définir une table dérivée dont le SQL est :
SELECT ID, A AS Valeur, 'A' AS Type
FROM Table1
UNION ALL
SELECT ID, B, 'B'
FROM Table1
UNION ALL
SELECT ID, C, 'C'
FROM Table1


