Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Ισχύει για:✅ Τελικό σημείο ανάλυσης SQL και Αποθήκη στο Microsoft Fabric
Σε αυτό το άρθρο, θα μάθετε πώς μπορείτε να υποβάλετε ερωτήματα σε αρχεία JSON χρησιμοποιώντας το Fabric SQL, συμπεριλαμβανομένου του Fabric Data Warehouse και του τελικού σημείου ανάλυσης SQL.
Το JSON (JavaScript Object Notation) είναι μια ελαφριά μορφή για ημιδομημένα δεδομένα, που χρησιμοποιείται ευρέως σε μεγάλα δεδομένα για ροές αισθητήρων, διαμορφώσεις IoT, αρχεία καταγραφής και γεωχωρικά δεδομένα (για παράδειγμα, GeoJSON).
Χρησιμοποιήστε το OPENROWSET για να υποβάλετε ερωτήματα σε αρχεία JSON απευθείας
Στο Fabric Data Warehouse και στο τελικό σημείο ανάλυσης SQL για ένα Lakehouse, μπορείτε να υποβάλετε ερωτήματα σε αρχεία JSON απευθείας στη λίμνη χρησιμοποιώντας τη OPENROWSET συνάρτηση.
OPENROWSET( BULK '{{filepath}}', [ , <options> ... ])
[ WITH ( <column schema and mappings> ) ];
Όταν υποβάλλετε ερωτήματα σε αρχεία JSON με το OPENROWSET, ξεκινάτε καθορίζοντας τη διαδρομή αρχείου, η οποία μπορεί να είναι μια άμεση διεύθυνση URL ή ένα μοτίβο χαρακτήρων μπαλαντέρ που στοχεύει ένα ή περισσότερα αρχεία. Από προεπιλογή, το Fabric προβάλλει κάθε ιδιότητα ανώτατου επιπέδου στο έγγραφο JSON ως ξεχωριστή στήλη στο σύνολο αποτελεσμάτων. Για αρχεία JSON Lines, κάθε γραμμή αντιμετωπίζεται ως μεμονωμένη σειρά, καθιστώντας την ιδανική για σενάρια ροής.
Εάν χρειάζεστε περισσότερο έλεγχο:
- Χρησιμοποιήστε τον προαιρετικό
WITHόρο για να ορίσετε ρητά το σχήμα και να αντιστοιχίσετε στήλες σε συγκεκριμένες ιδιότητες JSON, συμπεριλαμβανομένων των ένθετων διαδρομών. - Χρησιμοποιείται
DATA_SOURCEγια αναφορά σε μια θέση ρίζας για σχετικές διαδρομές. - Διαμορφώστε παραμέτρους χειρισμού σφαλμάτων, όπως
MAXERRORSγια να διαχειριστείτε τα προβλήματα ανάλυσης με χάρη.
Συνήθεις περιπτώσεις χρήσης αρχείων JSON
Συνήθεις τύποι αρχείων JSON και περιπτώσεις χρήσης που μπορείτε να χειριστείτε στο Microsoft Fabric:
- Αρχεία JSON οριοθετημένα με γραμμές ("Γραμμές JSON") όπου κάθε γραμμή είναι ένα αυτόνομο, έγκυρο έγγραφο JSON (για παράδειγμα, ένα συμβάν, μια ανάγνωση ή μια καταχώρηση αρχείου καταγραφής).
- Ολόκληρο το αρχείο δεν είναι απαραίτητα ένα έγκυρο έγγραφο JSON - μάλλον, είναι μια ακολουθία αντικειμένων JSON που χωρίζονται με χαρακτήρες νέας γραμμής.
- Τα αρχεία με αυτήν τη μορφή έχουν συνήθως επεκτάσεις
.jsonl,.ldjsonή.ndjson. Ιδανικό για ροή και σενάρια μόνο για προσάρτηση-οι συγγραφείς μπορούν να προσαρτήσουν ένα νέο συμβάν ως νέα γραμμή χωρίς να ξαναγράψουν το αρχείο ή να σπάσουν τη δομή.
- Αρχεία JSON ενός εγγράφου ("κλασικό JSON") με την
.jsonεπέκταση όπου ολόκληρο το αρχείο είναι ένα έγκυρο έγγραφο JSON - είτε ένα μεμονωμένο αντικείμενο είτε ένας πίνακας αντικειμένων (δυνητικά ένθετα).- Χρησιμοποιείται συνήθως για ρύθμιση παραμέτρων, στιγμιότυπα και σύνολα δεδομένων που εξάγονται σε ένα κομμάτι.
- Για παράδειγμα, τα αρχεία GeoJSON συνήθως αποθηκεύουν ένα μεμονωμένο αντικείμενο JSON που περιγράφει χαρακτηριστικά και τις γεωμετρίες τους.
Υποβολή ερωτημάτων σε αρχεία JSONL με το OPENROWSET
Το Fabric Data Warehouse και το τελικό σημείο ανάλυσης SQL για το Lakehouse επιτρέπουν στους προγραμματιστές SQL να υποβάλλουν ερωτήματα σε αρχεία JSON Lines (.jsonl, .ldjson, .ndjson) απευθείας από τη λίμνη δεδομένων χρησιμοποιώντας τη OPENROWSET συνάρτηση.
Αυτά τα αρχεία περιέχουν ένα έγκυρο αντικείμενο JSON ανά γραμμή, καθιστώντας τα ιδανικά για σενάρια ροής και μόνο για προσάρτηση.
Για να διαβάσετε ένα αρχείο JSON Lines, δώστε τη BULK διεύθυνση URL του στο όρισμα:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.jsonl'
);
Από προεπιλογή, OPENROWSET το χρησιμοποιεί συμπεράσματα σχήματος, ανακαλύπτοντας αυτόματα όλες τις ιδιότητες ανώτατου επιπέδου σε κάθε αντικείμενο JSON και επιστρέφοντάς τις ως στήλες.
Ωστόσο, μπορείτε να ορίσετε ρητά το σχήμα για να ελέγξετε ποιες ιδιότητες επιστρέφονται και να παρακάμψετε τους συναγόμενους τύπους δεδομένων:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.jsonl'
) WITH (
country_region VARCHAR(100),
confirmed INT,
date_reported DATE '$.updated'
);
Ο ρητός ορισμός σχήματος είναι χρήσιμος όταν:
- Θέλετε να παρακάμψετε τους προεπιλεγμένους συναγόμενους τύπους (για παράδειγμα, για να επιβάλετε τον τύπο δεδομένων ημερομηνίας αντί για varchar).
- Χρειάζεστε σταθερά ονόματα στηλών και επιλεκτική προβολή.
- Θέλετε να αντιστοιχίσετε στήλες σε συγκεκριμένες ιδιότητες JSON, συμπεριλαμβανομένων των ένθετων διαδρομών.
Ανάγνωση σύνθετων (ένθετων) δομών JSON με το OPENROWSET
Το Fabric Data Warehouse και το τελικό σημείο ανάλυσης SQL για το Lakehouse επιτρέπουν στους προγραμματιστές SQL να διαβάζουν JSON με ένθετα αντικείμενα ή υποπίνακες απευθείας από τη λίμνη χρησιμοποιώντας OPENROWSETτο .
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
}
}
Στο παρακάτω παράδειγμα, υποβάλετε ερώτημα σε ένα αρχείο που περιέχει δείγμα δεδομένων και χρησιμοποιήστε τον WITH όρο για να προβάλετε ρητά τις ιδιότητές του σε επίπεδο φύλλου:
SELECT
*
FROM
OPENROWSET(
BULK '/Files/parquet/nested/geojson.jsonl'
)
WITH (
-- Top-level field
[type] VARCHAR(50),
-- Leaf properties from the nested "properties" object
shapeName VARCHAR(200) '$.properties.shapeName',
shapeISO VARCHAR(50) '$.properties.shapeISO',
shapeID VARCHAR(200) '$.properties.shapeID',
shapeGroup VARCHAR(50) '$.properties.shapeGroup',
shapeType VARCHAR(50) '$.properties.shapeType'
);
Σημείωμα
Αυτό το παράδειγμα χρησιμοποιεί μια σχετική διαδρομή χωρίς προέλευση δεδομένων, η οποία λειτουργεί κατά την υποβολή ερωτημάτων σε αρχεία στο Lakehouse σας μέσω του τελικού σημείου ανάλυσης SQL. Στο Fabric Data Warehouse, πρέπει είτε:
- Χρησιμοποιήστε μια απόλυτη διαδρομή προς το αρχείο ή
- Καθορίστε μια διεύθυνση URL ρίζας σε ένα εξωτερικό αρχείο προέλευσης δεδομένων και αναφέρετε την
OPENROWSETστην πρόταση χρησιμοποιώντας τηνDATA_SOURCEεπιλογή.
Ανάπτυξη ένθετων πινάκων (JSON σε γραμμές) με το OPENROWSET
Το Fabric Data Warehouse και το τελικό σημείο ανάλυσης SQL για το Lakehouse σάς επιτρέπουν να διαβάζετε αρχεία JSON με ένθετους πίνακες χρησιμοποιώντας OPENROWSETτο . Στη συνέχεια, μπορείτε να επεκτείνετε (αποφωλιάσετε) αυτούς τους πίνακες χρησιμοποιώντας CROSS APPLY OPENJSONτο . Αυτή η μέθοδος είναι χρήσιμη όταν ένα έγγραφο ανώτατου επιπέδου περιέχει έναν υποπίνακα που θέλετε ως μία γραμμή ανά στοιχείο.
Στο ακόλουθο, απλοποιημένο παράδειγμα εισόδου, ένα έγγραφο παρόμοιο με το GeoJSON έχει έναν πίνακα δυνατοτήτων:
{
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
},
"geometry": {
"type": "Line",
"coordinates": [[[19.6679328, 46.1848744], [19.6649294, 46.1870428], [19.6638492, 46.1890231]]]
}
}
]
}
Το παρακάτω ερώτημα:
- Διαβάζει το έγγραφο JSON από τη λίμνη χρησιμοποιώντας
OPENROWSETτο , προβάλλοντας την ιδιότητα τύπου ανώτατου επιπέδου μαζί με τον πίνακα ακατέργαστων δυνατοτήτων. - Ισχύει
CROSS APPLY OPENJSONγια την ανάπτυξη του πίνακα χαρακτηριστικών, έτσι ώστε κάθε στοιχείο να γίνει η δική του γραμμή στο σύνολο αποτελεσμάτων. Μέσα σε αυτήν την επέκταση, το ερώτημα εξάγει ένθετες τιμές χρησιμοποιώντας παραστάσεις διαδρομής JSON. Τιμές όπωςshapeName,shapeISO, καιgeometryλεπτομέρειες όπωςgeometry.typeκαιcoordinates, είναι πλέον επίπεδες στήλες για ευκολότερη ανάλυση.
SELECT
r.crs_name,
f.[type] AS feature_type,
f.shapeName,
f.shapeISO,
f.shapeID,
f.shapeGroup,
f.shapeType,
f.geometry_type,
f.coordinates
FROM
OPENROWSET(
BULK '/Files/parquet/nested/geojson.jsonl'
)
WITH (
crs_name VARCHAR(100) '$.crs.properties.name', -- top-level nested property
features VARCHAR(MAX) '$.features' -- raw JSON array
) AS r
CROSS APPLY OPENJSON(r.features)
WITH (
[type] VARCHAR(50),
shapeName VARCHAR(200) '$.properties.shapeName',
shapeISO VARCHAR(50) '$.properties.shapeISO',
shapeID VARCHAR(200) '$.properties.shapeID',
shapeGroup VARCHAR(50) '$.properties.shapeGroup',
shapeType VARCHAR(50) '$.properties.shapeType',
geometry_type VARCHAR(50) '$.geometry.type',
coordinates VARCHAR(MAX) '$.geometry.coordinates'
) AS f;