MicroStrategy ONE

Alle Suchtabellenelemente beibehalten

Die VLDB zum Beibehalten aller Suchtabellenelemente -Eigenschaft wird verwendet, um alle Attributelemente anzuzeigen, die in der Suchtabelle vorhanden sind, auch wenn der Ergebnissatz keinen entsprechenden Fakt enthält. Ihr Bericht enthält zum Beispiel „Filiale“ und „Sum(Umsatz)“ und es ist möglich, dass eine Filiale keinerlei Umsätze hat. Im endgültigen Bericht möchten Sie jedoch alle Filialnamen anzeigen, auch die Filialen, die keine Verkäufe haben. Dazu dürfen Sie sich nicht auf die Filialen in der Fakttabelle „Umsatz“ verwenden. Stattdessen müssen Sie sicher sein, dass alle Filialen aus der Suchtabelle im endgültigen Bericht enthalten sind. Die SQL-Engine muss einen Left-Outer-Join von der Suchtabelle zur Fakttabelle ausführen.

Möglicherweise sind mehrere Attribute in der Schablone vorhanden. Um alle Attributelemente beizubehalten, muss die Analyse-Engine einen kartesischen Join zwischen den Suchtabellen der eingebundenen Attribute ausführen, bevor sie einen Left-Outer-Join mit der Fakttabelle ausführt.

Gemeinsame Elemente aus Lookup-Tabelle und Ergebnistabelle der letzten Anweisung beibehalten (Standard).

Die Analyse-Engine führt einen normalen (gleichen) Join mit der Suchtabelle aus.

Suchtabellenelemente, die mit der Ergebnistabelle des abschließenden Durchlaufs verbunden sind, basierend auf Fakttabellenschlüsseln beibehalten.

In manchen Fällen ist die Fakttabellenebene nicht identisch mit der Berichts- oder Schablonenebene. Ein Bericht enthält beispielsweise die Metriken Filiale, Monat, Summe (Umsatz), die Fakttabelle befindet sich jedoch auf der Ebene von Filiale, Tag und Element. Es gibt zwei Möglichkeiten, alle Speicher- und Monatselemente beizubehalten:

  • Führen Sie zuerst einen Left-Outer-Join aus, um alle Attributelemente auf der Ebene der Filiale, des Tages und des Elements beizubehalten, und aggregieren Sie dann auf die Ebene der Filiale und des Monats.
  • Führen Sie zuerst eine Aggregation und dann einen Left-Outer-Join durch, um alle Attributelemente einzufügen.

    Diese Option ist für den ersten Versuch geeignet. Im zuvor genannten Beispiel werden zwei SQL-Durchläufe durchgeführt:

    Durchlauf 1: LREADUP_Store-Cross-Join, LOUTUP_Day-Cross-Join-Lokup_Item ètt1

    Anweisung 2: HTML1 Left-Outer-Join Fakt_Tabelle am (Speicher, Tag, Element)

Der Vorteile dieser Methode besteht darin, dass Sie einen Left-Outer-Join und eine Aggregation im gleichen Durchlauf (Durchlauf 2) ausführen können. Der Unterschied besteht darin, dass das Ergebnis der kartesischen Join-Tabelle (TT1) sehr umfangreich sein kann, weil Sie einen kartesischen Join mit Suchtabellen auf einer wesentlich niedrigeren Ebene ausführen (Durchlauf 1).

Outer Join für Suchtabellen im letzten SQL-Pass ohne Filter anwenden.

Diese Option entspricht dem zweiten oben beschriebenen Zugang. Um das gleiche Beispiel zu verwenden, werden drei SQL-Durchläufe durchgeführt:

  • Durchlauf 1: Fakttabelle zu T1 bei Filiale und Monat aggregieren. Dies ist die letzte Anweisung eines normalen Berichts, ohne diese Einstellung zu aktivieren.
  • Anweisung 2: LLINKUP_Store-Cross-Join LUKUP_MONth > tt2
  • Durchlauf 3: tt2 links Outer-Join tt1 am (speicher, monat)

