Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Konzept der Autoexistenz schränkt den Würfelraum auf die Zellen ein, die tatsächlich im Würfel vorhanden sind, im Gegensatz zu denen, die möglicherweise durch die Erstellung aller möglichen Kombinationen von Attributhierarchieelementen aus derselben Hierarchie existieren könnten. Dies liegt daran, dass Elemente einer Attributhierarchie nicht mit Elementen einer anderen Attributhierarchie in derselben Dimension vorhanden sind. Wenn zwei oder mehr Attributhierarchien derselben Dimension in einer SELECT-Anweisung verwendet werden, wertet Analysis Services die Ausdrücke der Attribute aus, um sicherzustellen, dass die Mitglieder dieser Attribute angemessen auf die Kriterien aller anderen Attribute eingeschränkt sind.
Angenommen, Sie arbeiten mit Attributen aus der Dimension "Geography". Wenn Sie einen Ausdruck haben, der alle Mitglieder aus dem Attribut "City" und einen anderen Ausdruck zurückgibt, der Mitglieder des Attributs "Country" auf alle Länder/Regionen in Europa beschränkt, wird dies dazu führen, dass die Stadtmitglieder nur auf die Städte beschränkt werden, die zu Ländern/Regionen in Europa gehören. Dies liegt daran, dass das Merkmal von Analysis Services automatisch vorhanden ist. AutoExists gilt nur für Attribute derselben Dimension, da es versucht zu verhindern, dass die in einem Attributausdruck ausgeschlossenen Dimensionsdatensätze von anderen Attributausdrücken einbezogen werden. Autoexistenz kann auch als die resultierende Schnittmenge der verschiedenen Attribute ausdrücke über die Bemaßungszeilen verstanden werden.
Zellexistenz
Die folgenden Zellen sind immer vorhanden:
Das Element (Alle) jeder Hierarchie, wenn es mit Elementen anderer Hierarchien in derselben Dimension kreuzt wird.
Berechnete Mitglieder, wenn sie mit ihren nicht berechneten Geschwistern kombiniert werden oder mit den Eltern oder Nachkommen ihrer nicht berechneten Geschwister.
Bereitstellen nicht vorhandener Zellen
Eine nicht vorhandene Zelle ist eine vom System bereitgestellte Zelle als Antwort auf eine Abfrage oder Berechnung, die eine Zelle anfordert, die nicht im Cube vorhanden ist. Wenn Sie z. B. über einen Cube mit einer Attributhierarchie "City" und einer Attributhierarchie "Land" verfügen, die zur Dimension "Geographie" gehören, und einer Kennzahl "Internet Sales Amount", enthält dieser Würfelraum nur die Elemente, die gemeinsam existieren. Wenn die Attributhierarchie "City" beispielsweise die Städte New York, London, Paris, Tokio und Melbourne umfasst und die Attributhierarchie "Country" die Länder USA, Vereinigtes Königreich, Frankreich, Japan und Australien umfasst, dann enthält der Würfel nicht die Zelle an der Schnittmenge von Paris und den USA.
Beim Abfragen von zellen, die nicht vorhanden sind, geben nicht vorhandene Zellen Nullwerte zurück. das heißt, sie können keine Berechnungen enthalten, und Sie können keine Berechnung definieren, die in diesen Leerraum schreibt. Beispielsweise enthält die folgende Anweisung Zellen, die nicht vorhanden sind.
SELECT [Customer].[Gender].[Gender].Members ON COLUMNS,
{[Customer].[Customer].[Aaron A. Allen]
,[Customer].[Customer].[Abigail Clark]} ON ROWS
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Hinweis
Diese Abfrage verwendet die Funktion Members (Set) (MDX), um den Satz von Elementen der Attributhierarchie "Gender" auf der Spaltenachse zurückzugeben, und überschneidet diesen Satz mit dem angegebenen Satz von Elementen aus der Attributhierarchie "Customer" auf der Zeilenachse.
Wenn Sie die vorherige Abfrage ausführen, zeigt die Zelle am Schnittpunkt von Aaron A. Allen und Female eine NULL an. Ebenso zeigt die Zelle am Schnittpunkt von Abigail Clark und Male eine NULL an. Diese Zellen sind nicht vorhanden und können keinen Wert enthalten, aber Zellen, die nicht vorhanden sind, können in dem ergebnis angezeigt werden, das von einer Abfrage zurückgegeben wird.
Wenn Sie die Crossjoin-Funktion (MDX) verwenden, um das Kreuzprodukt der Mitglieder von Attributhierarchien in derselben Dimension zurückzugeben, schränkt AutoExists diese Tupel auf den Satz von tatsächlich vorhandenen Tupeln ein, anstatt ein vollständiges kartesisches Produkt zurückzugeben. Führen Sie beispielsweise die folgende Abfrage aus und überprüfen Sie anschließend die Ergebnisse der Ausführung.
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Hinweis
Beachten Sie, dass 0 verwendet wird, um die Spaltenachse zu bezeichnen, die Kurzform für Achse(0) - die Spaltenachse ist.
Die vorherige Abfrage gibt nur Zellen für Elemente aus jeder Attributhierarchie in der Abfrage zurück, die miteinander vorhanden sind. Die vorherige Abfrage kann auch mit der neuen * Variante der Funktion Crossjoin (MDX) geschrieben werden.
SELECT
[Customer].[Country].[United States] *
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Die vorherige Abfrage kann auch wie folgt geschrieben werden:
SELECT [Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE (Measures.[Internet Sales Amount],
[Customer].[Country].[United States])
Die zurückgegebenen Zellenwerte sind identisch, obwohl die Metadaten im Resultset unterschiedlich sind. Bei der vorherigen Abfrage wurde beispielsweise die Länderhierarchie auf die Datenschnittachse (in der WHERE-Klausel) verschoben und daher nicht explizit im Resultset angezeigt.
Jede dieser drei vorherigen Abfragen zeigt die Auswirkung des automatisch vorhandenen Verhaltens in SQL Server Analysis Services.
Tiefe und Flache Autoexistenz
Autoexists können auf Ausdrücke als "Deep" oder "Shallow" angewendet werden.
Deep Autoexists bedeutet, dass alle Ausdrücke so ausgewertet werden, dass der tiefstmögliche Raum erzielt wird, nachdem die Datenschnittausdrücke angewendet und die Subauswahl-Ausdrücke auf der Achse berücksichtigt wurden, und so weiter.
Shallow Autoexists bedeutet, dass externe Ausdrücke vor dem aktuellen Ausdruck ausgewertet werden und diese Ergebnisse an den aktuellen Ausdruck übergeben werden. Die Standardeinstellung ist tief automatisch vorhanden.
Im folgenden Szenario und anhand der Beispiele werden die verschiedenen Typen von Autoexistss veranschaulicht. In den folgenden Beispielen werden zwei Sätze erstellt: eins als berechneter Ausdruck und der andere als Konstantenausdruck.
//Obtain the Top 10 best reseller selling products by Name
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
Das erhaltene Resultset lautet:
| Umsatzbetrag des Wiederverkäufers | Rabattbetrag | PCT Rabatt | |
| Berg-200 | $14,356,699,36 | $19.012.71 | 0.13% |
| Road-250 | $9.377.457,68 | $4.032,47 | 0.04% |
| Berg-100 | $8,568,958,27 | $139,393.27 | 1.63% |
| Road-650 | $7,442,141,81 | $39.698.30 | 0,53% |
| Touren-1000 | $6.723.794.29 | $166.144.17 | 2.47% |
| Road-550-W | $3,668,383,88 | $1.901,97 | 0.05% |
| Road-350-W | $3,665,932,31 | $20,946,50 | 0,57% |
| HL Mountain Frame | $3,365,069,27 | $174.11 | 0.01% |
| Straße-150 | $2,363,805.16 | 0,00 USD | 0.00% |
| Touring-3000 | $ 2.046.508.26 | $79,582,15 | 3.89% |
Die gewonnene Produktmenge scheint mit Preferred10Products identisch zu sein; überprüfen Sie daher den Satz "Preferred10Products":
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
Gemäß den folgenden Ergebnissen sind beide Sätze (Top10SellingProducts, Preferred10Products) identisch.
| Vertriebshändler-Umsatzbetrag | Rabattbetrag | PCT Rabatt | |
| Berg-200 | $14,356,699,36 | $19.012.71 | 0.13% |
| Road-250 | $9.377.457,68 | $4.032,47 | 0.04% |
| Berg-100 | $8,568,958,27 | $139,393.27 | 1.63% |
| Road-650 | $7,442,141,81 | $39.698.30 | 0,53% |
| Touring-1000 | $6.723.794.29 | $166.144.17 | 2.47% |
| Road-550-W | $3,668,383,88 | $1.901,97 | 0.05% |
| Road-350-W | $3,665,932,31 | $20,946,50 | 0,57% |
| HL Mountain Frame | $3,365,069,27 | $174.11 | 0.01% |
| Road-150 | $2,363,805.16 | 0,00 USD | 0.00% |
| Touren-3000 | $ 2.046.508.26 | $79,582,15 | 3.89% |
Im folgenden Beispiel wird das Konzept der tiefen Autoexistenz veranschaulicht. Im Beispiel filtern wir die Top 10 der verkauften Produkte nach dem Attribut [Product].[Product Line] für die Gruppe [Mountain]. Beachten Sie, dass beide Attribute (Filter und Achse) zur gleichen Dimension gehören, [Produkt].
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
// Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Erzeugt die folgende Ergebnismenge:
| Händlervertriebsbetrag | Rabattbetrag | PCT Rabatt | |
| Berg-200 | $14,356,699,36 | $19.012.71 | 0.13% |
| Berg-100 | $8,568,958,27 | $139,393.27 | 1.63% |
| HL Mountain Frame | $3,365,069,27 | $174.11 | 0.01% |
| Berg-300 | $1.907.249.38 | $876,95 | 0.05% |
| Mountain-500 | $1.067.327,31 | $17.266.09 | 1.62% |
| Mountain-400-W | $592,450,05 | $303,49 | 0.05% |
| LL Mountain Frame | $521,864,42 | $252,41 | 0.05% |
| ML Mountain Frame-W | $482.953.16 | $206,95 | 0.04% |
| ML Mountain Frame | $343.785.29 | $161,82 | 0.05% |
| Damen-Bergshorts | $260,304.09 | $6.675,56 | 2.56% |
Im obigen Ergebnis-Set haben wir sieben Neulinge in der Liste der Top-10-Verkaufsprodukte, und Mountain-200, Mountain-100 sowie der HL Mountain Frame sind an die Spitze der Liste gerückt. Im vorherigen Ergebnissatz wurden diese drei Werte interspersiert.
Dies wird als Deep Autoexists bezeichnet, da die Menge "Top10SellingProducts" ausgewertet wird, um die Zerlegungsbedingungen der Abfrage zu erfüllen. Tiefe Autoexistenz bedeutet, dass alle Ausdrücke ausgewertet werden, um den tiefstmöglichen Raum nach dem Anwenden der Slicer-Ausdrücke, der Subauswahlausdrücke auf der Achse usw. zu erreichen.
Allerdings kann man die Analyse über die Top10SellingProducts als Äquivalent zu Preferred10Products durchführen können, wie im folgenden Beispiel gezeigt:
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Erzeugt das folgende Resultset:
| Verkaufssumme des Wiederverkäufers | Rabattbetrag | PCT Rabatt | |
| Berg-200 | $14,356,699,36 | $19.012.71 | 0.13% |
| Berg-100 | $8,568,958,27 | $139,393.27 | 1.63% |
| HL Mountain Frame | $3,365,069,27 | $174.11 | 0.01% |
In den obigen Ergebnissen gibt das Slicing ein Ergebnis, das nur die Produkte aus Preferred10Products enthält, die Teil der [Mountain]-Gruppe in [Produkt].[Produktlinie] sind, wie erwartet, da Preferred10Products ein konstanter Ausdruck ist.
Dieses Ergebnismenge wird auch als "Shallow Autoexists" verstanden. Dies liegt daran, dass der Ausdruck vor der Slicing-Klausel ausgewertet wird. Im vorherigen Beispiel war der Ausdruck ein konstanter Ausdruck für Illustrationszwecke, um das Konzept einzuführen.
Das Verhalten automatisch vorhandener Elemente kann mithilfe der Autoexists Verbindungszeichenfolgeneigenschaft auf Sitzungsebene geändert werden. Das folgende Beispiel beginnt mit dem Öffnen einer neuen Sitzung und dem Hinzufügen der Autoexists=3-Eigenschaft zur Verbindungszeichenfolge. Sie müssen eine neue Verbindung öffnen, um das Beispiel ausführen zu können. Sobald die Verbindung mit der Einstellung "Autoexist" hergestellt wurde, bleibt sie wirksam, bis diese Verbindung abgeschlossen ist.
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
//Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Das folgende Resultset zeigt nun das flache Verhalten von Autoexistenz.
| Händlerverkaufsbetrag | Rabattbetrag | PCT Rabatt | |
| Berg-200 | $14,356,699,36 | $19.012.71 | 0.13% |
| Berg-100 | $8,568,958,27 | $139,393.27 | 1.63% |
| HL Mountain Frame | $3,365,069,27 | $174.11 | 0.01% |
Das Verhalten von Autoexists kann mithilfe des Parameters AUTOEXISTS=[1|2|3] in der Verbindungszeichenfolge geändert werden; siehe Unterstützte XMLA-Eigenschaften (XMLA) und ConnectionString zur Verwendung des Parameters.
Siehe auch
Wichtige Konzepte in MDX (Analysis Services)
Cube Space
Tupel
Arbeiten mit Elementen, Tupeln und Sets (MDX)
Visuelle Summen und nicht visuelle Summen
MDX-Sprachreferenz (MDX)
Referenz zu mehrdimensionalen Ausdrücken (MDX)