Υποβολή ερωτημάτων σε εξωτερικά αρχεία λιμνών δεδομένων

Ισχύει για:✅ Τελικό σημείο ανάλυσης SQL και Αποθήκη στο Microsoft Fabric

Το Fabric Data Warehouse και το τελικό σημείο ανάλυσης SQL σάς επιτρέπουν να υποβάλετε ερωτήματα σε δεδομένα που είναι αποθηκευμένα σε αρχεία μέσα σε μια λίμνη δεδομένων χρησιμοποιώντας κώδικα Transact-SQL (T-SQL).

Παρέχουν μια οικεία επιφάνεια ερωτήματος T-SQL που υποστηρίζει την αναζήτηση δομημένων, ημιδομημένων και μη δομημένων δεδομένων. Στο Fabric Data Warehouse και στο τελικό σημείο ανάλυσης SQL, μπορείτε να υποβάλετε ερωτήματα σε διάφορες μορφές αρχείων, όπως Parquet, CSV και JSONL.

OPENROWSET

Η απλοποιημένη σύνταξη της OPENROWSET συνάρτησης είναι:

OPENROWSET( BULK '{file path}', [ options...] )
   [ WITH ( {result set column schema} ) ]

OPENROWSET Υποστηρίζει τρεις τρόπους για να καθορίσετε τη θέση του αρχείου:

  • Απόλυτη διαδρομή που περιέχει την πλήρη διεύθυνση URL προς το αρχείο που θέλετε να διαβάσετε. Αυτή είναι η απλούστερη προσέγγιση όταν γνωρίζετε την ακριβή θέση του αρχείου.
  • Σχετική διαδρομή με πηγή δεδομένων - η σχετική διαδρομή προσαρτάται στη θέση ρίζας που ορίζεται στην προέλευση δεδομένων για να σχηματίσει την πλήρη διαδρομή. Η προέλευση δεδομένων μπορεί να οδηγεί σε μια διεύθυνση URL εξωτερικού χώρου αποθήκευσης (για παράδειγμα, Azure Blob, ADLS Gen2) ή στη διεύθυνση URL ρίζας ενός Lakehouse στο Fabric.
  • Σχετική διαδρομή που ξεκινά με /Files - αυτή η επιλογή λειτουργεί μόνο όταν υποβάλλετε ερώτημα σε ένα Lakehouse μέσω του τελικού σημείου ανάλυσης SQL. Ο /Files φάκελος αντιπροσωπεύει την περιοχή αρχείων Lakehouse και μπορείτε να χρησιμοποιήσετε σχετικές διαδρομές χωρίς να ορίσετε μια προέλευση δεδομένων.

Τα αρχεία μπορούν να τοποθετηθούν σε μία από τις ακόλουθες επιλογές αποθήκευσης:

  • Azure Data Lake Storage (ADLS) - μια επεκτάσιμη, ιεραρχική υπηρεσία αποθήκευσης cloud βελτιστοποιημένη για φόρτους εργασίας ανάλυσης μεγάλων δεδομένων.
  • Azure Blob Storage - μια υπηρεσία αποθήκευσης αντικειμένων γενικής χρήσης για την αποθήκευση μεγάλων ποσοτήτων μη δομημένων δεδομένων, όπως αρχεία, εικόνες και αρχεία καταγραφής.
  • Fabric OneLake - ο εγγενής χώρος αποθήκευσης λίμνης για το Microsoft Fabric που παρέχει μια ενοποιημένη, λογική λίμνη δεδομένων για όλους τους φόρτους εργασίας Fabric. Το OneLake επιτρέπει επίσης την έμμεση πρόσβαση σε δεδομένα που είναι αποθηκευμένα σε εξωτερικές τοποθεσίες, όπως:
    • Amazon S3 - Υπηρεσία αποθήκευσης αντικειμένων που παρέχεται από την Amazon Web Services.
    • Google Cloud Storage (GCS) - Υπηρεσία αποθήκευσης αντικειμένων για το Google Cloud Platform.
    • SharePoint - Συνεργατική υπηρεσία αποθήκευσης εγγράφων και αρχείων στο Microsoft 365.
    • OneDrive - Προσωπική υπηρεσία αποθήκευσης στο cloud για αρχεία στο Microsoft 365.

Αυτές οι δυνατότητες επιτρέπουν την ευέλικτη υποβολή ερωτημάτων που βασίζονται σε T-SQL σε δεδομένα που είναι αποθηκευμένα σε ένα ευρύ φάσμα συστημάτων αποθήκευσης cloud και SaaS, εξαλείφοντας την ανάγκη για προηγούμενη απορρόφηση ή μετασχηματισμό δεδομένων πριν από την ανάλυση.

