Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Koskee:✅ SQL-analytiikan päätepiste ja Microsoft Fabric -varasto
Tässä artikkelissa opit, miten JSON-tiedostoja haetaan Fabric SQL:llä, mukaan lukien Fabric Data Warehouse ja SQL-analytiikan päätepiste.
JSON (JavaScript Object Notation) on kevyt formaatti puolirakenteelliselle datalle, jota käytetään laajasti big datassa sensorivirroissa, IoT-konfiguraatioissa, lokitiedostoissa ja paikkatietoaineistossa (esimerkiksi GeoJSON).
Käytä OPENROWSETia JSON-tiedostojen kyselyyn suoraan
Fabric Data Warehousessa ja Lakehousen SQL-analytiikkapäätepisteessä voit hakea JSON-tiedostoja suoraan järvessä tämän OPENROWSET funktion avulla.
OPENROWSET( BULK '{{filepath}}', [ , <options> ... ])
[ WITH ( <column schema and mappings> ) ];
Kun haet JSON-tiedostoja OPENROWSET:llä, aloitat määrittämällä tiedostopolun, joka voi olla suora URL tai villikorttikuvio, joka kohdistuu yhteen tai useampaan tiedostoon. Oletuksena Fabric projisoi jokaisen JSON-dokumentin ylätason ominaisuuden erillisenä sarakkeena tulosjoukossa. JSON Lines -tiedostoissa jokainen rivi käsitellään erillisenä rivinä, mikä tekee siitä ihanteellisen suoratoistotilanteissa.
Jos tarvitset enemmän hallintaa:
- Käytä valinnaista
WITHlauseketta määritelläksesi skeeman eksplisiittisesti ja kartoittaaksesi sarakkeet tiettyihin JSON-ominaisuuksiin, mukaan lukien sisäkkäiset polut. - Käytä
DATA_SOURCEviittaamaan juurisijaintiin suhteellisille poluille. - Määritä virheenkäsittelyparametrit, kuten
MAXERRORSkäsittelemään jäsennysongelmia sujuvasti.
Yleiset JSON-tiedostojen käyttötapaukset
Yleisiä JSON-tiedostotyyppejä ja käyttötapauksia, joita voit käsitellä Microsoft Fabricissa:
- Rivirajoitetut JSON-tiedostot ("JSON Lines"), joissa jokainen rivi on itsenäinen, kelvollinen JSON-dokumentti (esimerkiksi tapahtuma, lukeminen tai lokimerkintä).
- Koko tiedosto ei välttämättä ole yksittäinen kelvollinen JSON-dokumentti – se on jonoma JSON-olioiden sarja, jotka on erotettu newrivi-merkeillä.
- Tämän muodon tiedostoilla on tyypillisesti pääteitä
.jsonl,.ldjson, tai.ndjson. Ihanteellinen suoratoisto- ja pelkästään liitetyille skenaarioille – kirjoittajat voivat lisätä uuden tapahtuman uutena rivinä ilman tiedoston uudelleenkirjoittamista tai rakenteen rikkomista.
- Yksidokumenttiset JSON-tiedostot ("klassiset JSON") pääteellä
.json, jossa koko tiedosto on yksi kelvollinen JSON-dokumentti – joko yksittäinen objekti tai joukko objekteja (mahdollisesti sisäkkäin).- Sitä käytetään yleisesti konfigurointiin, snapshotteihin ja tietoaineistoihin, jotka viedään yhtenä kappaleena.
- Esimerkiksi GeoJSON-tiedostot tallentavat yleensä yhden JSON-objektin, joka kuvaa piirteitä ja niiden geometrioita.
Kysy JSONL-tiedostoja OPENROWSETilla
Fabric Data Warehouse ja Lakehousen SQL-analytiikkapäätepiste mahdollistavat SQL-kehittäjille JSON-rivin (.jsonl, .ldjson, .ndjson) tiedostojen kyselyn suoraan datajärvestä tämän OPENROWSET funktion avulla.
Näissä tiedostoissa on yksi kelvollinen JSON-objekti per rivi, mikä tekee niistä ihanteellisia suoratoisto- ja liitekohtauksiin.
JSON Lines -tiedoston lukemiseksi anna sen URL argumenttiin 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'
);
Oletuksena käytetään OPENROWSET skeemapäättelyä, joka automaattisesti löytää kaikki JSON-objektin ylätason ominaisuudet ja palauttaa ne sarakkeina.
Voit kuitenkin määritellä skeeman eksplisiittisesti säätelemään, mitkä ominaisuudet palautetaan ja ohittaa päätellyt tietotyypit:
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'
);
Eksplisiittinen skeeman määrittely on hyödyllinen, kun:
- Haluat ohittaa oletuspäätetyt tyypit (esimerkiksi pakottaaksesi päivämäärädatatyypin varcharin sijaan).
- Tarvitset vakaita sarakkeiden nimiä ja valikoivan projektion.
- Haluat kartoittaa sarakkeet tiettyihin JSON-ominaisuuksiin, mukaan lukien sisäkkäiset polut.
Lue monimutkaisia (sisäkkäisiä) JSON-rakenteita OPENROWSET-menetelmällä
Fabric Data Warehouse ja Lakehousen SQL-analytiikkapäätepiste antavat SQL-kehittäjille mahdollisuuden lukea JSON-tiedostoja, joissa on sisäkkäisiä objekteja tai alitaulukoita suoraan järvestä käyttämällä OPENROWSET.
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
}
}
Seuraavassa esimerkissä hae tiedosto, joka sisältää näytedataa, ja käytä lauseketta WITH sen lehtitason ominaisuuksien eksplisiittisesti projisoimiseen:
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'
);
Note
Tässä esimerkissä käytetään suhteellista polkua ilman tietolähdettä, joka toimii, kun tiedostoja haetaan Lakehousessasi sen SQL-analytiikkapäätepisteen kautta. Fabric Data Warehousessa sinun täytyy joko:
- Käytä absoluuttista polkua tiedostoon, tai
- Määritä juuri-URL ulkoisessa tietolähteessä ja viittaa siihen lauseessa
OPENROWSETkäyttämällä vaihtoehtoaDATA_SOURCE.
Laajenna sisäkkäiset taulukot (JSON to rows) OPENROWSETilla
Fabric Data Warehouse ja Lakehousen SQL-analytiikkapäätepiste mahdollistavat JSON-tiedostojen lukemisen sisäkkäisillä taulukoilla käyttämällä OPENROWSET. Sitten voit laajentaa (purkaa) näitä taulukoita käyttämällä CROSS APPLY OPENJSON. Tämä menetelmä on hyödyllinen, kun ylätason dokumentti sisältää alitaulukon, jonka haluat yhdeksi riviksi per alkio.
Seuraavassa yksinkertaistetussa esimerkkisyötteessä GeoJSON-tyyppisellä dokumentilla on ominaisuuksien taulukko:
{
"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]]]
}
}
]
}
Seuraava kysely:
- Lukee JSON-dokumentin järvestä käyttämällä
OPENROWSET, projisoimalla ylätason tyyppiominaisuuden yhdessä raaka-ominaisuuksien taulukon kanssa. - Soveltaa
CROSS APPLY OPENJSONominaisuuksien taulukon laajentamiseen siten, että jokainen alkio muodostaa oman rivinsä tulosjoukossa. Tässä laajennuksessa kysely poimii sisäkkäisiä arvoja käyttäen JSON-polkulausekkeita. Arvot kutenshapeName, , jageometryyksityiskohdat kutengeometry.typejacoordinates, ovat nyt litteitä sarakkeita helpompaa analysointiashapeISOvarten.
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;