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.
Bu makalede, çeşitli dış veri kaynakları için veri sanallaştırma olarak adlandırılan dış verileri yerinde sorgulamak için PolyBase kullanma seçenekleri incelenir.
PolyBase'de kullanılan T-SQL söz dizimi
PolyBase'i kullanmak için dış verilerinize başvurmak için dış tablolar oluşturmanız gerekir. Başvurun:
- VERİTABANI KAPSAMINDA KIMLIK BİLGİSİ OLUŞTUR (Transact-SQL)
- HARICI VERI KAYNAĞI OLUŞTUR (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- İSTATİSTİK OLUŞTUR (Transact-SQL)
Uyarı
PolyBase'i kullanmak için veritabanında sysadmin veya CONTROL SERVER düzeyinde izinlere sahip olmanız gerekir.
Tutorials
Sorgu örnekleri için bkz. PolyBase Sorguları.
Çeşitli dış veri kaynakları hakkında daha fazla eğitim için şunları inceleyin:
- Hadoop
- Azure Blob Storage
- SQL Server
- Oracle
- Teradata
- MongoDB
- ODBC genel türleri
- S3 uyumlu nesne depolama
- CSV
- Delta tablosu
Dosya meta veri işlevleri
Bazen, hangi dosya veya klasör kaynağının sonuç kümesindeki belirli bir satırla ilişkili olduğunu bilmeniz gerekebilir.
Fonksiyonları filepath ve filename dosya adlarını ve/veya sonuç kümesinde yolu döndürmek için kullanabilirsin. Ya da dosya adı ve/veya klasör yoluna göre verileri filtrelemek için onları kullanabilirsiniz. Aşağıdaki bölümlerde, örnekler ile birlikte kısa açıklamalar bulabilirsiniz.
Dosya adı fonksiyonu
Bu fonksiyon, satırın geldiği dosya adını döndürür.
Dönüş veri tipi nvarchar(1024)'dir. En iyi performans için dosya adı fonksiyonunun sonucunu her zaman uygun veri tipine aktarın. Karakter veri tipi kullanıyorsanız, uygun uzunluk kullandığınızdan emin olun.
Aşağıdaki örnek, 2017 yılının son üç ayına ait NYC Yellow Taxi veri dosyalarını okuyor ve dosya başına yapılan yolculuk sayısını geri döndürüyor. Sorgu OPENROWSET kısmı hangi dosyaların okunacağını belirtir.
SELECT
nyc.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM
OPENROWSET(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) nyc
GROUP BY nyc.filename();
Aşağıdaki örnek, okunacak dosyaları filtrelemek için cümlede filename() nasıl WHERE kullanılabileceğini göstermektedir. Sorgu kısmındaki OPENROWSET tüm klasöre erişir ve maddedeki WHERE dosyaları filtreler.
Sonuçlarınız önceki örnekle aynı olacaktır.
SELECT
r.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2)
WITH (C1 varchar(200) ) AS [r]
WHERE
r.filename() IN ('yellow_tripdata_2017-10.csv', 'yellow_tripdata_2017-11.csv', 'yellow_tripdata_2017-12.csv')
GROUP BY
r.filename()
ORDER BY
[filename];
Dosya yolu fonksiyonu
Bu fonksiyon tam bir yol veya yolun bir kısmını döndürür:
- Parametre olmadan çağrıldığında, bir satırın başladığı tam dosya yolunu döndürür.
- Parametre ile çağrıldığında, parametrede belirtilen konumda joker kartla eşleşen yolun bir kısmını döndürür. Örneğin, parametre değeri 1, yolun ilk joker kartla eşleşen bir kısmını döndürür.
Dönüş veri tipi nvarchar(1024)'dir. En iyi performans için her zaman fonksiyonun filepath sonucunu uygun veri tipine aktarın. Karakter veri tipi kullanıyorsanız, uygun uzunluk kullandığınızdan emin olun.
Aşağıdaki örnek, 2017 yılının son üç ayına ait NYC Yellow Taxi veri dosyalarını okumaktadır. Dosya yolu başına gidiş sayısını döndürür. Sorgu OPENROWSET kısmı hangi dosyaların okunacağını belirtir.
SELECT
r.filepath() AS filepath
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-1*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
GROUP BY
r.filepath()
ORDER BY
filepath;
Aşağıdaki örnek, okunacak dosyaları filtrelemek için cümlede filepath() nasıl WHERE kullanılabileceğini göstermektedir.
Sorgunun OPENROWSET bölümünde joker karakterleri kullanabilir ve ifadenin WHERE bölümünde dosyaları filtreleyebilirsiniz. Sonuçlarınız önceki örnekle aynı olacaktır.
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_*-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;
İlgili içerik
- SQL Server'da PolyBase ile veri sanallaştırma
- SQL Server 2022'de PolyBase'i kullanmaya başlama
- SQL Server için PolyBase'de performansla ilgili dikkat edilmesi gerekenler