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.
Geleneksel SMP ayrılmış SQL havuzları, verileri yüklemek için Ayıklama, Dönüştürme ve Yükleme (ETL) işlemi kullanır. Azure Synapse Analytics içindeki Synapse SQL, işlem ve depolama kaynaklarının ölçeklenebilirlik ve esnekliğinden yararlanan dağıtılmış sorgu işleme mimarisini kullanır.
Ayıklama, Yükleme ve Dönüştürme (ELT) işlemi kullanmak yerleşik dağıtılmış sorgu işleme özelliklerini kullanır ve yüklemeden önce veri dönüşümü için gereken kaynakları ortadan kaldırır.
Ayrılmış SQL havuzları bcp ve SqlBulkCopy API gibi popüler SQL Server seçenekleri de dahil olmak üzere birçok yükleme yöntemini desteklese de, verileri yüklemenin en hızlı ve en ölçeklenebilir yolu PolyBase dış tabloları ve COPY deyimidir.
PolyBase ve COPY deyimiyle, T-SQL dili aracılığıyla Azure Blob depolamada veya Azure Data Lake Store'da depolanan dış verilere erişebilirsiniz. Yükleme sırasında en fazla esneklik için COPY deyimini kullanmanızı öneririz.
ELT nedir?
Ayıklama, Yükleme ve Dönüştürme (ELT), verilerin kaynak sistemden ayıklandığı, ayrılmış bir SQL havuzuna yüklendiği ve sonra dönüştürüldüğü bir işlemdir.
ELT'yi uygulamak için temel adımlar şunlardır:
- Kaynak verileri metin dosyalarına ayıklayın.
- Verileri Azure Blob depolama alanına veya Azure Data Lake Store'a alın.
- Verileri yüklemeye hazırlayın.
- PolyBase veya COPY komutuyla verileri hazırlama tablolarına yükleyin.
- Verileri dönüştürme.
- Verileri üretim tablolarına ekleyin.
Yükleme öğreticisi için bkz . Azure blob depolamadan veri yükleme.
1. Kaynak verileri metin dosyalarına ayıklama
Kaynak sisteminizden veri almak depolama konumuna bağlıdır. Amaç, verileri desteklenen sınırlandırılmış metinlere veya CSV dosyalarına taşımaktır.
Desteklenen dosya biçimleri
PolyBase ve COPY deyimiyle UTF-8 ve UTF-16 ile kodlanmış sınırlandırılmış metin veya CSV dosyalarından veri yükleyebilirsiniz. Sınırlandırılmış metin veya CSV dosyalarına ek olarak, ORC ve Parquet gibi Hadoop dosya biçimlerinden yüklenir. PolyBase ve COPY deyimi de Gzip ve Snappy sıkıştırılmış dosyalarından veri yükleyebilir.
Genişletilmiş ASCII, sabit genişlikli biçim ve WinZip veya XML gibi iç içe biçimler desteklenmez. SQL Server'dan dışarı aktarıyorsanız, verileri sınırlandırılmış metin dosyalarına aktarmak için bcp komut satırı aracını kullanabilirsiniz.
2. Verileri Azure Blob depolamaya veya Azure Data Lake Store'a aktarma
Verileri Azure depolama alanına getirmek için Azure Blob depolamaya veya Azure Data Lake Store 2. Nesil'e taşıyabilirsiniz. Her iki konumda da veriler metin dosyalarında depolanmalıdır. PolyBase ve COPY deyimi her iki konumdan da yüklenebilir.
Verileri Azure Depolama'ya taşımak için kullanabileceğiniz araçlar ve hizmetler:
- Azure ExpressRoute hizmeti ağ aktarım hızını, performansı ve öngörülebilirliği artırır. ExpressRoute, verilerinizi ayrılmış bir özel bağlantı üzerinden Azure'a yönlendiren bir hizmettir. ExpressRoute bağlantıları verileri genel İnternet üzerinden yönlendirmez. Bağlantılar genel İnternet üzerinden yapılan tipik bağlantılara göre daha fazla güvenilirlik, daha yüksek hız, daha düşük gecikme süresi ve daha yüksek güvenlik sunar.
- AzCopy yardımcı programı verileri genel İnternet üzerinden Azure Depolama'ya taşır. Bu, veri boyutlarınız 10 TB'tan küçükse çalışır. AzCopy ile düzenli olarak yük gerçekleştirmek için ağ hızını test edin ve kabul edilebilir olup olmadığını denetleyin.
- Azure Data Factory(ADF) yerel sunucunuza yükleyebileceğiniz bir ağ geçidine sahiptir. Ardından verileri yerel sunucunuzdan Azure Depolama'ya taşımak için bir işlem hattı oluşturabilirsiniz. Data Factory'yi ayrılmış SQL havuzlarıyla kullanmak için bkz . Ayrılmış SQL havuzları için veri yükleme.
3. Verileri yüklemeye hazırlama
Yüklemeden önce depolama hesabınızdaki verileri hazırlamanız ve temizlemeniz gerekebilir. Verileri metin dosyalarına aktardığınızda veya veriler Azure Depolama'da olduktan sonra verileriniz kaynaktayken veri hazırlama gerçekleştirilebilir. Verilerle mümkün olduğunca erken çalışmak en kolayıdır.
Tabloları tanımlama
İlk olarak, COPY deyimini kullanırken ayrılmış SQL havuzunuzda yüklemekte olduğunuz tabloları tanımlayın.
PolyBase kullanıyorsanız, yüklemeden önce ayrılmış SQL havuzunuzda dış tablolar tanımlamanız gerekir. PolyBase, Azure Depolama'daki verileri tanımlamak ve verilere erişmek için dış tablolar kullanır. Dış tablo, veritabanı görünümüne benzer. Dış tablo tablo şemasını içerir ve ayrılmış SQL havuzunun dışında depolanan verileri gösterir.
Dış tabloları tanımlama veri kaynağını, metin dosyalarının biçimini ve tablo tanımlarını belirtmeyi içerir. İhtiyacınız olacak T-SQL söz dizimi başvuru makaleleri şunlardır:
Parquet dosyalarını yüklerken aşağıdaki SQL veri türü eşlemesini kullanın:
Parquet türü | Parquet mantıksal türü (ek açıklama) | SQL veri türü |
---|---|---|
BOOLEAN | bit | |
İKILI / BYTE_ARRAY | varbinary | |
ÇİFT | float | |
YÜZMEK | gerçek | |
INT32 | int | |
INT64 | bigint | |
INT96 | datetime2 | |
FIXED_LEN_BYTE_ARRAY | ikili | |
İKİLİ | UTF8 |
nvarchar |
İKİLİ | STRING |
nvarchar |
İKİLİ | ENUM |
nvarchar |
İKİLİ | UUID |
uniqueidentifier |
İKİLİ | DECIMAL |
ondalık |
İKİLİ | JSON |
nvarchar(MAX) |
İKİLİ | BSON |
varbinary(MAX) |
FIXED_LEN_BYTE_ARRAY | DECIMAL |
ondalık |
BYTE_ARRAY | INTERVAL |
varchar(MAX) |
INT32 | INT(8, true) |
smallint |
INT32 | INT(16, true) |
smallint |
INT32 | INT(32, true) |
int |
INT32 | INT(8, false) |
tinyint |
INT32 | INT(16, false) |
int |
INT32 | INT(32, false) |
bigint |
INT32 | DATE |
tarih |
INT32 | DECIMAL |
ondalık |
INT32 | TIME (MILLIS) |
Saat |
INT64 | INT(64, true) |
bigint |
INT64 | INT(64, false ) |
ondalık(20,0) |
INT64 | DECIMAL |
ondalık |
INT64 | TIME (MILLIS) |
Saat |
INT64 | TIMESTAMP (MILLIS) |
datetime2 |
Karmaşık tür | LIST |
varchar(maksimum) |
Karmaşık tür | MAP |
varchar(maksimum) |
Önemli
- SQL ayrılmış havuzları şu anda MICROS ve NANOS duyarlıklı Parquet veri türlerini desteklememektedir.
- Türler Parquet ile SQL arasında uyumsuzsa veya desteklenmeyen Parquet veri türleriniz varsa aşağıdaki hatayla karşılaşabilirsiniz:
HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
- Parquet ve ORC dosya biçimi için 0-127 aralığındaki bir değerin tinyint sütununa yüklenmesi desteklenmez.
Dış nesne oluşturma örneği için bkz . Dış tablo oluşturma.
Metin dosyalarını biçimlendirme
PolyBase kullanıyorsanız, tanımlanan dış nesnelerin metin dosyalarının satırlarını dış tablo ve dosya biçimi tanımıyla hizalaması gerekir. Metin dosyasının her satırındaki veriler tablo tanımıyla hizalanmalıdır.
Metin dosyalarını biçimlendirmek için:
- Verileriniz ilişkisel olmayan bir kaynaktan geliyorsa, bunları satırlara ve sütunlara dönüştürmeniz gerekir. Verilerin ilişkisel veya ilişkisel olmayan bir kaynaktan olması fark etmeksizin verilerin, verileri yüklemeyi planladığınız tablonun sütun tanımlarıyla uyumlu olacak şekilde dönüştürülmesi gerekir.
- Metin dosyasındaki verileri, hedef tablodaki sütunlar ve veri türleriyle hizalamak için biçimlendirin. Dış metin dosyalarındaki veri türleri ile ayrılmış SQL havuzu tablosu arasındaki yanlış hizalama, yük sırasında satırların reddedilmesine neden olur.
- Metin dosyasındaki alanları sonlandırıcıyla ayırın. Kaynak verilerinizde bulunmayan bir karakter veya karakter dizisi kullandığınızdan emin olun. CREATE EXTERNAL FILE FORMAT ile belirttiğiniz sonlandırıcıyı kullanın.
4. PolyBase veya COPY deyimini kullanarak verileri yükleme
Hazırlama tablosuna veri yüklemek en iyi yöntemdir. Hazırlama tabloları, üretim tablolarını engellemeden hataları işlemenize olanak sağlar. Hazırlama tablosu, verileri üretim tablolarına eklemeden önce veri dönüştürmeleri için ayrılmış SQL havuzu paralel işleme mimarisini kullanma fırsatı da sunar.
Yükleme seçenekleri
Verileri yüklemek için şu yükleme seçeneklerinden herhangi birini kullanabilirsiniz:
- COPY deyimi, verileri sorunsuz ve esnek bir şekilde yüklemenize olanak sağladığından önerilen yükleme yardımcı programıdır. deyimi, PolyBase'in sağlamadığı birçok ek yükleme özelliğine sahiptir. Örnek bir öğreticiyi çalıştırmak için NY taksi KOPYALAMA öğreticisine bakın.
- T-SQL ile PolyBase, dış veri nesnelerini tanımlamanızı gerektirir.
- Azure Data Factory (ADF) ile PolyBase ve COPY deyimi bir diğer düzenleme aracıdır. İşlem hattını tanımlar ve işleri zamanlar.
- Kaynak verileriniz SQL Server'da olduğunda SSIS ile PolyBase iyi çalışır. SSIS, kaynağı hedef tablo eşlemelerini tanımlar ve ayrıca yükü düzenler. SSIS paketleriniz zaten varsa, paketleri yeni veri ambarı hedefiyle çalışacak şekilde değiştirebilirsiniz.
- Azure Databricks ile PolyBase, verileri bir tablodan Databricks veri çerçevesine aktarır ve/veya PolyBase kullanarak databricks veri çerçevesinden bir tabloya yazar.
Kullanılabilir öğreticileri gözden geçirin:
- Öğretici: Microsoft Entra Id kullanarak dış verileri yükleme
- Öğretici: Yönetilen kimlik kullanarak dış verileri yükleme
- Öğretici: New York Taxicab veri kümesini yükleme
- Öğretici: Azure Synapse Analytics SQL havuzuna veri yükleme
- Contoso perakende verilerini Azure Synapse Analytics'teki ayrılmış SQL havuzlarına yükleme
Diğer yükleme seçenekleri
PolyBase ve COPY deyimine ek olarak bcp veya SqlBulkCopy API'sini de kullanabilirsiniz. Yardımcı bcp
program Azure Blob depolamadan doğrudan veritabanına yüklenir ve yalnızca küçük yükler için tasarlanmıştır.
Not
Bu seçeneklerin yük performansı PolyBase ve COPY deyiminden daha yavaştır.
5. Verileri dönüştürme
Veriler hazırlama tablosundayken iş yükünüzün gerektirdiği dönüştürmeleri gerçekleştirin. Ardından verileri bir üretim tablosuna taşıyın.
6. Verileri üretim tablolarına ekleme
INSERT INTO ... SELECT deyimi, hazırlama tablosundaki verileri kalıcı tabloya taşır.
BIR ETL işlemi tasarladığınızda, işlemi küçük bir test örneğinde çalıştırmayı deneyin. Tablodan bir dosyaya 1.000 satır ayıklamayı, Azure'a taşımayı ve ardından bir hazırlama tablosuna yüklemeyi deneyin.
İş ortağı yükleme çözümleri
İş ortaklarımızın çoğunun yükleme çözümleri vardır. Daha fazla bilgi edinmek için çözüm iş ortaklarımızın listesine bakın.