MicroStrategy ONE
Alle Elemente der Suchtabelle beibehalten
Die VLDB-Eigenschaft „Alle Nachschlagetabellenelemente beibehalten“ wird verwendet, um alle Attributelemente anzuzeigen, die in der Nachschlagetabelle vorhanden sind, auch wenn im Ergebnissatz keine entsprechende Tatsache vorhanden ist. Beispiel: Ihr Bericht enthält „Store“ und „Sum(Sales)“, es ist jedoch möglich, dass ein Store überhaupt keine Umsätze aufweist. Sie möchten jedoch im Abschlussbericht alle Filialnamen anzeigen, auch die der Filialen, die keine Umsätze erzielen. Hierzu dürfen Sie sich nicht auf die Geschäfte in der Verkaufsfaktentabelle verlassen. Stattdessen müssen Sie sicherstellen, dass alle Geschäfte aus der Nachschlagetabelle im Abschlussbericht enthalten sind. Die SQL-Engine muss einen linken äußeren Join von der Nachschlagetabelle zur Faktentabelle durchführen.
Es ist möglich, dass die Vorlage mehrere Attribute enthält. Um alle Attributelemente beizubehalten, muss die Analytical Engine einen kartesischen Join zwischen den Nachschlagetabellen der beteiligten Attribute durchführen, bevor ein Left Outer Join mit der Faktentabelle durchgeführt wird.
Gemeinsame Elemente der Nachschlage- und Enddurchlauf-Ergebnistabelle beibehalten (Standard).
Die Analytical Engine führt einen normalen (gleichwertigen) Join mit der Nachschlagetabelle durch.
Behalten Sie die mit der endgültigen Ergebnistabelle verknüpften Nachschlagetabellenelemente basierend auf den Faktentabellenschlüsseln bei.
Manchmal ist die Ebene der Faktentabelle nicht dieselbe wie die Ebene des Berichts oder der Vorlage. Beispielsweise enthält ein Bericht die Metriken „Geschäft“, „Monat“, „Summe (Umsatz)“, aber die Faktentabelle befindet sich auf der Ebene „Geschäft“, „Tag“ und „Artikel“. Es gibt zwei Möglichkeiten, alle Shop- und Monatselemente beizubehalten:
- Führen Sie zunächst einen linken äußeren Join durch, um alle Attributelemente auf der Filial-, Tages- und Artikelebene beizubehalten, und aggregieren Sie dann auf der Filial- und Monatsebene.
- Führen Sie zuerst die Aggregation durch und führen Sie dann einen linken äußeren Join aus, um alle Attributelemente einzubeziehen.
Diese Option gilt für den ersten Ansatz. Im vorherigen Beispiel werden zwei SQL-Anweisungen ausgeführt:
Durchlauf 1: // èTT1
Durchlauf 2: TT1 Left-Outer-Join Fakttabelle in (Speicher, Tag, Element)
Der Vorteil dieses Ansatzes besteht darin, dass Sie im selben Durchgang (Durchgang 2) einen Left Outer Join und eine Aggregation durchführen können. Der Nachteil besteht darin, dass das Ergebnis der kartesischen verknüpften Tabelle (TT1) sehr groß sein kann, weil Sie einen kartesischen Join mit den Nachschlagetabellen auf einer viel niedrigeren Ebene durchführen (Durchgang 1).
Behalten Sie die mit der endgültigen Ergebnistabelle verknüpften Nachschlagetabellenelemente basierend auf Vorlagenattributen ohne Filter bei.
Diese Möglichkeit entspricht der oben beschriebenen zweiten Vorgehensweise. Unter Verwendung desselben Beispiels werden drei SQL-Durchläufe durchgeführt:
- Durchlauf 1: Aggregiert die Fakttabelle zu TT1 bei Filiale und Monat. Dies ist eigentlich der letzte Durchgang eines normalen Berichts ohne Aktivieren dieser Einstellung.
- Durchlauf 2: LOOKUP_STORE Cross-Join LOOKUP_MONTH> TT2
- Durchlauf 3: TT2 Left-Outer-Join TT1 am (Speicher, Monat)
Dieser Ansatz erfordert einen Durchgang mehr als die vorherige Option, aber die Cross-Join-Tabelle (TT2) ist normalerweise kleiner.
Behalten Sie mit Filter die auf Vorlagenattributen basierenden Elemente der Nachschlagetabelle bei, die mit der endgültigen Ergebnistabelle verknüpft sind.
Diese Option ähnelt Option 3. Der einzige Unterschied besteht darin, dass der Berichtsfilter im letzten Durchgang (Durchgang 3) angewendet wird. Beispielsweise enthält ein Bericht „Geschäft“, „Monat“ und „Summe (Umsatz)“ mit einem Filter von „Jahr = 2002“. Sie möchten alle Geschäfte in jedem Monat des Jahres 2002 anzeigen, unabhängig davon, ob Sonderangebote vorhanden sind. Sie möchten jedoch keine Monate aus anderen Jahren anzeigen (nur die 12 Monate des Jahres 2002). Option 4 löst dieses Problem.
Beispiel
Die Gemeinsam verwendete Elemente aus Lookup-Tabelle und Ergebnistabelle der letzten Anweisung beibehalten Diese Option generiert lediglich einen direkten Join zwischen der Fakttabelle und der Suchtabelle. Die Ergebnisse und SQL sind wie folgt.
Speichern | Dollar-Verkäufe |
Osten |
5000 |
Zentral |
8000 |
Süd |
12000 |
Wählen Sie a11.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
from Fact a11
join Store a12
ein (a11.Store_id = a12.Store_id)
Gruppierung nach a11.Store_id
Mit der Option „Mit der endgültigen Ergebnistabelle verknüpfte Nachschlagetabellenelemente basierend auf Faktenschlüsseln beibehalten“ wird eine temporäre Tabelle erstellt, die eine kartesische Verknüpfung aller Schlüsselspalten der Nachschlagetabelle darstellt. Anschließend wird die Faktentabelle über einen äußeren Join mit der temporären Tabelle verbunden. Dadurch bleiben alle Elemente der Nachschlagetabelle erhalten. Die Ergebnisse und SQL sind wie folgt:
Speichern | Dollar-Verkäufe |
Osten |
5000 |
Zentral |
8000 |
Süd |
12000 |
Norden |
|
wähle eindeutig a11.Jahr Jahr
in #ZZOL00
from Fact a11
select pa1.Year Year,
a11.Store_id Store_id
in #ZZOL01
from #ZZOL00 pa1
cross join Store a11
select pa2.Store_id Store_id,
max(a12.Store) Store,
sum(a11.DollarSls) WJXBFS1
aus #ZZOL01 pa2
left outer join Fact a11
on (pa2.Store_id = a11.Store_id and
pa2.Year = a11.Year)
join Store a12
on (pa2.Store_id = a12.Store_id)
Gruppierung nach pa2.Store_id
Drop-Tabelle #ZZOL00
Drop-Tabelle #ZZOL01
Die Option „Outer-Join für Suchtabellen im letzten SQL-Pass ohne Filter anwenden“ erhält die Elemente der Suchtabelle, indem ein Left-Outer-Join in der letzten SQL-Anweisung ausschließlich für Attribute ausgeführt wird, die in der Schablone vorhanden sind. In diesem und im nächsten Beispiel wird der Filter „Filiale nicht gleich wie Central“ hinzugefügt. Die Ergebnisse und SQL sind wie folgt:
Speichern | Dollar-Verkäufe |
Osten |
5000 |
Zentral |
|
Süd |
12000 |
Norden |
|
Wählen Sie a11.Store_id Store_id,
sum(a11.DollarSls) WJXBFS1
in #ZZT5X00003UOL000
from Fact a11
wobei a11.Store_id nicht in (2) ist
Gruppierung nach a11.Store_id
Wählen Sie a11.Store_id Store_id,
a11.Store-Shop,
pa1.WJXBFS1 WJXBFS1
aus dem Shop a11
Left-Outer-Join #ZZT5X00003UOL000 pa1
am (a11.Store_id = pa1.Store_id)
Drop-Tabelle #ZZT5X00003UOL000
Die Option „Mit der Ergebnistabelle des endgültigen Durchgangs verknüpfte Nachschlagetabellenelemente basierend auf Vorlagenattributen mit Filter beibehalten“ ist die neueste Option und entspricht der oben stehenden Option, allerdings erhalten Sie den Filter im endgültigen Durchgang. Die Ergebnisse und SQL sind wie folgt:
Speichern | Dollar-Verkäufe |
Osten |
5000 |
Süd |
12000 |
Norden |
|
Wählen Sie a11.Store_id Store_id,
sum(a11.DollarSls) WJXBFS1
in #ZZT5X00003XOL000
from Fact a11
wobei a11.Store_id nicht in (2) ist
Gruppierung nach a11.Store_id
Wählen Sie a11.Store_id Store_id,
a11.Store-Shop,
pa1.WJXBFS1 WJXBFS1
aus dem Shop a11
left outer join #ZZT5X00003XOL000 pa1
am (a11.Store_id = pa1.Store_id)
wobei a11.Store_id nicht in (2) ist
drop table #ZZT5X00003XOL000