MicroStrategy ONE
Conserver tous les éléments du résultat de passe finale
Les paramètres suivants de la propriété VLDB Conserver tous les éléments du résultat de passe finale déterminent la façon dont s'effectue la jointure sur le résultat final et les tables de références et de relations :
- Si vous choisissez la valeur par défaut Conserver les éléments communs de la table de résultats de la passe finale et de la table de référence/des relations Option , le moteur SQL génère une jointure équi-jointure. De ce fait, vous ne voyez que les éléments communs aux deux tables.
- Si vous choisissez Conserver tous les éléments de requête du résultat final Option , le moteur SQL génère une jointure externe et votre rapport contient tous les éléments du jeu 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 se produire si les tables de faits sont mises à jour plus souvent que les tables de référence.
- Si vous choisissez Conserver tous les éléments de la table de résultats de la requête finale en fonction de la table de référence et non de la table des relations Option , le moteur SQL génère une jointure interne sur toutes les passes sauf sur la passe finale ; à la passe finale, elle génère une jointure externe.
- Si vous choisissez Ne tenez pas compte du paramètre de niveau par rapport ; conservez les éléments de la passe finale en fonction du paramètre au niveau de l’attribut. Si ce choix est sélectionné au niveau de l'attribut, il sera traité comme les éléments communs conservés (c'est-à-dire, choix 1 ) , le paramètre pour cette propriété VLDB est utilisé au niveau de l'attribut.
Ce paramètre est utile si vous ne disposez que de quelques attributs qui nécessitent différents types de jointures. Par exemple, si parmi les attributs d'un rapport, un seul doit conserver les éléments de la table de requêtes finales, vous pouvez définir la propriété VLDB sur Conserver tous les éléments de résultats de la requête finale paramètre pour cet attribut. Vous pouvez ensuite définir le rapport sur Ne pas écouter Paramètre 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'attributs seront jointes à l'aide d'une jointure égale, ce qui améliore les performances SQL.
Exemple : Conserver les éléments communs de la table de résultats de la passe finale et de la table de référence/des 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
sur (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
sur (a11.Store_id = a12.Store_id)
group by a11.Store_id
Exemple : Conserver tous les éléments de la table de résultats de la requête 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
regrouper par 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 (+)