Crossjoin (MDX)

Gibt das Kreuzprodukt einer oder mehrerer Mengen zurück.

Syntax

  
Standard syntax  
Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] )  
  
Alternate syntax  
Set_Expression1 * Set_Expression2 [* ...n]  

Argumente

Set_Expression1
Ein gültiger Multidimensional Expressions (MDX)-Ausdruck, der eine Menge zurückgibt.

Set_Expression2
Ein gültiger Multidimensional Expressions (MDX)-Ausdruck, der eine Menge zurückgibt.

Bemerkungen

Die Crossjoin-Funktion gibt das Kreuzprodukt von zwei oder mehr spezifizierten Mengen zurück. Die Reihenfolge der Tupel in der resultierenden Menge hängt von der Reihenfolge der zu verbindenden Mengen und der Reihenfolge ihrer Mitglieder ab. Zum Beispiel, wenn die erste Menge aus {x1, x2,...,xn} besteht und die zweite Menge aus {y1, y2, ..., yn}, ist das Kreuzprodukt dieser Mengen:

{(x1, y1), (x1, y2),...,(x1, yn), (x2, y1), (x2, y2),...,

(x2, yn),..., (xn, y1), (xn, y2),..., (xn, yn)}

Important

Wenn die Mengen im Kreuz-Join aus Tupeln aus verschiedenen Attributhierarchien derselben Dimension bestehen, gibt diese Funktion nur jene Tupel zurück, die tatsächlich existieren. Weitere Informationen finden Sie unter Key Concepts in MDX (Analysis Services).

Beispiele

Die folgende Abfrage zeigt einfache Beispiele für die Verwendung der Crossjoin-Funktion auf der Spalten- und Zeilenachse einer Abfrage:

SELECT  
[Customer].[Country].Members *  
[Customer].[State-Province].Members  
ON 0,  
Crossjoin(  
[Date].[Calendar Year].Members,  
[Product].[Category].[Category].Members)  
ON 1  
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

Das folgende Beispiel zeigt die automatische Filterung, die stattfindet, wenn verschiedene Hierarchien aus derselben Dimension vernetzt werden:

SELECT  
Measures.[Internet Sales Amount]  
ON 0,  
//Only the dates in Calendar Years 2003 and 2004 will be returned here  
Crossjoin(  
{[Date].[Calendar Year].&[2003], [Date].[Calendar Year].&[2004]},  
[Date].[Date].[Date].Members)  
ON 1  
FROM [Adventure Works]  

Die folgenden drei Beispiele liefern die gleichen Ergebnisse – den Internetumsatzbetrag nach Bundesstaat für Bundesstaaten innerhalb der USA. Die ersten beiden verwenden die beiden Cross-Join-Syntaxen und die dritte demonstriert die Verwendung der WHERE-Klausel, um dieselben Informationen zurückzugeben.

Beispiel 1

SELECT CROSSJOIN  
   (  
      {[Customer].[Country].[United States]},  
       [Customer].[State-Province].Members  
   ) ON 0   
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

Beispiel 2

SELECT   
   [Customer].[Country].[United States] *   
      [Customer].[State-Province].Members  
ON 0   
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

Beispiel 3

SELECT   
   [Customer].[State-Province].Members  
ON 0   
FROM [Adventure Works]  
WHERE (Measures.[Internet Sales Amount],  
   [Customer].[Country].[United States])