Σχετικές επιλογές OPENROWSET

Χρησιμοποιήστε τις επιλογές στο για OPENROWSET να περιγράψετε την υποκείμενη μορφή αρχείου και να ελέγξετε τον τρόπο ανάλυσης των δεδομένων. Αυτές οι ρυθμίσεις είναι ιδιαίτερα σημαντικές για οριοθετημένα αρχεία κειμένου, όπου πρέπει να ορίσετε τον τρόπο διαχωρισμού των γραμμών και των στηλών.

Οι συνήθεις επιλογές περιλαμβάνουν:

  • FIELDTERMINATOR, ROWTERMINATORκαι FIELDQUOTE - Καθορίστε τους χαρακτήρες που διαχωρίζουν τα πεδία και τις γραμμές. Αυτές οι επιλογές διασφαλίζουν την ακριβή ανάλυση στηλών και εγγραφών. Χειρίζονται επίσης τιμές σε εισαγωγικά σε οριοθετημένα αρχεία για να διατηρήσουν το κείμενο που περιέχει οριοθέτες.
  • HEADER_ROW και FIRSTROW - Υποδείξτε εάν το αρχείο περιέχει μια σειρά κεφαλίδας και ορίστε ποια γραμμή θα πρέπει να αντιμετωπίζεται ως η πρώτη σειρά δεδομένων.
  • CODEPAGE - Ρυθμίστε την κωδικοποίηση χαρακτήρων ώστε να ερμηνεύει σωστά τους ειδικούς χαρακτήρες και το κείμενο που δεν είναι ASCII.

Αυτές οι επιλογές παρέχουν ευελιξία για εργασία με διάφορες μορφές αρχείων και διασφαλίζουν ότι τα δεδομένα διαβάζονται σωστά ανεξάρτητα από διαφορές στη δομή ή την κωδικοποίηση.

Ο προαιρετικός WITH όρος στο OPENROWSET σάς επιτρέπει να ορίσετε ένα ρητό σχήμα για τα δεδομένα. Η παροχή ενός σχήματος είναι χρήσιμη όταν δεν θέλετε OPENROWSET να συναγάγετε αυτόματα το σχήμα από τα υποκείμενα αρχεία. Χρησιμοποιήστε τον όρο για να παρακάμψετε την WITH αυτόματη εξαγωγή συμπερασμάτων σχήματος και να ορίσετε ακριβώς τον τρόπο με τον οποίο τα δεδομένα θα πρέπει να προβάλλονται σε μορφή πίνακα.

Περιπτώσεις χρήσης για το OPENROWSET

Για την παροχή μιας απρόσκοπτης εμπειρίας επιτόπιας υποβολής ερωτημάτων για δεδομένα που είναι αποθηκευμένα σε μια λίμνη δεδομένων, το Fabric Data Warehouse και το τελικό σημείο ανάλυσης SQL χρησιμοποιούν τη συνάρτηση OPENROWSET για αναφορά σε αρχεία και ανάγνωση των περιεχομένων τους.

Η OPENROWSET λειτουργία προσφέρει πλούσιες δυνατότητες για την αναζήτηση αρχείων, όπως:

Υποβολή ερωτήματος σε αρχεία PARQUET με το OPENROWSET

Το Parquet είναι μια μορφή αρχείου στήλης βελτιστοποιημένη για φόρτους εργασίας αναλυτικών στοιχείων. Αποθηκεύει δεδομένα κατά στήλες και όχι κατά γραμμές, γεγονός που επιτρέπει την αποτελεσματική συμπίεση, τη μειωμένη είσοδο/έξοδο και την ταχύτερη απόδοση ερωτημάτων, ειδικά κατά την υποβολή ερωτημάτων σε ένα υποσύνολο στηλών.

Η OPENROWSET λειτουργία επιτρέπει την εύκολη και διαισθητική πρόσβαση σε αρχεία Parquet απευθείας από τον κώδικα T-SQL.

Για να υποβάλετε ερώτημα σε ένα αρχείο Parquet, δώστε τη διεύθυνση URL στο αρχείο Parquet χρησιμοποιώντας τη OPENROWSET συνάρτηση:

SELECT * FROM
OPENROWSET( BULK 'https://myaccount.dfs.core.windows.net/mycontainer/mysubfolder/data.parquet');

Η OPENROWSET συνάρτηση επιστρέφει κάθε γραμμή από το αρχείο Parquet ως γραμμή στο σύνολο αποτελεσμάτων. Οι στήλες στο σύνολο αποτελεσμάτων ταιριάζουν με το σχήμα του αρχείου Parquet.

Για παραδείγματα χρήσης, ανατρέξτε στο θέμα Υποβολή ερωτήματος σε αρχεία Parquet.

Αναζήτηση οριοθετημένων αρχείων με το OPENROWSET

Η οριοθετημένη μορφή κειμένου είναι μια μορφή αρχείου που βασίζεται σε κείμενο, προσανατολισμένη στη σειρά που χρησιμοποιείται συνήθως για ανταλλαγή δεδομένων και ελαφριά αποθήκευση δεδομένων.

  • Τα δεδομένα οργανώνονται σε σειρές που χωρίζονται από έναν τερματιστή γραμμών.
  • Πολλά κελιά σε κάθε σειρά διαχωρίζονται από ένα διαχωριστικό πεδίου.
  • Οι τιμές στα κελιά διαχωρίζονται με οριοθέτες όπως κόμματα ή στηλοθέτες.

Τα οριοθετημένα αρχεία υποστηρίζονται ευρέως και είναι απλά στην παραγωγή σε πολλά συστήματα και εργαλεία.

Η πιο συχνά χρησιμοποιούμενη οριοθετημένη μορφή είναι η μορφή τιμών διαχωρισμένων με κόμματα (CSV). Σε ένα CSV, οι γραμμές διαχωρίζονται με μια νέα γραμμή και οι τιμές με κόμμα περικλείονται προαιρετικά με διπλά εισαγωγικά. Ωστόσο, υπάρχουν πολλές παραλλαγές, όπως τιμές διαχωρισμένες με στηλοθέτες (TSV) και άλλες προσαρμοσμένες οριοθετημένες μορφές.

Χρησιμοποιώντας OPENROWSETτο , μπορείτε να αποκτήσετε πρόσβαση σε οριοθετημένα αρχεία απευθείας από την T-SQL με απλό και ευέλικτο τρόπο. Αυτή η προσέγγιση επιτρέπει την επιτόπια υποβολή ερωτημάτων χωρίς να απαιτείται πρώτα η φόρτωση δεδομένων σε πίνακες βάσης δεδομένων.

Για να υποβάλετε ερώτημα σε ένα οριοθετημένο αρχείο, δώστε τη διεύθυνση URL του αρχείου και ορίστε τις κατάλληλες επιλογές ανάλυσης κατά τη χρήση της OPENROWSET συνάρτησης:

SELECT * FROM
OPENROWSET( BULK '/Files/mysubfolder/data.csv');

Η OPENROWSET συνάρτηση επιστρέφει κάθε γραμμή από το οριοθετημένο αρχείο ως γραμμή στο σύνολο αποτελεσμάτων. Οι στήλες στο σύνολο αποτελεσμάτων ακολουθούν τη δομή του οριοθετημένου αρχείου.

Μπορείτε να προσαρμόσετε τον τρόπο ανάλυσης των οριοθετημένων αρχείων κειμένου (όπως CSV, TSV ή άλλες παραλλαγές) καθορίζοντας επιλογές όπως τερματιστές πεδίων, τερματιστές σειρών, χαρακτήρες διαφυγής και άλλες ρυθμίσεις που σχετίζονται με τη μορφή ώστε να ταιριάζουν με τη δομή του αρχείου σας.

Για παραδείγματα χρήσης, ανατρέξτε στο θέμα Υποβολή ερωτήματος σε οριοθετημένα αρχεία κειμένου.

Υποβολή ερωτημάτων σε αρχεία JSONL με το OPENROWSET

Το JSON Lines (JSONL) είναι μια ημιδομημένη μορφή αρχείου οριοθετημένη με γραμμές, όπου κάθε γραμμή περιέχει ένα έγκυρο αντικείμενο JSON. Αυτή η δομή καθιστά το JSONL ιδιαίτερα κατάλληλο για ροή, δεδομένα συμβάντων και φόρτους εργασίας μόνο για προσάρτηση, καθώς οι νέες εγγραφές μπορούν να γραφτούν αποτελεσματικά χωρίς να ξαναγραφτεί ολόκληρο το αρχείο.

Χρησιμοποιώντας τη συνάρτηση, μπορείτε να υποβάλετε ερωτήματα σε αρχεία JSONL απευθείας από την OPENROWSET T-SQL. Μπορείτε να αναλύσετε τη ροή και τα δεδομένα που δημιουργούνται συνεχώς, χωρίς να απαιτείται προηγούμενη πρόσληψη σε πίνακες βάσης δεδομένων.

