Τι διαφορές έχουν τα MDX με τα DAX queries

Τι διαφορές έχουν τα MDX με τα DAX queries
Τι διαφορές έχουν τα MDX με τα DAX queries

Είναι και οι δύο γλώσσες expression που χρησιμοποιούνται για ανάλυση δεδομένων στο Power BI, Excel και στα Analysis Services.

Αν θα θέλαμε να δώσουμε απάντηση στο ερώτημα μας με μια πρόταση, η MDX (Multidimensional Expressions) χρησιμοποιείτε για ανάλυση πολυδιάστατων κύβων ενώ η DAX (Data Analysis Expressions) χρησιμοποιείτε για ανάλυση tabular μοντέλων σε ένα Data Warehouse.

Αναλυτικά οι διαφορές τους

Η DAX στο φιλτράρισμα και στο aggregation (SUM,COUNT,MAX κ.τ.λ.) θυμίζει τη λογική της SQL. Επίσης στις εκφράσεις τις συντάσσεται παρόμοια με το Excel (π.χ. SUM(‘Internet Sales'[Sales Amount])). Επιτρέπει τη χρήση DirectQuery για προσπέλαση hot data. Έχει καλύτερη απόδοση από τη MDX. Δεν υποστηρίζει την έννοια των calculated members και named sets που παρέχει η MDX.

Από την άλλη η MDX χρησιμοποιεί τις διαστάσεις του πολυδιάστατου κύβου σε άξονες (έως 128) ώστε να προβάλει τα δεδομένα. Είναι πιο εύκολη στη γραφή της. Χρειάζεται για εξαγωγή δεδομένων για data mining.

Παράδειγμα στη διαφορετική τους σύνταξη

Ας πούμε ότι θέλουμε να κάνουμε pivot με τις πωλήσεις μέσω Internet για το έτος 2019 και 2020 όπως το κάτωθι.

Τι διαφορές έχουν τα MDX με τα DAX queries

MDX

Με τη χρήση MDX θα πρέπει να δηλώσουμε στον κάθε άξονα την πληροφορία που θέλουμε να δούμε. Στο συγκεκριμένο παράδειγμα στο πρώτο άξονα θέλουμε να δούμε τις “Πωλήσεις” και στο δεύτερο ανά έτος 2019 και 2020.

SELECT

{ [Measures].[internet Sales Amount] } ON AXIS (0),
{ [Date].[Calendar Year].[2019],
[Date]. [Calendar Year].[2020] } ON AXIS (1)

FROM
[Adventure Works]

DAX

Με τη χρήση DAX θα πρέπει να δημιουργηθεί ένα Measure (μέτρηση) με τη χρήση του Aggregate Function “SUM” ώστε να κάνουμε pivoting ως προς το έτος 2019 και 2020.

DEFINE
MEASURE 'Internet Sales'[internet Sales Amount] = SUM('Internet Sales'[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
    'Date'[Calendar Year],
    TREATAS({2019, 2020}, 'Date'[Calendar Year]),
    "Internet Sales", [internet Sales Amount],
ALLSELECTED('Date'[Calendar Year]))
)
ORDER BY [Calendar Year]

Ποια είναι καλύτερη;

Φυσικά και δεν υπάρχει απάντηση σε αυτό το ερώτημα.

Ανάλογα τη χρήση που θέλουμε να κάνουμε επιλέγουμε και τη γλώσσα, για δεδομένα σε μια βάση δεδομένων θα χρησιμοποιήσουμε SQL, για δεδομένα σε έναν πολυδιάστατο κύβο MDX και για ένα PowerPivot / Tabular μοντέλα DAX.

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση