Crossjoin (MDX)

Retourne le produit croisé d'un ou plusieurs jeux.

Syntaxe

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

Alternate syntax
Set_Expression1 * Set_Expression2 [* ...n]

Arguments

  • Set_Expression1
    Expression MDX (Multidimensional Expressions) valide qui retourne un jeu.

  • Set_Expression2
    Expression MDX (Multidimensional Expressions) valide qui retourne un jeu.

Notes

La fonction Crossjoin retourne le produit croisé de deux ou plusieurs jeux spécifiés. L'ordre des tuples dans le jeu résultant dépend de l'ordre des jeux à joindre et de l'ordre de leurs membres. Par exemple, si le premier jeu est composé de {x1, x2,...,xn} et le deuxième jeu de {y1, y2, ..., yn}, le produit croisé de ces jeux est le suivant :

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

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

Important

Si les jeux dans la jointure croisée se composent de tuples issus de différentes hiérarchies d'attribut au sein de la même dimension, cette fonction retourne uniquement les tuples réellement existants. Pour plus d'informations, consultez Concepts clés dans MDX (MDX).

Exemples

La requête suivante affiche des exemples simples de l'utilisation de la fonction Crossjoin sur les axes de colonnes et de lignes d'une requête :

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]

L'exemple suivant affiche le filtrage automatique qui a lieu lorsque les hiérarchies différentes de la même dimension sont des jointures croisées :

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]

Les trois exemples ci-après retournent les mêmes résultats, soit la mesure Internet Sales Amount (volume de vente Internet) par état pour les états des États-Unis. Les deux premiers utilisent les deux syntaxes de jointure croisée ; le troisième démontre l'utilisation de la clause WHERE pour le retour des mêmes informations.

Exemple 1

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

Exemple 2

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

Exemple 3

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