Τι διαφορές έχουν τα MDX με τα DAX queries
- Πώς συλλέγουμε to actual execution plan από τα queries με χρήση Extended Event και πως διαβάζουμε τα δεδομένα του - 2 Δεκέμβριος 2024
- Πώς βρίσκουμε τι δικαιώματα έχει ένας χρήστης σε βάση δεδομένων της Oracle - 1 Νοέμβριος 2024
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
Είναι και οι δύο γλώσσες 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
Με τη χρήση 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.