M Query vs DAX: Πού σταματά το ένα και πού ξεκινά το άλλο;

Όποιος έχει περάσει αρκετές ώρες μέσα στο Power BI, σίγουρα έχει αναρωτηθεί: "Να το κάνω στο Power Query ή με DAX;" Είναι από τις πιο συχνές ερωτήσεις — και δεν υπάρχει πάντα μια ξεκάθαρη απάντηση.

Σε αυτή την ανάρτηση, επιχειρώ να φωτίσω τη διαφορά ανάμεσα σε M και DAX, αλλά και να καταλήξουμε μαζί στους χρυσούς κανόνες επιλογής.


🔧 Τι είναι το M (Power Query)?

Το M (ή Power Query Formula Language) είναι η γλώσσα που χρησιμοποιείται στο Power Query editor. Εστιάζει στην **προεπεξεργασία των δεδομένων** — καθαρισμό, μετασχηματισμό και φόρτωση.

  • Αφορά τη φάση ETL (Extract-Transform-Load).
  • Εκτελείται **πριν** από τη δημιουργία του μοντέλου δεδομένων.
  • Είναι πιο procedural και step-based.

📌 Παράδειγμα:

= Table.RemoveColumns(#"Previous Step",{"UnnecessaryColumn"})

🧠 Τι είναι το DAX;

Το DAX (Data Analysis Expressions) είναι μια γλώσσα υπολογισμών και ερωτημάτων. Εστιάζει στην **ανάλυση, τη μέτρηση και τη μοντελοποίηση**.

  • Εκτελείται **μετά** το data model.
  • Χρησιμοποιείται για δημιουργία μετρήσεων (measures), υπολογιστικών στηλών, KPIs κ.α.
  • Είναι context-sensitive: row context, filter context κ.λπ.

📌 Παράδειγμα:

Total Sales = SUM(Sales[Amount])

📊 Πότε να χρησιμοποιήσεις το Power Query (M);

➡️ Όταν θέλεις να:

  • Καθαρίσεις ή μετασχηματίσεις δεδομένα (null values, split columns, pivot/unpivot)
  • Φιλτράρεις rows ή αφαιρέσεις columns **μόνιμα** από το dataset
  • Δουλέψεις με raw data πριν το φέρεις στο model
  • Συγχωνεύσεις ή ενώσεις πίνακες (merge, append)

✔️ Tip: Ό,τι μπορεί να γίνει upstream, κάν’ το εκεί. Το μοντέλο σου θα σε ευγνωμονεί!


📐 Πότε να χρησιμοποιήσεις DAX;

➡️ Όταν θέλεις να:

  • Υπολογίσεις metrics και KPIs (π.χ. ποσοστά, συσσωρευτικά, συγκρίσεις)
  • Ελέγξεις context με IF / SWITCH / CALCULATE
  • Φτιάξεις δυναμικά visualizations βάσει user interaction
  • Δουλέψεις με Time Intelligence (YTD, MTD, SAMEPERIODLASTYEAR κ.λπ.)

✔️ Tip: Αν θες “πώς βλέπει το χρήστης τα δεδομένα”, τότε μάλλον DAX. Αν θες “πώς να τα φέρεις και να τα ετοιμάσεις”, τότε Power Query.


🏁 Οι Χρυσοί Κανόνες Επιλογής

  • 🔹 Transform once → Use M: Μετασχηματισμοί που δεν αλλάζουν συχνά = upstream στο Power Query.
  • 🔹 Analysis flexibly → Use DAX: Υπολογισμοί που αλλάζουν συχνά (π.χ. based on filters) = downstream με DAX.
  • 🔹 Model size matters: Ό,τι μπορείς να κάνεις στο M, ελαφρύνει το μοντέλο σου.
  • 🔹 Performance > Convenience: Αν κάτι "τρέχει βαριά" σε DAX, σκέψου μήπως μεταφερθεί στο Power Query.

🧩 Και όταν M & DAX δεν φτάνουν;

Αν και το Power BI είναι πανίσχυρο, υπάρχουν περιπτώσεις που χρειάζεσαι πιο ειδικά εργαλεία για optimization ή προεπεξεργασία:

  • ⚙️ SQL views: Προ-φιλτράρεις και μοντελοποιείς δεδομένα στο ίδιο το RDBMS.
  • 🐍 Python scripts: Για πιο εξελιγμένες προεπεξεργασίες ή machine learning μετασχηματισμούς.

Το σωστό εργαλείο, για τη σωστή δουλειά. Και το σωστό timing, για τη σωστή απόδοση.


💬 Τι χρησιμοποιείς περισσότερο; M ή DAX;

Προτιμάς να φτιάχνεις "έξυπνα" queries στο Power Query ή να παίζεις με το context μέσω DAX; Έχεις κάποιο αγαπημένο trick ή ιστορία αποδοτικότητας που θες να μοιραστείς;

📥 Άφησε σχόλιο ή στείλε μου μήνυμα — θα χαρώ να το ενσωματώσω σε επόμενο post!

Σχόλια