Για να υποβάλετε ερώτημα σε ένα αρχείο JSONL, δώστε τη διεύθυνση URL του αρχείου όταν χρησιμοποιείτε τη OPENROWSET συνάρτηση:

SELECT * FROM
OPENROWSET( BULK '/mysubfolder/data.jsonl', DATA_SOURCE='MyStorage');

Κατά την υποβολή ερωτημάτων σε αρχεία JSON Lines (JSONL), κάθε αντικείμενο JSON στο αρχείο αντιμετωπίζεται ως ξεχωριστή γραμμή στο σύνολο αποτελεσμάτων.

Κάθε ιδιότητα εντός του αντικειμένου JSON επιστρέφεται ως μεμονωμένη στήλη, επιτρέποντας μια φυσική σχεσιακή προβολή δεδομένων JSON οριοθετημένων γραμμών.

Για παραδείγματα χρήσης, ανατρέξτε στο θέμα Υποβολή ερωτήματος σε αρχεία JSONL.

Σχήμα σε ανάγνωση

Το Fabric Data Warehouse επιτρέπει στους προγραμματιστές SQL να εφαρμόζουν ένα σχήμα κατά τη στιγμή του ερωτήματος κατά την ανάγνωση δεδομένων απευθείας από αρχεία που είναι αποθηκευμένα σε μια λίμνη δεδομένων.

Αυτή η προσέγγιση σχήματος κατά την ανάγνωση επιτρέπει στα δεδομένα να παραμένουν στην αρχική τους μορφή, ενώ η δομή τους ορίζεται δυναμικά κατά την υποβολή ερωτημάτων. Μπορείτε να επιλέξετε ανάμεσα σε δύο μοντέλα σχήματος σε ανάγνωση:

  • Αυτόματη εξαγωγή συμπερασμάτων σχήματος, όπου το Fabric αναλύει τα περιεχόμενα του αρχείου και καθορίζει αυτόματα τα ονόματα στηλών και τους τύπους δεδομένων.
  • Ρητός ορισμός σχήματος, όπου το σχήμα ορίζεται πλήρως στο ερώτημα για τον έλεγχο των ονομάτων στηλών και των τύπων δεδομένων.

Αυτόματη εξαγωγή συμπερασμάτων σχήματος

Η αυτόματη εξαγωγή συμπερασμάτων σχήματος σάς επιτρέπει να υποβάλετε ερωτήματα σε αρχεία χωρίς να παρέχετε ρητό ορισμό σχήματος.

Το Fabric Data Warehouse και το τελικό σημείο ανάλυσης SQL εξετάζουν αυτόματα τα αρχεία προέλευσης για να προσδιορίσουν τα ονόματα στηλών και τους τύπους δεδομένων. Χρησιμοποιούν μεταδεδομένα σε επίπεδο αρχείου, όπως κεφαλίδες αρχείων Parquet, ή αναλύουν αντιπροσωπευτικά δείγματα δεδομένων για μορφές όπως CSV και JSONL.

Όταν παραλείπετε τον WITH όρο από την πρόταση, το OPENROWSET Fabric Data Warehouse αναλύει αυτόματα τα υποκείμενα αρχεία και αντλεί τα ονόματα στηλών και τους τύπους δεδομένων κατά τον χρόνο του ερωτήματος.

SELECT * FROM
OPENROWSET( BULK 'https://myaccount.dfs.core.windows.net/mycontainer/mysubfolder/data.parquet');

Αυτή η προσέγγιση είναι ιδιαίτερα χρήσιμη για γρήγορη εξερεύνηση, εξελισσόμενα σχήματα ή σενάρια όπου η διαχείριση της δομής του αρχείου γίνεται εκτός της αποθήκης δεδομένων. Συμπεραίνοντας το σχήμα δυναμικά, μπορείτε να εστιάσετε στην υποβολή ερωτημάτων στα δεδομένα χωρίς πρώτα να ορίσετε ή να διατηρήσετε ένα σταθερό σχήμα.

Ρητός ορισμός σχήματος

Με έναν ρητό ορισμό σχήματος, οι προγραμματιστές SQL ελέγχουν τον τρόπο αντιστοίχισης των δεδομένων αρχείων σε σχεσιακές στήλες, καθορίζοντας ονόματα στηλών, τύπους δεδομένων και, κατά περίπτωση, θέσεις στηλών στα αρχεία προέλευσης.

Αυτή η προσέγγιση παρέχει ακριβή και προβλέψιμη αντιστοίχιση κατά την υποβολή ερωτημάτων σε αρχεία χρησιμοποιώντας OPENROWSETτο .

