Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ SQL Analytics-endepunkt og Warehouse i Microsoft Fabric
I denne artikkelen vil du lære hvordan du kan spørre JSON-filer ved hjelp av Fabric SQL, inkludert Fabric Data Warehouse og SQL-analyse-endepunktet.
JSON (JavaScript Object Notation) er et lettvektsformat for semistrukturerte data, mye brukt i big data for sensorstrømmer, IoT-konfigurasjoner, logger og geospatiale data (for eksempel GeoJSON).
Bruk OPENROWSET for å spørre JSON-filer direkte
I Fabric Data Warehouse og SQL-analyse-endepunktet for en Lakehouse, kan du spørre JSON-filer direkte i lake ved å bruke funksjonen OPENROWSET .
OPENROWSET( BULK '{{filepath}}', [ , <options> ... ])
[ WITH ( <column schema and mappings> ) ];
Når du spør JSON-filer med OPENROWSET, starter du med å spesifisere filbanen, som kan være en direkte URL eller et wildcard-mønster som retter seg mot én eller flere filer. Som standard projiserer Fabric hver toppnivåegenskap i JSON-dokumentet som en egen kolonne i resultatsettet. For JSON Lines-filer behandles hver linje som en egen rad, noe som gjør den ideell for strømmingsscenarier.
Hvis du trenger mer kontroll:
- Bruk den valgfrie
WITHklausulen for å definere skjemaet eksplisitt og kartlegge kolonner til spesifikke JSON-egenskaper, inkludert nestede stier. - Bruk
DATA_SOURCEfor å referere til en rotplassering for relative stier. - Konfigurer feilhåndteringsparametere for
MAXERRORSå håndtere parsingproblemer på en smidig måte.
Brukstilfeller for vanlige JSON-filer
Vanlige JSON-filtyper og bruksområder du kan håndtere i Microsoft Fabric:
- Linjeavgrensede JSON-filer ("JSON-linjer") der hver linje er et frittstående, gyldig JSON-dokument (for eksempel en hendelse, en lesning eller en loggoppføring).
- Hele filen er ikke nødvendigvis et enkelt gyldig JSON-dokument – det er snarere en sekvens av JSON-objekter adskilt med linjeskift.
- Filene med dette formatet har vanligvis filendelser
.jsonl,.ldjson, eller.ndjson. Ideelt for strømming og kun append-scenarier – forfattere kan legge til en ny hendelse som en ny linje uten å omskrive filen eller bryte strukturen.
- Enkeltdokument-JSON ("klassisk JSON")-filer med
.jsonendelsen der hele filen er ett gyldig JSON-dokument – enten et enkelt objekt eller et array av objekter (potensielt nestet).- Det brukes ofte til konfigurasjon, snapshots og datasett som eksporteres i ett stykke.
- For eksempel lagrer GeoJSON-filer ofte et enkelt JSON-objekt som beskriver egenskaper og deres geometrier.
Søk i JSONL-filer med OPENROWSET
Fabric Data Warehouse og SQL-analyse-endepunktet for Lakehouse gjør det mulig for SQL-utviklere å spørre JSON Lines (.jsonl, .ldjson, .ndjson) filer direkte fra data lake ved å bruke funksjonen OPENROWSET .
Disse filene inneholder ett gyldig JSON-objekt per linje, noe som gjør dem ideelle for strømming og kun append-scenarier.
For å lese en JSON Lines-fil, oppgi URL-en i argumentet BULK :
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'
);
Som standard OPENROWSET bruker skjema-inferens, som automatisk oppdager alle toppnivå-egenskaper i hvert JSON-objekt og returnerer dem som kolonner.
Du kan imidlertid eksplisitt definere skjemaet for å kontrollere hvilke egenskaper som returneres og overstyre utledede datatyper:
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'
);
Eksplisitt skjemadefinisjon er nyttig når:
- Du vil overstyre standard utledede typer (for eksempel for å tvinge datodatatypen i stedet for varchar).
- Du trenger stabile kolonnenavn og selektiv projeksjon.
- Du vil mappe kolonner til spesifikke JSON-egenskaper, inkludert nestede stier.
Les komplekse (nestede) JSON-strukturer med OPENROWSET
Fabric Data Warehouse og SQL-analyseendepunktet for Lakehouse lar SQL-utviklere lese JSON med nestede objekter eller underarrayer direkte fra lake ved å bruke OPENROWSET.
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
}
}
I følgende eksempel, spør i en fil som inneholder eksempeldata og bruk klausulen WITH til eksplisitt å projisere dens egenskaper på bladnivå:
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'
);
Notat
Dette eksempelet bruker en relativ sti uten datakilde, som fungerer når du spør filer i Lakehouse via SQL-analyse-endepunktet. I Fabric Data Warehouse må du enten:
- Bruk en absolutt sti til filen, eller
- Spesifiser en rot-URL i en ekstern datakilde og referer til den i setningen
OPENROWSETved å bruke alternativetDATA_SOURCE.
Utvid nestede matriser (JSON til rader) med OPENROWSET
Fabric Data Warehouse og SQL-analyse-endepunktet for Lakehouse lar deg lese JSON-filer med nestede matriser ved å bruke OPENROWSET. Deretter kan du utvide (unneste) disse arrayene ved å bruke CROSS APPLY OPENJSON. Denne metoden er nyttig når et toppnivådokument inneholder et underarray du ønsker som én rad per element.
I det følgende, forenklede eksempelinndataet har et GeoJSON-lignende dokument et funksjonsarray:
{
"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]]]
}
}
]
}
Følgende spørring:
- Leser JSON-dokumentet fra innsjøen ved å bruke
OPENROWSET, og projisere toppnivå-typeegenskapen sammen med råfeature-arrayet. - Gjelder
CROSS APPLY OPENJSONfor å utvide features-arrayet slik at hvert element blir sin egen rad i resultatsettet. Innenfor denne utvidelsen trekker spørringen ut nestede verdier ved å bruke JSON-stiuttrykk. Verdier somshapeName,shapeISO, oggeometrydetaljer somgeometry.typeogcoordinates, er nå flate kolonner for enklere analyse.
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;