Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅ SQL Analytics-slutpunkt og warehouse i Microsoft Fabric
I denne artikel lærer du, hvordan du forespørger JSON-filer ved hjælp af Fabric SQL, herunder Fabric Data Warehouse og SQL-analyse-endpointet.
JSON (JavaScript Object Notation) er et letvægtsformat for semistrukturerede data, som er udbredt anvendt i big data til sensorstrømme, IoT-konfigurationer, logfiler og geospatiale data (for eksempel GeoJSON).
Brug OPENROWSET til at forespørge JSON-filer direkte
I Fabric Data Warehouse og SQL-analyse-endpointet for et Lakehouse kan du forespørge JSON-filer direkte i lake'en ved hjælp af funktionen OPENROWSET .
OPENROWSET( BULK '{{filepath}}', [ , <options> ... ])
[ WITH ( <column schema and mappings> ) ];
Når du forespørger JSON-filer med OPENROWSET, starter du med at angive filstien, som kan være en direkte URL eller et wildcard-mønster, der målretter en eller flere filer. Som standard projicerer Fabric hver top-level egenskab i JSON-dokumentet som en separat kolonne i resultatsættet. For JSON Lines-filer behandles hver linje som en individuel række, hvilket gør den ideel til streamingscenarier.
Hvis du har brug for mere kontrol:
- Brug den valgfrie
WITHklausul til eksplicit at definere skemaet og kortlægge kolonner til specifikke JSON-egenskaber, inklusive indlejrede stier. - Brug
DATA_SOURCEden til at referere til en rodplacering for relative stier. - Konfigurer fejlhåndteringsparametre for
MAXERRORSat håndtere parsing-problemer elegant.
Almindelige JSON-filanvendelser
Almindelige JSON-filtyper og brugsscenarier, du kan håndtere i Microsoft Fabric:
- Linjeafgrænsede JSON ("JSON Lines") filer, hvor hver linje er et selvstændigt, gyldigt JSON-dokument (for eksempel en begivenhed, en læsning eller en logbog).
- Hele filen er ikke nødvendigvis et enkelt gyldigt JSON-dokument – snarere er det en sekvens af JSON-objekter adskilt af linjeskiftetegn.
- Filerne med dette format har typisk endelser
.jsonl,.ldjson, eller.ndjson. Ideelt til streaming og kun tilføjelser af scenarier – forfattere kan tilføje en ny begivenhed som en ny linje uden at omskrive filen eller bryde strukturen.
- Enkelt-dokument JSON ("klassisk JSON") filer med endelsen,
.jsonhvor hele filen er ét gyldigt JSON-dokument – enten et enkelt objekt eller et array af objekter (potentielt indlejret).- Det bruges ofte til konfiguration, snapshots og datasæt, der eksporteres i ét stykke.
- For eksempel gemmer GeoJSON-filer ofte et enkelt JSON-objekt, der beskriver funktioner og deres geometrier.
Foresøg JSONL-filer med OPENROWSET
Fabric Data Warehouse og SQL-analyse-endpointet for Lakehouse gør det muligt for SQL-udviklere at forespørge JSON Lines (.jsonl, .ldjson, .ndjson) filer direkte fra data lake ved at bruge funktionen OPENROWSET .
Disse filer indeholder ét gyldigt JSON-objekt pr. linje, hvilket gør dem ideelle til streaming- og append-scenarier.
For at læse en JSON Lines-fil, angiv dens URL 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 bruger den OPENROWSET skema-inferens, hvor alle topniveau-egenskaber i hvert JSON-objekt automatisk opdages og returneres som kolonner.
Du kan dog eksplicit definere skemaet til at styre, hvilke egenskaber der returneres, og tilsidesætte udledte 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'
);
Eksplicit skemadefinition er nyttig, når:
- Du vil tilsidesætte standard udledte typer (for eksempel for at tvinge datodatatypen i stedet for varchar).
- Du har brug for stabile kolonnenavne og selektiv projektion.
- Du vil mappe kolonner til specifikke JSON-egenskaber, inklusive indlejrede stier.
Læs komplekse (indlejrede) JSON-strukturer med OPENROWSET
Fabric Data Warehouse og SQL-analyse-endpointet for Lakehouse lader SQL-udviklere læse JSON med indlejrede objekter eller subarrays direkte fra lake ved at bruge OPENROWSET.
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
}
}
I det følgende eksempel forespørger du en fil, der indeholder eksempeldata, og bruger klausulen WITH til eksplicit at projicere dens egenskaber på bladniveau:
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'
);
Bemærkning
Dette eksempel bruger en relativ sti uden en datakilde, som virker, når du forespørger filer i din Lakehouse via dens SQL-analyseendepunkt. I Fabric Data Warehouse skal du enten:
- Brug en absolut sti til filen, eller
- Angiv en rod-URL i en ekstern datakilde og referer til den i sætningen
OPENROWSETved at bruge mulighedenDATA_SOURCE.
Udvid indlejrede arrays (JSON til rækker) med OPENROWSET
Fabric Data Warehouse og SQL-analyse-endpointet for Lakehouse lader dig læse JSON-filer med indlejrede arrays ved at bruge OPENROWSET. Derefter kan du udvide (af-neste) disse arrays ved at bruge CROSS APPLY OPENJSON. Denne metode er nyttig, når et topniveau-dokument indeholder et underarray, du ønsker som én række pr. element.
I det følgende, forenklede eksempelinput har et GeoJSON-lignende dokument et features-array:
{
"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 forespørgsel:
- Læser JSON-dokumentet fra søen ved at bruge
OPENROWSET, og projicerer topniveau-typeegenskaben sammen med det rå features-array. - Gælder
CROSS APPLY OPENJSONfor at udvide features-arrayet, så hvert element bliver sin egen række i resultatsættet. Inden for denne udvidelse udtrækker forespørgslen indlejrede værdier ved at bruge JSON-stiudtryk. Værdier somshapeName,shapeISO, oggeometrydetaljer somgeometry.typeogcoordinates, er nu flade kolonner for lettere 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;