Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:✅ Microsoft Fabric'te SQL analiz uç noktası ve Ambarı
Bu makalede Doku Veri Ambarı ve SQL analiz uç noktası dahil olmak üzere Doku SQL kullanarak JSON dosyalarını sorgulamayı öğreneceksiniz.
JSON (JavaScript Nesne Gösterimi), algılayıcı akışları, IoT yapılandırmaları, günlükler ve jeo-uzamsal veriler (örneğin GeoJSON) için büyük verilerde yaygın olarak kullanılan yarı yapılandırılmış veriler için basit bir biçimdir.
JSON dosyalarını doğrudan sorgulamak için OPENROWSET kullanma
Fabric Veri Ambarı'nda ve bir Lakehouse için SQL analiz uç noktasında, OPENROWSET işlevini kullanarak JSON dosyalarını doğrudan göl üzerinde sorgulayabilirsiniz.
OPENROWSET( BULK '{{filepath}}', [ , <options> ... ])
[ WITH ( <column schema and mappings> ) ];
OPENROWSET ile JSON dosyalarını sorguladığınızda, doğrudan URL veya bir veya daha fazla dosyayı hedefleyen joker karakter deseni olabilecek dosya yolunu belirterek başlarsınız. Varsayılan olarak, Fabric, JSON belgesindeki her üst düzey özelliği sonuç kümesinde ayrı bir sütun olarak yansıtır. JSON Satırları dosyaları için her satır ayrı bir satır olarak kabul edilir ve akış senaryoları için idealdir.
Daha fazla denetime ihtiyacınız varsa:
- Şemayı açıkça tanımlamak ve sütunları iç içe yerleştirilmiş yollar da dahil olmak üzere belirli JSON özellikleriyle eşlemek için isteğe bağlı
WITHyan tümcesini kullanın. -
DATA_SOURCEkullanarak göreli yollar için kök konuma referans alın. - Ayrıştırma sorunlarını düzgün bir şekilde yönetmek gibi
MAXERRORShata işleme parametrelerini yapılandırın.
Yaygın JSON dosya kullanım örnekleri
Microsoft Fabric'te işleyebileceğiniz yaygın JSON dosya türleri ve kullanım örnekleri:
- Her satırın tek başına, geçerli bir JSON belgesi (örneğin, olay, okuma veya günlük girdisi) olduğu satırla ayrılmış JSON ("JSON Satırları") dosyaları.
- Dosyanın tamamı tek bir geçerli JSON belgesi olmayabilir; yeni satır karakterleriyle ayrılmış bir JSON nesneleri dizisidir.
- Bu biçime sahip dosyalar genellikle ,
.jsonlveya.ldjsonuzantılarına.ndjsonsahiptir. Akış ve yalnızca ekleme senaryoları için ideal olan yazarlar, dosyayı yeniden yazmadan veya yapıyı bozmadan yeni bir olayı yeni bir satır olarak ekleyebilir.
- Tek belgeli JSON ("klasik JSON") dosyaları,
.jsonuzantısına sahip ve tamamı geçerli bir JSON belgesi olan dosyalardır; bu, tek bir nesne veya (iç içe yerleştirilmiş olabilecek) bir nesne dizisi şeklinde olabilir.- Tek parça halinde dışarı aktarılan yapılandırma, anlık görüntüler ve veri kümeleri için yaygın olarak kullanılır.
- Örneğin, GeoJSON dosyaları genellikle özellikleri ve geometrilerini açıklayan tek bir JSON nesnesi depolar.
OPENROWSET ile JSONL dosyalarını sorgulama
Lakehouse için Fabric Veri Ambarı ve SQL analiz uç noktası, SQL geliştiricilerinin OPENROWSET işlevini kullanarak JSON Satırları (.jsonl, .ldjson, .ndjson) dosyalarını doğrudan veri gölünden sorgulamasına olanak tanır.
Bu dosyalar satır başına geçerli bir JSON nesnesi içerir ve bu da akış ve yalnızca ekleme senaryoları için idealdir.
Bir JSON Lines dosyasını okumak için URL'sini BULK bağımsız değişkenine sağlayın.
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'
);
Varsayılan olarak, OPENROWSET her JSON nesnesindeki tüm üst düzey özellikleri otomatik olarak bularak ve bunları sütun olarak döndürerek şema çıkarımı kullanır.
Ancak, hangi özelliklerin döndürüleceğini denetlemek ve çıkarılan veri türlerini geçersiz kılmak için şemayı açıkça tanımlayabilirsiniz:
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'
);
Açık şema tanımı şu durumlarda kullanışlıdır:
- Varsayılan çıkarsanan türleri geçersiz kılmak istiyorsunuz (örneğin, varchar yerine tarih veri türünü zorlamak için).
- Kararlı sütun adları ve seçmeli projeksiyon gerekir.
- Sütunları iç içe yerleştirilmiş yollar da dahil olmak üzere belirli JSON özellikleriyle eşlemek istiyorsunuz.
OPENROWSET ile karmaşık (iç içe yerleştirilmiş) JSON yapılarını okuma
Lakehouse için Doku Veri Ambarı ve SQL analiz uç noktası, SQL geliştiricilerinin iç içe nesneler veya alt diziler içeren JSON verilerini doğrudan gölden OPENROWSET kullanarak okumasına olanak tanır.
{
"type": "Feature",
"properties": {
"shapeName": "Serbia",
"shapeISO": "SRB",
"shapeID": "94879208B25563984444888",
"shapeGroup": "SRB",
"shapeType": "ADM0"
}
}
Aşağıdaki örnekte, örnek veriler içeren bir dosyayı sorgulayıp yan tümcesini WITH kullanarak yaprak düzeyi özelliklerini açıkça yansıtın:
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'
);
Uyarı
Bu örnek, Lakehouse'unuzda SQL analiz uç noktası aracılığıyla dosyaları sorgularken çalışan veri kaynağı olmayan göreli bir yol kullanır. Fabric Veri Ambarı'nda şunlardan birini yapmanız gerekir:
- Dosyanın mutlak yolunu kullanın veya
- Dış veri kaynağında bir kök URL belirtin ve
OPENROWSETdeyiminde bunaDATA_SOURCEseçeneğini kullanarak başvurun.
OPENROWSET ile iç içe dizileri (JSON'ı satırlara) genişletme
Fabric Veri Ambarı ve Lakehouse için SQL analiz uçnoktası kullanarak, iç içe dizilere sahip JSON dosyalarını OPENROWSET ile okumanızı sağlar. Ardından, bu dizileri CROSS APPLY OPENJSON kullanarak genişletebilir (unnest edebilirsiniz). Bu yöntem, üst düzey bir belge öğe başına bir satır olarak istediğiniz bir alt dizi içerdiğinde kullanışlıdır.
Aşağıdaki basitleştirilmiş örnek girişte, GeoJSON benzeri bir belgenin özellikler dizisi vardır:
{
"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]]]
}
}
]
}
Aşağıdaki sorgu:
-
OPENROWSETkullanarak JSON belgesini gölden okur ve ham özellikler dizisiyle birlikte en üst düzeydeki tür özelliğini yansıtır. -
CROSS APPLY OPENJSONher öğenin sonuç kümesinde ayrı bir satır olması için özellikler dizisini genişletir. Bu genişletmede sorgu, JSON yol ifadelerini kullanarak iç içe değerleri ayıklar. DeğerlershapeName,shapeISOve ayrıntılargeometry,geometry.typeilecoordinatesartık daha kolay analiz için düz sütunlar haline getirildi.
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;