Condividi tramite


Crossjoin (MDX)

Restituisce il prodotto incrociato di uno o più set.

Sintassi

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

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

Argomenti

  • Set_Expression1
    Espressione MDX (Multidimensional Expression) valida che restituisce un set.

  • Set_Expression2
    Espressione MDX (Multidimensional Expression) valida che restituisce un set.

Osservazioni

La funzione Crossjoin restituisce il prodotto incrociato di due o più set specificati. L'ordine delle tuple nel set di risultati dipende dall'ordine dei set da unire e dall'ordine dei membri corrispondenti. Ad esempio, quando il primo set è costituito da {x1, x2,...,xn} e il secondo da {y1, y2, ..., yn}, il prodotto incrociato di tali set è il seguente:

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

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

Nota importanteImportante

Se i set nel cross join sono costituiti da tuple di gerarchie dell'attributo diverse contenute nella stessa dimensione, questa funzione restituirà solo le tuple effettivamente esistenti. Per ulteriori informazioni, vedere Concetti chiave di MDX (MDX).

Esempi

Nella query seguente vengono illustrati esempi semplici dell'utilizzo della funzione Crossjoin sull'asse delle colonne e delle righe di una query:

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]

Nell'esempio seguente viene illustrata l'applicazione di filtri automatica che si verifica quando a gerarchie diverse dalla stessa dimensione viene applicato il crossjoin:

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]

Nei tre esempi seguenti vengono restituiti gli stessi risultati, ovvero il valore di Internet Sales Amount per i vari stati degli Stati Uniti. Nei primi casi due vengono utilizzate le due sintassi cross join e nel terzo viene dimostrato l'utilizzo della clausola WHERE per restituire le stesse informazioni.

Esempio 1

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

Esempio 2

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

Esempio 3

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