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.
Tip
Microsoft Fabric Data Warehouse geleceğe hazır mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip data lake foundation üzerinde kurumsal ölçekli ilişkisel bir ambardır. Veri ambarı konusunda yeniyseniz Fabric Data Warehouse ile başlayın. Mevcut özel SQL havuzu iş yükleri, veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltilebilir.
Bu makalede, Parquet dosyalarını okuyacak sunucusuz SQL havuzunu kullanarak sorgu yazmayı öğreneceksiniz.
Hızlı başlangıç örneği
OPENROWSET işlevi, dosyanızın URL'sini sağlayarak parquet dosyasının içeriğini okumanızı sağlar.
Parquet dosyasını oku
Dosyanızın PARQUET içeriğini görmenin en kolay yolu, dosya URL'sini OPENROWSET işlevine sağlamak ve FORMAT ile parquet formatını belirtmektir. Dosya genel kullanıma açıksa veya Microsoft Entra kimliğiniz bu dosyaya erişebiliyorsa, aşağıdaki örnekte gösterildiği gibi sorguyu kullanarak dosyanın içeriğini görebilmeniz gerekir:
select top 10 *
from openrowset(
bulk 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet',
format = 'parquet') as rows
Bu dosyaya erişebildiğinizden emin olun. Dosyanız SAS anahtarı veya özel Azure kimliğiyle korunuyorsa, sql login için
Önemli
PARQUET dosyalarındaki dize değerleri UTF-8 kodlaması kullanılarak kodlandığından, UTF-8 veritabanı harmanlaması (örneğin Latin1_General_100_BIN2_UTF8) kullandığınızdan emin olun.
PARQUET dosyasındaki metin kodlaması ile harmanlama arasındaki uyuşmazlık beklenmeyen dönüştürme hatalarına neden olabilir.
Aşağıdaki T-SQL deyimini kullanarak geçerli veritabanının varsayılan harmanlamasını kolayca değiştirebilirsiniz:
ALTER DATABASE CURRENT COLLATE Latin1_General_100_BIN2_UTF8; Harmanlamalar hakkında daha fazla bilgi için bkz. Synapse SQL için desteklenen harmanlama türleri.
Latin1_General_100_BIN2_UTF8 harmanlamayı kullanırsanız, diğer harmanlamalarla karşılaştırıldığında ek bir performans artışı elde edersiniz. Harmanlama Latin1_General_100_BIN2_UTF8 , parquet dizesi sıralama kurallarıyla uyumludur. SQL havuzu, sorgularda ihtiyaç duyulmayan verileri içermeyen bazı parquet dosyası bölümlerini (dosya/sütun segment budama) elemeye olanak tanır. Diğer harmanlamaları kullanırsanız, parquet dosyalarındaki tüm veriler Synapse SQL'e yüklenir ve filtreleme SQL işlemi içinde gerçekleştirilir.
Latin1_General_100_BIN2_UTF8 harmanlamanın, yalnızca parquet ve Cosmos DB üzerinde çalışan başka bir performans iyileştirmesi daha bulunmaktadır. Dezavantajı, büyük/küçük harf duyarsızlığı gibi ayrıntılı karşılaştırma kurallarını kaybetmenizdir.
Veri kaynağı kullanımı
Önceki örnek dosyanın tam yolunu kullanır. Alternatif olarak, depolamanın kök klasörüne işaret eden konumuyla bir dış veri kaynağı oluşturabilir ve bu veri kaynağını ve işlevdeki OPENROWSET dosyanın göreli yolunu kullanabilirsiniz:
create external data source covid
with ( location = 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases' );
go
select top 10 *
from openrowset(
bulk 'latest/ecdc_cases.parquet',
data_source = 'covid',
format = 'parquet'
) as rows
Bir veri kaynağı SAS anahtarı veya özel kimlikle korunuyorsa, veri kaynağını veritabanı kapsamlı kimlik bilgileriyle yapılandırabilirsiniz.
Şemayı açıkça belirtin
OPENROWSET , yan tümcesini kullanarak WITH dosyadan hangi sütunları okumak istediğinizi açıkça belirtmenizi sağlar:
select top 10 *
from openrowset(
bulk 'latest/ecdc_cases.parquet',
data_source = 'covid',
format = 'parquet'
) with ( date_rep date, cases int, geo_id varchar(6) ) as rows
Önemli
Tüm string sütunları için Latin1_General_100_BIN2_UTF8 ifadesinde açıkça bir UTF-8 collation (örneğin WITH) belirttiğinizden veya veritabanı seviyesinde bir UTF-8 collation ayarladığınızdan emin olun.
Dosyadaki metin kodlaması ile dize sütunu harmanlaması arasındaki uyuşmazlık beklenmeyen dönüştürme hatalarına neden olabilir.
Aşağıdaki T-SQL deyimini kullanarak geçerli veritabanının varsayılan harmanlamasını kolayca değiştirebilirsiniz:
ALTER DATABASE CURRENT COLLATE Latin1_General_100_BIN2_UTF8; Sütun türlerinde kolayca harmanlama ayarlayabilirsiniz, örneğin:
geo_id varchar(6) collate Latin1_General_100_BIN2_UTF8 Harmanlamalar hakkında daha fazla bilgi için bkz. Synapse SQL için desteklenen harmanlama türleri.
Aşağıdaki bölümlerde, çeşitli PARQUET dosyası türlerini sorgulamayı görebilirsiniz.
Prerequisites
İlk adımınız, NYC Yellow Taxi depolama hesabına başvuran bir veri kaynağına sahip bir veritabanı oluşturmaktır. Ardından bu veritabanında setup betiği yürüterek nesneleri başlatın. Bu kurulum betiği, bu örneklerde kullanılan veri kaynaklarını, veritabanı kapsamlı kimlik bilgilerini ve dış dosya biçimlerini oluşturur.
Veri Kümesi
Bu örnekte NYC Yellow Taxi veri kümesi kullanılmıştır.
Parquet dosyalarını CSV dosyalarını okuduğunuz gibi sorgulayabilirsiniz. Tek fark, parametresinin FILEFORMAT olarak PARQUETayarlanması gerektiğidir. Bu makaledeki örneklerde Parquet dosyalarını okumanın özellikleri gösterilmektedir.
Parquet dosyaları sorgulama kümesi
Parquet dosyalarını sorgularken yalnızca ilgilendiğiniz sütunları belirtebilirsiniz.
SELECT
YEAR(tpepPickupDateTime),
passengerCount,
COUNT(*) AS cnt
FROM
OPENROWSET(
BULK 'puYear=2018/puMonth=*/*.snappy.parquet',
DATA_SOURCE = 'YellowTaxi',
FORMAT='PARQUET'
) WITH (
tpepPickupDateTime DATETIME2,
passengerCount INT
) AS nyc
GROUP BY
passengerCount,
YEAR(tpepPickupDateTime)
ORDER BY
YEAR(tpepPickupDateTime),
passengerCount;
Otomatik şema çıkarımı
Parquet dosyalarını okurken OPENROWSET WITH yan tümcesini kullanmanız gerekmez. Sütun adları ve veri türleri Parquet dosyalarından otomatik olarak okunur.
Aynı anda birden fazla dosya okuyorsanız, şema, sütun adları ve veri türleri, hizmetin depolamadan aldığı ilk dosyadan çıkarımla belirlenecektir. Bu, beklenen bazı sütunların atlanacağı anlamına gelebilir, çünkü şemayı tanımlamak için hizmet tarafından kullanılan dosya bu sütunları içermiyordu. Şemayı açıkça belirtmek için OPENROWSET WITH yan tümcesini kullanın.
Aşağıdaki örnekte Parquet dosyaları için otomatik şema çıkarımı özellikleri gösterilmektedir. Eylül 2018'de bir şema belirtmeden satır sayısını döndürür.
Note
Parquet dosyalarını okurken OPENROWSET WITH yan tümcesinde sütunları belirtmeniz gerekmez. Bu durumda sunucusuz SQL havuzu sorgu hizmeti Parquet dosyasında meta verileri kullanır ve sütunları ada göre bağlar.
SELECT TOP 10 *
FROM
OPENROWSET(
BULK 'puYear=2018/puMonth=9/*.snappy.parquet',
DATA_SOURCE = 'YellowTaxi',
FORMAT='PARQUET'
) AS nyc
Bölümlenmiş verileri sorgulama
Bu örnekte sağlanan veri kümesi ayrı alt klasörlere bölünür (bölümlenir). Dosya yolu işlevini kullanarak belirli bölümleri hedefleyebilirsiniz. Bu örnekte, 2017'nin ilk üç ayı için yıla, aya ve payment_type göre ücret tutarları gösterilmektedir.
Note
Sunucusuz SQL havuzu sorgusu Hive/Hadoop bölümleme düzeniyle uyumludur.
SELECT
YEAR(tpepPickupDateTime),
passengerCount,
COUNT(*) AS cnt
FROM
OPENROWSET(
BULK 'puYear=*/puMonth=*/*.snappy.parquet',
DATA_SOURCE = 'YellowTaxi',
FORMAT='PARQUET'
) nyc
WHERE
nyc.filepath(1) = 2017
AND nyc.filepath(2) IN (1, 2, 3)
AND tpepPickupDateTime BETWEEN CAST('1/1/2017' AS datetime) AND CAST('3/31/2017' AS datetime)
GROUP BY
passengerCount,
YEAR(tpepPickupDateTime)
ORDER BY
YEAR(tpepPickupDateTime),
passengerCount;
Tip eşlemesi
SQL yerel türüne Parquet türü eşlemesini kontrol etmek için Parquet için tür eşlemesini denetleyin.