Έλεγχος του REST API εκτέλεσης ερωτημάτων DAX

Το API εκτέλεσης ερωτημάτων DAX σάς επιτρέπει να εκτελείτε ερωτήματα DAX σε Power BI σημασιολογικά μοντέλα και να ανακτάτε αποτελέσματα μέσω προγραμματισμού σε μορφή IPC Apache Arrow, μια δυαδική μορφή στηλών που έχει σχεδιαστεί για αναλύσεις υψηλής απόδοσης. Επιστρέφοντας τα αποτελέσματα των ερωτημάτων απευθείας σε μορφή βέλους, το API εξαλείφει την επιβάρυνση σειριοποίησης και δίνει στην εφαρμογή σας πρόσβαση σε δεδομένα με ισχυρή πληκτρολόγηση, έτοιμα για ανάλυση.

Διάγραμμα που εμφανίζει την αρχιτεκτονική REST API εκτέλεσης ερωτημάτων DAX. Οι εφαρμογές προγράμματος-πελάτη (Python, C#, PowerShell) στέλνουν αιτήσεις POST και λαμβάνουν ροές IPC βέλους από την υπηρεσία Power BI. Η διοχέτευση επεξεργασίας ροής βέλους εμφανίζει έξι στάδια από την πλευρά του προγράμματος-πελάτη: Λήψη, Αποσειριοποίηση, Επικύρωση, Υλοποίηση, Μετασχηματισμός και Κατανάλωση.

Γιατί Arrow;

Το υπάρχον τελικό σημείο εκτέλεσης ερωτημάτων επιστρέφει αποτελέσματα ως JSON. Το νεότερο τελικό σημείο εκτέλεσης ερωτημάτων DAX επιστρέφει αποτελέσματα αποκλειστικά σε μορφή Apache Arrow IPC, μια δυαδική μορφή στηλών που έχει σχεδιαστεί για αναλύσεις υψηλής απόδοσης. Ο παρακάτω πίνακας συγκρίνει τις δύο μορφές απόκρισης:

JSON (API εκτέλεσης ερωτημάτων) Arrow (Execute DAX Queries API)
Μορφή JSON προσανατολισμένο στις σειρές Κιονοειδές βέλος IPC
Μέγεθος ωφέλιμου φορτίου Μεγαλύτερο (επιβάρυνση κωδικοποίησης συμβολοσειράς) Μικρότερο (δυαδικό, συμπιεσμένο)
Πιστότητα τύπου Lossy (όλα είναι συμβολοσειρά/αριθμός) Lossless (εγγενής ημερομηνία, δεκαδικός, int64)
Αποσειριοποίηση Ανάλυση + εξαναγκασμός τύπου Ανάγνωση μηδενικού αντιγράφου στο DataFrame
Καλύτερο για Μικρά ερωτήματα, απλές ενσωματώσεις Μεγάλα σύνολα αποτελεσμάτων, διοχετεύσεις αναλυτικών στοιχείων

Συμβουλή

Χρησιμοποιήστε το API Execute DAX Queries για οποιαδήποτε εφαρμογή-πελάτη που μπορεί να καταναλώσει δυαδικές ροές Arrow IPC — αυτό περιλαμβάνει Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go και άλλες γλώσσες με υποστήριξη βιβλιοθήκης Arrow. Για πλατφόρμες χαμηλών απαιτήσεων κώδικα/χωρίς κώδικα, ροές Power Automate ή άλλες λύσεις που μπορούν να καταναλώσουν μόνο JSON, συνεχίστε να χρησιμοποιείτε το παλαιότερο API Execute Queries. Παρόλο που το API Execute Queries δεν διαθέτει τις παραμέτρους για προχωρημένους που είναι διαθέσιμες στην Εκτέλεση ερωτημάτων DAX (όπως queryTimeout και resultsetRowcountLimit), παραμένει η κατάλληλη επιλογή όταν απαιτείται έξοδος JSON.

Μορφή Apache Arrow IPC

Το Apache Arrow ορίζει μια μορφή στήλης ανεξάρτητης από τη γλώσσα που έχει υιοθετηθεί ευρέως σε όλο το οικοσύστημα δεδομένων, καθιστώντας την μια από τις πιο ευρέως υποστηριζόμενες αναπαραστάσεις δεδομένων που είναι διαθέσιμες. Η μορφή ροής Arrow IPC (Inter-Process Communication) αναδιπλώνει δέσμες στηλών εγγραφών με μεταδεδομένα σχήματος, επιτρέποντας:

  • Αναγνώσεις μηδενικού αντιγράφου — οι υπολογιστές-πελάτες μπορούν να αντιστοιχίσουν την απόκριση απευθείας στη μνήμη χωρίς να αναλύουν ή να αντιγράφουν δεδομένα μεταξύ buffer.
  • Διαγλωσσική υποστήριξη — υπάρχουν εγγενείς βιβλιοθήκες για Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go, JavaScript και άλλα, ώστε να μπορείτε να καταναλώνετε αποτελέσματα σχεδόν σε οποιαδήποτε γλώσσα.
  • Αποτελεσματική συμπίεση — Η συμπίεση LZ4 μειώνει το μέγεθος του ωφέλιμου φορτίου.
  • Σχεδίαση πρώτου σχήματος — κάθε ροή βέλους ξεκινά με ένα μήνυμα σχήματος που δηλώνει ονόματα, τύπους και μετα-δεδομένα στηλών, ώστε οι πελάτες να γνωρίζουν την ακριβή διάταξη δεδομένων πριν διαβάσουν οποιεσδήποτε γραμμές.

Αντιστοίχιση τύπου DAX σε βέλος

Το API εκτέλεσης ερωτημάτων DAX αντιστοιχίζει τους τύπους δεδομένων DAX σε τύπους βέλους ως εξής:

Τύπος DAX Τύπος βέλους Σημειώσεις
Ακέραιος (ακέραιος αριθμός) int64 Άμεσος ακέραιος αριθμός 64 bit
Δεκαδικός αριθμός double Κινητή υποδιαστολή διπλής ακρίβειας
Νόμισμα (σταθερό δεκαδικό) decimal128(19, 4) Ακρίβεια τεσσάρων δεκαδικών ψηφίων χωρίς απώλειες
Διπλός double Κινητή υποδιαστολή διπλής ακρίβειας
DateTime date64 Χιλιοστά του δευτερολέπτου από την εποχή του Unix
Boolean bool
String utf8 Κωδικοποιημένο από λεξικό από προεπιλογή για αποτελεσματικότητα
Binary binary
Παραλλαγή dense_union Ένωση int64, νόμισμα, bool, ημερομηνία64, float64, utf8

Πότε να χρησιμοποιήσετε το τελικό σημείο βέλους

Χρησιμοποιήστε το τελικό σημείο βέλους όταν:

  • Ανακτήστε περισσότερες από μερικές εκατοντάδες γραμμές από ένα σημασιολογικό μοντέλο.
  • Η τροφοδοσία οδηγεί σε pandas, polars, Spark ή άλλα πλαίσια επεξεργασίας στηλών.
  • Δημιουργήστε μια υπηρεσία μεσαίας κατηγορίας που παρέχει ερωτήματα DAX για μεταγενέστερους καταναλωτές.
  • Χρειάζεστε ακριβείς αριθμητικούς τύπους ή τύπους ημερομηνίας χωρίς χειροκίνητο εξαναγκασμό τύπου.

Για απλά, μικρά ερωτήματα ή γρήγορες ad-hoc αναζητήσεις όπου προτιμάται το JSON, το παλαιότερο Execute Queries API παραμένει μια απλή επιλογή.

Ζητήματα προς εξέταση και περιορισμοί

Πριν από την υιοθέτηση του API εκτέλεσης ερωτημάτων DAX, εξετάστε τις ακόλουθες διαφορές και περιορισμούς σε σύγκριση με το παλαιότερο API εκτέλεσης ερωτημάτων:

Εκτέλεση ερωτημάτων API Εκτέλεση API ερωτημάτων DAX
Τελικό σημείο executeQueries executeDaxQueries
Απαιτούμενη χωρητικότητα Λειτουργεί σε Pro, PPU και Premium/Fabric Χωρητικότητα Premium ή Fabric μόνο
Ρυθμίσεις μισθωτή Σύνολο δεδομένων Εκτέλεση ερωτημάτων REST API (στην περιοχή Ρυθμίσεις προγραμματιστή) Απαιτούνται Dataset Execute Queries REST API (στο Developer settings) και Allow XMLA endpoints and Analyze in Excel with on-premises semantic models (στο Integration settings). Το Να επιτρέπεται στις κύριες υπηρεσίες να χρησιμοποιούν Power BI API (σύμφωνα με το Ρυθμίσεις προγραμματιστή) απαιτείται μόνο κατά τον έλεγχο ταυτότητας με μια κύρια υπηρεσία.
Εισαγωγή ερωτήματος queries[] Πίνακας (ένα ερώτημα ανά κλήση) Μονή query συμβολοσειρά (επιτρέπονται πολλαπλές EVALUATE δηλώσεις)
Μορφές απόκρισης Μόνο JSON Μόνο Arrow IPC
Πρόσθετες παράμετροι Περιορισμένος queryTimeout, resultsetRowcountLimit, schemaOnly, , executionMetricsmemoryLimit
Ροής Δεν μεταδίδεται Ροή από άκρο σε άκρο (τμηματική μεταφορά)
Όρια μεγέθους αποτελέσματος Αυστηρό όριο 100.000 γραμμών και 1.000.000 τιμών ανά ερώτημα Χωρίς σταθερό όριο γραμμής ή τιμής (χρησιμοποιήστε το resultsetRowcountLimit για να καλύψετε εάν χρειάζεται)
Σελιδοποίηση Δεν υποστηρίζεται Δεν υποστηρίζεται — χρήση TOPN ή resultsetRowcountLimit για μεγάλα αποτελέσματα
Απαιτείται βιβλιοθήκη βελών Όχι (μόνο JSON) Ναι — απαιτείται μια βιβλιοθήκη Arrow (όπως pyarrow ή Apache.Arrow) για την αποσειριοποίηση της απόκρισης