Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Vzťahuje sa na:✅ koncový bod analýzy SQL a sklad v službe Microsoft Fabric
V tomto článku sa naučíte, ako dotazovať JSON súbory pomocou Fabric SQL, vrátane Fabric Data Warehouse a SQL analytics endpointu.
JSON (JavaScript Object Notation) je ľahký formát pre polostruktúrované dáta, široko používaný vo veľkých dátach pre senzorové toky, IoT konfigurácie, logy a geopriestorové dáta (napríklad GeoJSON).
Použite OPENROWSET na priamy dotaz na JSON súbory
V Fabric Data Warehouse a SQL analytics endpointe pre Lakehouse môžete dotazovať JSON súbory priamo v jazere pomocou tejto funkcie OPENROWSET .
OPENROWSET( BULK '{{filepath}}', [ , <options> ... ])
[ WITH ( <column schema and mappings> ) ];
Keď dotazujete JSON súbory pomocou OPENROWSET, začnete špecifikovaním cesty k súboru, ktorá môže byť priamou URL alebo vzorom divokej karty, ktorý cieli na jeden alebo viac súborov. Štandardne Fabric projektuje každú najvyššiu vlastnosť v JSON dokumente ako samostatný stĺpec vo výsledkovej množine. Pre súbory JSON Lines sa každý riadok považuje za samostatný riadok, čo ho robí ideálnym pre streamovacie scenáre.
Ak potrebujete väčšiu kontrolu:
- Použite voliteľnú klauzulu
WITHna explicitnú definíciu schémy a mapovanie stĺpcov na konkrétne vlastnosti JSON, vrátane vnorených ciest. - Použite
DATA_SOURCEna referenciu koreňovej polohy pre relatívne cesty. - Nakonfigurujte parametre spracovania chýb, aby
MAXERRORSste mohli efektívne riešiť problémy s parsovaním.
Bežné prípady použitia súborov JSON
Bežné typy JSON súborov a prípady použitia, ktoré zvládnete v Microsoft Fabric:
- Súbory JSON ("JSON Lines") oddelené riadkom, kde každý riadok je samostatný, platný JSON dokument (napríklad udalosť, čítanie alebo záznam v logu).
- Celý súbor nemusí byť nevyhnutne jeden platný JSON dokument – skôr je to sekvencia JSON objektov oddelených znakmi nových riadkov.
- Súbory s týmto formátom zvyčajne obsahujú prípony
.jsonl,.ldjson, alebo.ndjson. Ideálne pre streamovanie a len pridávanie scenárov – autori môžu pridať novú udalosť ako nový riadok bez prepísania súboru alebo narušenia štruktúry.
- Jednodokumentové JSON ("klasické JSON") súbory s príponou
.json, kde celý súbor je jeden platný JSON dokument – buď jeden objekt, alebo pole objektov (potenciálne vnorené).- Bežne sa používa na konfiguráciu, snímky a dátové súbory exportované v jednom kuse.
- Napríklad súbory GeoJSON bežne ukladajú jeden objekt JSON popisujúci prvky a ich geometriu.
Dotazovať JSONL súbory pomocou OPENROWSET
Fabric Data Warehouse a SQL analytics endpoint pre Lakehouse umožňujú SQL vývojárom dotazovať JSON Lines (.jsonl, .ldjson, .ndjson) súbory priamo z dátového jazera pomocou tejto funkcie OPENROWSET .
Tieto súbory obsahujú jeden platný JSON objekt na riadok, čo ich robí ideálnymi pre streamovanie a scenáre iba pripojenia.
Ak chcete prečítať súbor JSON Lines, zadajte jeho URL v argumente BULK :
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.jsonl'
);
Štandardne používa OPENROWSET schémovú inferenciu, ktorá automaticky objavuje všetky vlastnosti najvyššej úrovne v každom objekte JSON a vracia ich ako stĺpce.
Avšak môžete explicitne definovať schému na ovládanie, ktoré vlastnosti sa vracajú a ktoré prepisujú odvodené dátové typy:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.jsonl'
) WITH (
country_region VARCHAR(100),
confirmed INT,
date_reported DATE '$.updated'
);
Explicitná definícia schémy je užitočná, keď:
- Chcete prepísať predvolené odvodené typy (napríklad vynútiť dátumový typ namiesto varchar).
- Potrebujete stabilné názvy stĺpcov a selektívnu projekciu.
- Chcete mapovať stĺpce na konkrétne JSON vlastnosti, vrátane vnorených ciest.
Čítajte komplexné (vnorené) JSON štruktúry pomocou OPENROWSET
Fabric Data Warehouse a SQL analytics endpoint pre Lakehouse umožňujú SQL vývojárom čítať JSON s vnorenými objektmi alebo podpoľami priamo z jazera pomocou OPENROWSET.
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
}
}
V nasledujúcom príklade sa dotazujte na súbor, ktorý obsahuje ukážkové dáta, a použite túto klauzulu WITH na explicitné premietanie jeho vlastností na úrovni listu:
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'
);
Poznámka
Tento príklad používa relatívnu cestu bez dátového zdroja, čo funguje pri dotazovaní súborov vo vašom Lakehouse cez jeho SQL analytics endpoint. V Fabric Data Warehouse musíte buď:
- Použite absolútnu cestu k súboru, alebo
- Špecifikujte koreňovú URL adresu v externom zdroji dát a odkazujte naň vo vyhlásení
OPENROWSETpomocou tejtoDATA_SOURCEmožnosti.
Rozvinúť vnorené polia (JSON na riadky) pomocou OPENROWSET
Fabric Data Warehouse a SQL analytics endpoint pre Lakehouse vám umožňujú čítať JSON súbory s vnorenými poliami pomocou OPENROWSET. Potom môžete tieto polia rozbaliť (rozvnoriť) použitím .CROSS APPLY OPENJSON Táto metóda je užitočná, keď dokument na najvyššej úrovni obsahuje podpole, ktoré chcete mať ako jeden riadok na každý prvok.
V nasledujúcom, zjednodušenom príklade má dokument podobný GeoJSON-u pole príznakov:
{
"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]]]
}
}
]
}
Nasledujúci dotaz:
- Prečíta JSON dokument z jazera pomocou
OPENROWSET, premietajúc najvyššiu vlastnosť typu spolu so surovým poľom príznakov. - Aplikuje
CROSS APPLY OPENJSONna rozšírenie poľa vlastností tak, že každý prvok sa stane vlastným riadkom vo výslednej množine. V rámci tohto rozšírenia dotaz extrahuje vnorené hodnoty pomocou JSON path expression. Hodnoty akoshapeName,shapeISO, ageometrydetaily akogeometry.typeacoordinates, sú teraz ploché stĺpce pre jednoduchšiu analýzu.
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;