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: SQL Server 2022 (16.x) ve sonraki sürümleri
SQL Server 2022 (16.x), verileri doğrudan bir delta tablo klasöründen sorgulayabilir. Genellikle veri sanallaştırma olarak adlandırılan bu kavram, verilerin özgün konumunda kalmasına izin verir, ancak diğer tüm tablolar gibi T-SQL komutlarına sahip bir SQL Server örneğinden sorgulanabilir. Bu özellik PolyBase bağlayıcılarını kullanır ve ETL işlemleri aracılığıyla veri kopyalama gereksinimini en aza indirir.
Aşağıdaki örnekte, delta tablo klasörü Azure Blob Depolama'da depolanır ve OPENROWSET veya bir dış tablo aracılığıyla erişilir.
Veri sanallaştırma hakkında daha fazla bilgi için PolyBase ile veri sanallaştırmaya giriş.
Önceden yapılandırma
1. PolyBase'i etkinleştirin sp_configure
exec sp_configure @configname = 'polybase enabled', @configvalue = 1;
RECONFIGURE;
2. Kullanıcı veritabanı oluşturma
Bu alıştırma, varsayılan ayarlara ve konuma sahip bir örnek veritabanı oluşturur. Bu boş örnek veritabanını verilerle çalışmak ve kapsamlı kimlik bilgilerini depolamak için kullanırsınız. Bu örnekte adlı Delta_demo yeni bir boş veritabanı kullanılmıştır.
CREATE DATABASE [Delta_demo];
3. Ana anahtar ve veritabanı kapsamlı kimlik bilgileri oluşturma
Kullanıcı veritabanındaki veritabanı ana anahtarı, veritabanı kapsamlı kimlik bilgisi gizli dizisini delta_storage_dscşifrelemek için gereklidir. Bu örnekte delta tablosu Azure Data Lake Storage 2. Nesil'de yer alır.
USE [Delta_demo];
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE DATABASE SCOPED CREDENTIAL delta_storage_dsc
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<SAS Token>';
4. Dış veri kaynağı oluşturma
Dış veri kaynağı için veritabanı kapsamlı kimlik bilgileri kullanılır. Bu örnekte delta tablosu Azure Data Lake Storage 2. Nesil'de yer alır, bu nedenle ön ekini adlsSHARED ACCESS SIGNATURE ve kimlik yöntemini kullanın. SQL Server 2022 (16.x) için yeni ayarlar da dahil olmak üzere bağlayıcılar ve önekler hakkında daha fazla bilgi için EXTERNAL DATA SOURCE OLUŞTURMA bölümüne bakın.
CREATE EXTERNAL DATA SOURCE Delta_ED
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = delta_storage_dsc
);
Örneğin, depolama hesabınız adlandırılmışsa delta_lake_sample ve kapsayıcı adlandırılmışsa sinkkod şöyle olacaktır:
CREATE EXTERNAL DATA SOURCE Delta_ED
WITH (
LOCATION = 'adls://sink@delta_lake_sample.dfs.core.windows.net',
CREDENTIAL = delta_storage_dsc
);
Verilere erişmek için OPENROWSET kullanma
Bu örnekte, Veri Tablosu klasörü olarak adlandırılır Contoso.
Dış veri kaynağı Delta_ED bir kapsayıcı düzeyine eşlendiğinden.
Contoso Delta tablo klasörü bir kökte bulunur. Klasör yapısındaki bir dosyayı sorgulamak için, dış veri kaynağının LOCATION parametresine göre bir klasör eşlemesi sağlayın.
SELECT * FROM OPENROWSET
(
BULK '/Contoso',
FORMAT = 'DELTA',
DATA_SOURCE = 'Delta_ED'
) AS [result];
Dış tabloyla verileri sorgulama
CREATE EXTERNAL TABLE, SQL Server'da delta tablosu verilerini sanallaştırmak için de kullanılabilir. Sütunlar tanımlanmalı ve kesin olarak yazılmalıdır. Dış tabloları oluşturmak daha fazla çaba gerektirse de, OPENROWSET ile dış veri kaynağını sorgulamaya ek avantajlar sağlar. Şunları yapabilirsiniz:
- Belirli bir sütun için veri yazma tanımını güçlendirme
- Null durumu tanımlama
- HARMANLAMA Tanımla
- Sorgu planının kalitesini iyileştirmek için sütun için istatistikler oluşturma
- Güvenlik modelinizi geliştirmek üzere veri erişimi için SQL Server'da daha ayrıntılı bir model oluşturma
Daha fazla bilgi için bkz. CREATE EXTERNAL TABLE.
Aşağıdaki örnek için aynı veri kaynağı kullanılır.
1. Dış dosya biçimi oluşturma
Dosyanın biçimlendirmesini tanımlamak için dış dosya biçimi gerekir. Yeniden kullanılabilirlik nedeniyle dış dosya biçimleri de önerilir. Daha fazla bilgi için bkz. CREATE EXTERNAL FILE FORMAT.
CREATE EXTERNAL FILE FORMAT DeltaTableFormat WITH(FORMAT_TYPE = DELTA);
2. Dış tablo oluşturma
Delta tablosu dosyaları konumunda /delta/Delta_yob/ bulunur ve bu örneğin dış veri kaynağı, daha önce veri kaynağı altında yapılandırılmış olan S3 uyumlu nesne depolama alanıdır s3_eds. PolyBase, konum olarak delta tablo klasörünü veya delta/Delta_yob/_delta_log/00000000000000000000.json'da bulunan mutlak dosyayı kullanabilir.
-- Create External Table using delta
CREATE EXTERNAL TABLE extCall_Center_delta (
id INT,
name VARCHAR(200),
dob DATE
)
WITH (
LOCATION = '/delta/Delta_yob/',
FILE_FORMAT = DeltaTableFormat,
DATA_SOURCE = s3_eds
);
GO
Sınırlamalar
Bölümlenmiş delta tablosunu işaret eden bir dış tablo oluşturursanız, dış tablo sorgulanırken bölümleme için kullanılan sütun döndürülüyor NULL . Ancak, bir OPENROWSET sorgu kullanırsanız, sütun değeri doğru şekilde döndürür. Bu sınırlamaya geçici bir çözüm bulmak için sorguda OPENROWSET bir görünüm oluşturun ve ardından bölümlenmiş sütun değerlerinin doğru döndürülmesi için görünümü sorgulayın.
Dış Delta tablosunu sorgularken aşağıdaki hatalarla karşılaşabilirsiniz:
Msg 2571, Level 14, State 3, Line 1
User '<user>' does not have permission to run DBCC TRACEON.
Msg 16513, Level 16, State 0, Line 1
Error reading external metadata.
Delta dosyası meta veri sorgusuna eklenebilen ve yürütülmesi için sunucu rolü gerektiren QUERYTRACEON bir sysadmin sorgu ipucu olduğundan bu durum oluşabilir. Bu durumda, izleme bayrağı 14073'i genel olarak etkinleştirerek sorunu çözebilirsiniz ve bu, sorgu ipucunun eklenmesini engeller.