MicroStrategy ONE
Alle Ergebniselemente des letzten Durchlaufs beibehalten
Die folgende VLDB-Anweisung zum Beibehalten aller Ergebniselemente des abschließenden Durchlaufs -Eigenschaftseinstellungen legen fest, wie das Endergebnis sowie die Such- und Beziehungstabellen mit einem Outer-Join versehen werden:
- Wenn Sie den Standardwert auswählen Gemeinsame Elemente aus Ergebnistabelle des letzten Durchlaufs und Such-/Beziehungstabelle beibehalten Option generiert die SQL-Engine einen Gleichstellungs-Join. Daher werden nur Elemente angezeigt, die beide Tabellen gemeinsam haben.
- Wenn Sie sich für „“ entscheiden Outer-Join zwischen der Such- und Fakt-/Ergebnistabelle Option generiert die SQL-Engine einen Outer-Join und Ihr Bericht enthält alle Elemente, die im endgültigen Ergebnissatz enthalten sind. Wenn diese Einstellung aktiviert ist, werden für alle Joins von der Fakttabelle zur Suchtabelle sowie für alle Beziehungstabellen Outer-Joins generiert. Dies liegt daran, dass nicht zu unterscheiden ist, welche Tabelle als Suchtabelle und welche Tabelle als Beziehungstabelle verwendet wird – die beiden Rollen, die eine Tabelle häufig spielt. Zum Beispiel dient LUKUP_TAG sowohl als Suchtabelle für das Attribut „Tag“ als auch als Beziehungstabelle für Tag und Monat.
Diese Einstellung sollte nicht in Standard-Data Warehouses verwendet werden, in denen die Suchtabellen ordnungsgemäß verwaltet werden und alle Elemente in der Fakttabelle Einträge in der jeweiligen Suchtabelle aufweisen. Es sollte nur verwendet werden, wenn ein bestimmtes Attribut in der Fakttabelle mehr (eindeutige) Attributelemente enthält als die entsprechende Suchtabelle. Im obigen Beispiel enthält die Fakttabelle Umsätze für fünf verschiedene Filialen, die Filialtabelle jedoch nur vier Filialen. Dies sollte in einem Standard-Data Warehouse nicht passieren, da die Suchtabelle per Definition alle Attributelemente enthalten sollte. Dies kann jedoch der Fall sein, wenn die Fakttabellen öfter aktualisiert werden als die Suchtabellen.
- Wenn Sie sich für „“ entscheiden Alle Elemente der letzten Anweisung der Ergebnistabelle für die Suchtabelle, jedoch nicht für die Beziehungstabelle beibehalten Option generiert die SQL-Engine einen Inner-Join bei allen Durchläufen mit Ausnahme des letzten Durchlaufs; beim letzten Durchlauf wird ein Outer-Join generiert.
- Wenn Sie sich für „“ entscheiden Einstellung auf Berichtebene nicht beachten, Elemente des letzten Durchlaufs entsprechend der Einstellung auf Attributebene beibehalten. Wenn diese Option auf Attributebene ausgewählt ist, entspricht das Verhalten der Option zum Beibehalten gemeinsam verwendeter Elemente (d. h. Auswahl 1 ) , wird die Einstellung für diese VLDB-Eigenschaft auf Attributebene verwendet.
Diese Einstellung ist sinnvoll, wenn Sie nur wenige Attribute haben, die unterschiedliche Join-Typen erfordern. Wenn zum Beispiel nur eines der Attribute in einem Bericht benötigt wird, um Elemente aus der Tabelle des letzten Durchlaufs beizubehalten, können Sie die VLDB-Eigenschaft auf festlegen Alle Ergebniselemente des letzten Durchlaufs beibehalten Einstellung für dieses eine Attribut. Sie können dann den Bericht auf festlegen Nicht zuhören Einstellung für die VLDB-Eigenschaft. Wenn der Bericht ausgeführt wird, verursacht nur das unterschiedlich festgelegte Attribut einen Outer-Join in SQL. Alle anderen Attribut-Suchtabellen werden unter Verwendung eines Equal-Joins verbunden, was zu einer höheren SQL-Leistung führt.
Beispiel: Gemeinsame Elemente aus Ergebnistabelle des letzten Durchlaufs und Such-/Beziehungstabelle beibehalten
Ein Bericht enthält Filialumsätze und Umsätze in Dollar in der Schablone.
Die Option „Gemeinende Elemente aus Ergebnistabelle des letzten Durchlaufs und Suchtabelle beibehalten“ gibt die folgenden Ergebnisse unter Verwendung des unten stehenden SQL zurück.
Speichern | Verkäufe in Dollar |
Osten |
5000 |
Zentral |
8000 |
Süd |
12000 |
select a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
join Store a12
am (a11.Store_id = a12.Store_id)
GROUP BY a11.Store_id
Beispiel: Outer-Join zwischen der Such- und Fakt-/Ergebnistabelle
Ein Bericht enthält Filialumsätze und Umsätze in Dollar in der Schablone.
Die Option „Alle Elemente der Ergebnistabelle des letzten Durchlaufs beibehalten“ Beachten Sie, dass jetzt die Daten für die Store_IDs 4 und 5 angezeigt werden.
Speichern | Verkäufe in Dollar |
Osten |
5000 |
Zentral |
8000 |
Süd |
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
am (a11.Store_id = a12.Store_id)
GROUP BY a11.Store_id
Beispiel: Alle Elemente der letzten Anweisung der Ergebnistabelle für die Suchtabelle, jedoch nicht für die Beziehungstabelle beibehalten
Ein Bericht enthält das Land, die Metrik 1 und die Metrik 2 in der Schablone. Für jede Metrik sind die folgenden Fakttabellen vorhanden:
CVALCSERVER_ID | Fakt 1 |
1 |
1000 |
2 |
2000 |
1 |
1000 |
2 |
2000 |
3 |
1000 |
4 |
1000 |
EMPLOORY_ID | Fakt 2 |
1 |
5000 |
2 |
6000 |
1 |
5000 |
2 |
6000 |
3 |
5000 |
4 |
5000 |
5 |
1000 |
Die SQL-Engine führt drei Durchläufe durch. Im ersten Durchlauf berechnet die SQL-Engine die Metrik 1. Der SQL-Engine-Inner verknüpft die obige Tabelle „Fakttabelle (Metrik 1)“ mit der Call-Center-Suchtabelle „LU_Call_CTR“ unten:
CVALCSERVER_ID | COUNTRY_ID |
1 |
1 |
2 |
1 |
3 |
2 |
, um die folgende temporäre Tabelle der Metrik 1, gruppiert nach Land, unter Verwendung des folgenden SQL zu erstellen:
COUNTRY_ID | Metrik 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
Im zweiten Durchlauf wird Metrik 2 berechnet. Die SQL-Engine-Inner-Join-Funktion „Fakttabelle (Metrik 2)“ oben mit der Mitarbeiter-Suchtabelle „LU_EMPLOT“ unten:
EMPLOORY_ID | COUNTRY_ID |
1 |
1 |
2 |
2 |
3 |
2 |
So erstellen Sie die folgende temporäre Tabelle der Metrik 2, gruppiert nach Land, unter Verwendung des folgenden SQL:
COUNTRY_ID | Metrik 2 |
1 |
10000 |
2 |
17000 |
create table ZZSP01 nologging as
a12.COUNTRY_ID COUNTRY_ID auswählen,
Summe(a11.FREight) WJXBLS1
aus ORDER_FECT a11,
LU_EMPLOOE a12
where a11.EMP_ID = a12.EMP_ID
group by a12.COUNTRY_ID
Im dritten Durchlauf verwendet die SQL-Engine die folgende Länder-Suchtabelle, „LU_COUNTRY“,:
COUNTRY_ID | COUNTRY_DESC |
1 |
USA |
3 |
Europa |
Die SQL-Engine stellt einen Left-Outer-Join mit der obigen metric1_tempatable und der LU_COUNTRY-Tabelle her. Die SQL-Engine führt dann einen Left-Outer-Join mit der obigen metric2_tempatable-Anweisung und der Tabelle LU_COUNTRY durch. Abschließend führt die SQL-Engine einen Inner-Join mit den Ergebnissen des dritten Durchlaufs durch, um die endgültigen Ergebnisse zu erstellen.
Die Option „Alle Elemente der letzten Anweisung der Ergebnistabelle für die Suchtabelle, aber nicht für die Beziehungstabelle beibehalten“ gibt die folgenden Ergebnisse unter Verwendung des unten stehenden SQL zurück.
COUNTRY_ID | COUNTRY_DESC | Metrik 1 | Metrik 2 |
1 |
USA |
6000 |
10000 |
2 |
|
1000 |
17000 |
select pa1.COUNTRY_ID COUNTRY_ID,
a11.COUNTRY_NAME COUNTRY_NAME,
Pa1.WJXBfs1 WJXBfs1,
Pa2.WJXBfs1 WJXBfs2
aus CCSP00 p1,
ZZSP01 pa2,
LU_COUNTRY a11
wobei Pa1.COUNTRY_ID = Pa2.COUNTRY_ID und
Pa1.COUNTRY_ID = a11.COUNTRY_ID (*)