MicroStrategy ONE
Conserver tous les éléments du résultat de passe finale
Conserver les éléments de résultats de la passe finale Conserver les éléments suivants Les paramètres de propriété déterminent comment effectuer une jointure externe sur le résultat final, ainsi que sur les tables de référence et de relations :
- Si vous choisissez l'option par défaut Preserve common elements of final pass result table and lookup/relationship table (Conserver les éléments communs de la table de résultats de passe finale et de la table de références/relations), le moteur SQL génère une équi-jointure. De ce fait, vous ne voyez que les éléments communs aux deux tables.
- Si vous choisissez l'option Preserve all final result pass elements (Conserver tous les éléments du résultat de passe finale), le moteur SQL génère une jointure externe et votre rapport contient tous les éléments présents dans l'ensemble de résultats final. Lorsque ce paramètre est activé, des jointures externes sont générées pour toutes les jointures de la table de faits vers la table de référence, ainsi que vers toutes les tables de relations éventuelles. Ceci s'explique parce qu'il est difficile de distinguer la table servant de table de référence, et celle servant de table de relations, les deux rôles joués par une table. Par exemple, LOOKUP_DAY fait office à la fois de table de référence pour l'attribut Jour et de table de relation pour Jour et Mois.
Ce paramètre ne doit pas être utilisé dans les entrepôts de données classiques où les tables de référence sont correctement gérées et où tous les éléments de la table de faits ont des entrées dans leurs tables de référence respectives. Il ne doit être utilisé que dans le cas où un certain attribut de la table de faits contient plus d’éléments d’attribut (uniques) que sa table de référence correspondante. Ainsi, dans l'exemple ci-dessus, la table de faits contient les ventes de cinq magasins différents, mais la table de magasins ne contient que quatre magasins. Cela ne devrait pas arriver dans un entrepôt de données standard parce que la table de référence, par définition, doit contenir tous les éléments d'attribut. Toutefois, cela peut arriver si les tables de faits sont mises à jour plus souvent que les tables d références.
- Si vous choisissez l'option Conserver tous les éléments de la table de résultat de la passe finale en fonction de la table de référence et non de la table des relations, le moteur SQL génère une jointure interne sur toutes les passes à l'exception de la passe finale, pour laquelle il génère une jointure extérieure.
- Si vous choisissez Ne pas tenir compte du paramètre de niveau par rapport ; conserver les éléments de la dernière passe en fonction du paramètre au niveau de l'attribut. Si ce choix est effectué au niveau de l'attribut, il est traité comme l'option Conserver les éléments communs (c'est-à-dire, le choix 1) , et le paramètre de cette propriété VLDB est utilisé au niveau de l'attribut.
Ce paramètre s’avère utile si vous ne disposez que d’un nombre limité d’attributs nécessitant différents types de jointures. Par exemple, si parmi les attributs d'un rapport, un seul a besoin de conserver les éléments de la table de la passe finale, vous pouvez définir la propriété VLDB sur Conserver tous les éléments du résultat de passe finale pour cet attribut. Vous pouvez ensuite définir le rapport sur le paramètre Ne pas tenir compte... pour la propriété VLDB. Lors de l’exécution du rapport, seul l’attribut défini différemment génère une jointure externe dans SQL. Toutes les autres tables de référence d’attribut seront jointes à l’aide d’une équi-jointure, ce qui produit de meilleures performances SQL.
Exemple : Preserve common elements of final pass result table and lookup/relationship table (Conserver les éléments communs de la table de résultats de passe finale et de la table de références/relations)
Un rapport présente Store et Dollar Sales sur le modèle.
L'option "Preserve common elements of final pass result table and lookup table" ((Conserver les éléments communs de la table de résultats de passe finale et de la table de référence) retourne les résultats suivants en utilisant la syntaxe SQL ci-dessous.
Magasin | Ventes (en dollars) |
Est |
5000 |
Centre |
8000 |
Sud |
12000 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
join Store a12
activer (a11.Store_id = a12.Store_id)
group by a11.Store_id
Exemple : Conserver tous les éléments de requête du résultat final
Un rapport présente Store et Dollar Sales sur le modèle.
L'option "Preserve all final result pass elements" (Conserver tous les éléments du résultat de passe finale) retourne les résultats suivants en utilisant la syntaxe SQL ci-dessous. Notez que les données pour Store_IDs 4 et 5 sont désormais affichées.
Magasin | Ventes (en dollars) |
Est |
5000 |
Centre |
8000 |
Sud |
12000 |
|
3000 |
|
1500 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
left outer join Store a12
activer (a11.Store_id = a12.Store_id)
group by a11.Store_id
Exemple : Conserver tous les éléments de la table de résultat de la passe finale en fonction de la table de référence et non de la table des relations
Un rapport présente Pays, Mesure 1 et Mesure 2 sur le modèle. Les tables de faits suivantes existent pour chaque mesure :
CALLCENTER_ID | Faits 1 |
1 |
1000 |
2 |
2000 |
1 |
1000 |
2 |
2000 |
3 |
1000 |
4 |
1000 |
EMPLOYEE_ID | Fait 2 |
1 |
5000 |
2 |
6000 |
1 |
5000 |
2 |
6000 |
3 |
5000 |
4 |
5000 |
5 |
1000 |
Le moteur SQL effectue trois passes. Dans la première passe, le moteur SQL calcule la mesure 1. Le moteur SQL effectue une jointure interne de la table "Table de faits (Mesure 1)" ci-dessous avec la table de référence de centre d'appels "LU_CALL_CTR" ci-dessous :
CALLCENTER_ID | COUNTRY_ID |
1 |
1 |
2 |
1 |
3 |
2 |
pour créer la table temporaire de mesures 1 suivante, regroupée par pays, en utilisant la syntaxe SQL suivante :
COUNTRY_ID | Mesure 1 |
1 |
6000 |
2 |
1000 |
create table ZZSP00 nologging as
select a12.COUNTRY_ID COUNTRY_ID,
sum((a11.QTY_SOLD * a11.DISCOUNT))
WJXBFS1
from ORDER_DETAIL a11,
LU_CALL_CTR a12
where a11.CALL_CTR_ID = a12.CALL_CTR_ID
group by a12.COUNTRY_ID
Dans la deuxième passe, la mesure 2 est calculée. Le moteur SQL effectue une jointure interne de la table "Table de faits (Mesure 2)" ci-dessous avec la table de référence des employés "LU_EMPLOYEE" ci-dessous :
EMPLOYEE_ID | COUNTRY_ID |
1 |
1 |
2 |
2 |
3 |
2 |
Pour créer la table temporaire de mesures 2 suivante, regroupée par pays, en utilisant la syntaxe SQL suivante :
COUNTRY_ID | Mesure 2 |
1 |
10000 |
2 |
17000 |
create table ZZSP01 nologging as
select a12.COUNTRY_ID COUNTRY_ID,
sum(a11.FREFT) WJXBFS1
from ORDER_FACT a11,
LU_EMPLOYEE a12
where a11.EMP_ID = a12.EMP_ID
group by a12.COUNTRY_ID
Dans la troisième passe, le moteur SQL utilise la table de référence de pays suivante, "LU_COUNTRY" :
COUNTRY_ID | COUNTRY_DESC |
1 |
États-Unis |
3 |
Europe |
Le moteur SQL effectue une jointure externe de METRIC1_TEMPTABLE ci-dessus et de la table LU_COUNTRY. Le moteur SQL effectue alors une jointure externe de METRIC2_TEMPTABLE ci-dessus et de la table LU_COUNTRY. Enfin, le moteur SQL effectue une jointure interne des résultats de la troisième passe pour produire les résultats finaux.
L'option "Conserver tous les éléments de la table de résultat de la passe finale en fonction de la table de référence et non de la table des relations" retourne les résultats suivants en utilisant la syntaxe SQL ci-dessous.
COUNTRY_ID | COUNTRY_DESC | Mesure 1 | Mesure 2 |
1 |
États-Unis |
6000 |
10000 |
2 |
|
1000 |
17000 |
sélectionnez pa1.COUNTRY_ID COUNTRY_ID,
a11.COUNTRY_NAME COUNTRY_NAME,
pa1.WJXBFS1 WJXBFS1,
pa2.WJXBFS1 WJXBFS2
from ZZSP00 pa1,
ZZSP01 pa2,
LU_COUNTRY a11
where pa1.COUNTRY_ID = pa2.COUNTRY_ID and
pa1.COUNTRY_ID = a11.COUNTRY_ID (+)