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
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 CALENDAR
Dans 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.ID
Par 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