2016-04-12 3 views
0

MDX: Was ist der Unterschied dieser Abfragen, verwende ich Adventure Works-Datenbank.MDX: Was ist der Unterschied dieser beiden Abfragen

SELECT 
{[Measures].[Internet Sales Amount]} ON COLUMNS, 
NON EMPTY ([Product].[Category].[Category] , 
      [Date].[Calendar Year].[Calendar Year])ON ROWS 
FROM [Adventure Works] 

GO 

SELECT 
{[Measures].[Internet Sales Amount]} ON COLUMNS, 
NON EMPTY ([Product].[Category].[Category] * 
      [Date].[Calendar Year].[Calendar Year])ON ROWS 
FROM [Adventure Works] 

Antwort

1

Diese zwei Skripte sind gleich.

Dies wird effektiv eine Menge von Tupeln auf den Zeilen setzen - Sie das Tupel definiertem haben explizit die geschweiften Klammern über den Sternoperator (...)

SELECT 
    {[Measures].[Internet Sales Amount]} ON COLUMNS 
,NON EMPTY 
    ( //<<start of tuple 
     [Product].[Category].[Category] 
    ,[Date].[Calendar Year].[Calendar Year] 
    ) ON ROWS 
FROM [Adventure Works]; 

Das zweite Skript * ein Cross-Join ist:

SELECT 
    {[Measures].[Internet Sales Amount]} ON COLUMNS 
,NON EMPTY 
    [Product].[Category].[Category] * [Date].[Calendar Year].[Calendar Year] ON ROWS 
FROM [Adventure Works]; 

Wenn Sie eine crossjoin Aktion ausführen, gibt es eine Reihe von Tupeln zurück - Sie haben also den gleichen Zellensatz.

könnten Sie schreiben Crossjoin stattdessen den Stern mit - obwohl der Star die am häufigsten verwendete Schreibweise in der modernen MDX-Skripts ist:

SELECT 
    {[Measures].[Internet Sales Amount]} ON COLUMNS 
,NON EMPTY 
    CrossJoin 
    (
     [Product].[Category].[Category] 
    ,[Date].[Calendar Year].[Calendar Year] 
    ) ON ROWS 
FROM [Adventure Works]; 
Verwandte Themen