Dieser Zugang erfordert einen Durchlauf mehr als die vorherige Option, aber die Cross-Join-Tabelle (TT2) ist in der Regel kleiner.

Suchtabellenelemente, die mit der Ergebnistabelle des abschließenden Durchlaufs verbunden sind, basierend auf Schablonenattributen mit Filter beibehalten.

Diese Option ist ähnlich wie Option 3. Der einzige Unterschied besteht darin, dass der Berichtsfilter im letzten Durchlauf (Durchlauf 3) angewendet wird. Ein Bericht enthält beispielsweise Filiale, Monat und Summe (Umsatz) mit einem Filter von Jahr = 2002. Sie möchten 2002 alle Filialen in jedem Monat anzeigen, unabhängig davon, ob es Verkäufe gibt. Sie möchten jedoch keine Monate aus anderen Jahren anzeigen (nur die 12 Monate im Jahr 2002). Option 4 behebt dieses Problem.

Beispiel

Der Gemeinsame Elemente aus Lookup-Tabelle und Ergebnistabelle der letzten Anweisung beibehalten -Option generiert einfach einen direkten Join zwischen der Fakttabelle und der Suchtabelle. Die Ergebnisse und das SQL sehen wie folgt aus.

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

Mit der Option „Suchtabellenelemente, die mit der Ergebnistabelle des abschließenden Durchlaufs verbunden sind, basierend auf Faktschlüsseln beibehalten“ wird eine temporäre Tabelle erstellt, die ein kartesischer Join aller Schlüsselspalten der Suchtabelle ist. Anschließend wird die Fakttabelle über einen Outer-Join mit der temporären Tabelle verbunden. Dadurch werden alle Suchtabellenelemente beibehalten. Die Ergebnisse und das SQL sehen unten aus:

Speichern Verkäufe in Dollar

Osten

5000

Zentral

8000

Süd

12000

Nord

 

select DISTINCT a11.Year Jahr
in #LZOL00
from Fact a11 
select pa1.Year Year,
 a11.Store_id Store_id
in #LZOL01
from #ZZOL00 pa1
 cross join Store a11
select pa2.Store_id Store_id,
 max(a12.Store) Store,
 sum(a11.DollarSls) WJXBFS1
aus #LZOL01 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)
GROUP BY Pa2.Store_id
Drop-Tabelle #CCOL00
Drop-Tabelle #CCOL01

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 das SQL sehen wie folgt aus:

Speichern Verkäufe in Dollar

Osten

5000

Zentral

 

Süd

12000

Nord

 

select a11.Store_id Store_id,
 sum(a11.DollarSls) WJXBFS1
in #LZT5X00003UOL000
from Fact a11
wobei a11.Store_id nicht in (2)
GROUP BY a11.Store_id 
select a11.Store_id Store_id,
 a11.Store Store,
 Pa1.WJXBfs1 WJXBfs1
aus Speicher a11
 Left-Outer-Join #ZT5X00003UOL000 Pa1
 am (a11.Store_id = Pa1.Store_id)
Drop-Tabelle #LZT5X00003UOL000

Die Option „Suchtabellenelemente, die mit der Ergebnistabelle des abschließenden Durchlaufs verbunden sind, basierend auf Schablonenattributen mit Filter beibehalten“ ist die neueste Option und entspricht der oben genannten Option, jedoch wird der Filter im letzten Durchlauf erhalten. Die Ergebnisse und das SQL sehen wie folgt aus:

Speichern Verkäufe in Dollar

Osten

5000

Süd

12000

Nord

 

select a11.Store_id Store_id,
 sum(a11.DollarSls) WJXBFS1
in #LZT5X00003XOL000
from Fact a11
wobei a11.Store_id nicht in (2)
GROUP BY a11.Store_id 
select a11.Store_id Store_id,
 a11.Store Store,
 Pa1.WJXBfs1 WJXBfs1
aus Speicher a11
 left outer join #ZZT5X00003XOL000 pa1
 am (a11.Store_id = Pa1.Store_id)
wobei a11.Store_id nicht in (2)
drop table #ZZT5X00003XOL000