Για να ορίσετε το σχήμα, προσθέστε έναν προαιρετικό WITH όρο στη δήλωσή σας OPENROWSET .

SELECT * FROM
OPENROWSET( BULK '/Files/mysubfolder/data.parquet') 
WITH (
      Column1 int, 
      Column2 varchar(20),
      Column3 varchar(max)
);

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

Υποβολή ερωτημάτων σε πολλά αρχεία ή φακέλους με το OPENROWSET

Για να υποβάλετε ερωτήματα για δεδομένα σε πολλά αρχεία ή φακέλους, καθορίστε μια διαδρομή αρχείου που περιλαμβάνει έναν ή περισσότερους χαρακτήρες μπαλαντέρ (*).

Χρησιμοποιώντας χαρακτήρες μπαλαντέρ, ένα μεμονωμένο ερώτημα T-SQL μπορεί να λειτουργήσει σε ένα δυναμικό σύνολο αρχείων που ταιριάζουν με ένα μοτίβο ονομασίας ή καταλόγου.

Οι ακόλουθοι κανόνες ισχύουν κατά τη χρήση χαρακτήρων μπαλαντέρ σε διαδρομές αρχείων:

  • Ο * χαρακτήρας μπαλαντέρ αντιπροσωπεύει έναν ή πολλούς χαρακτήρες και μπορείτε να τον χρησιμοποιήσετε σε διαδρομές καταλόγου καθώς και σε ονόματα αρχείων.
  • Μπορείτε να καθορίσετε πολλούς * χαρακτήρες μπαλαντέρ στην ίδια διαδρομή ή όνομα αρχείου για να ταιριάζουν με πολύπλοκα μοτίβα.
  • Όταν η διαδρομή τελειώνει με αναδρομικούς χαρακτήρες μπαλαντέρ (για παράδειγμα, /**), το σύνολο αποτελεσμάτων ερωτήματος περιλαμβάνει όλα τα αρχεία που βρίσκονται κάτω από τον καθορισμένο ριζικό φάκελο και τους υποφακέλους του.

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να χρησιμοποιήσετε μοτίβα χαρακτήρων μπαλαντέρ στη διαδρομή αρχείου για να υποβάλετε ερωτήματα σε πολλά αρχεία Parquet σε φακέλους σε ένα μόνο ερώτημα:

SELECT * FROM
OPENROWSET( BULK '/myroot/*/mysubfolder/*.parquet', DATA_SOURCE='MyStorage');

Συναρτήσεις μεταδεδομένων αρχείου

OPENROWSET Περιλαμβάνει συναρτήσεις μετα-δεδομένων που μπορείτε να χρησιμοποιήσετε για να αποκτήσετε πρόσβαση σε πληροφορίες σχετικά με τα αρχεία στα οποία υποβάλλετε ερώτημα:

  • Η filename() συνάρτηση επιστρέφει το όνομα του αρχείου από το οποίο προέρχεται κάθε γραμμή. Χρησιμοποιήστε αυτήν τη συνάρτηση για να φιλτράρετε ή να υποβάλετε ερωτήματα σε συγκεκριμένα αρχεία. Για καλύτερη απόδοση, μεταδώστε το αποτέλεσμα σε κατάλληλο τύπο δεδομένων και μήκος.
  • Η filepath() συνάρτηση επιστρέφει τη διαδρομή αρχείου από την οποία προέρχεται κάθε γραμμή.
    • Χωρίς παραμέτρους, επιστρέφει την πλήρη διαδρομή/URI αρχείου.
    • Με μια παράμετρο, επιστρέφει το τμήμα διαδρομής που ταιριάζει με την καθορισμένη θέση μπαλαντέρ.

Το παρακάτω παράδειγμα δείχνει ένα ερώτημα που ανακτά το περιεχόμενο του αρχείου μαζί με το πλήρες URI και το όνομα αρχείου για κάθε αρχείο, επιστρέφοντας μόνο αρχεία από το /year=2025/month=10 φάκελο.

SELECT 
 rows.filepath(),
 rows.filename(),
 rows.filepath(2) AS [month],
 rows.*
FROM 
OPENROWSET(
  BULK 'https://myaccount.dfs.core.windows.net/myroot/year=2025/month=*/*.parquet'
  ) AS rows
WHERE rows.filepath(1) = '2025'

Για περισσότερες πληροφορίες σχετικά με και filename(), ανατρέξτε στην filepath() ενότητα Συναρτήσεις μεταδεδομένων αρχείου.