Amazon Kırmızıya Kaydırma bulutta tam olarak yönetilen, petabayt ölçeğinde bir veri ambarı hizmetidir. On binlerce müşteri, analitik iş yüklerini güçlendirmek için her gün exabaytlarca veriyi işlemek için Amazon Redshift'i kullanıyor.
Amazon Redshift, analitik işlemeyi geliştirmek için aşağıdakiler gibi birçok özellik ekledi: ROLLUP, KÜP ve GRUPLAMA SETLERİ, gönderide gösterilen ROLLUP, CUBE ve GROUPING SETS gibi yeni SQL yapılarını kullanarak Amazon Redshift'te Çevrimiçi Analitik İşleme (OLAP) sorgularını basitleştirin. Amazon Redshift yakın zamanda birçok SQL komutu ve ifadesi ekledi. Bu yazıda iki yeni SQL özelliğinden bahsedeceğiz: BİRLEŞTİRMEK komuta ve NİTELEMEK veri alımını ve veri filtrelemeyi basitleştiren madde.
Çoğu aşağı yönlü uygulamadaki tanıdık görevlerden biri, değişiklik verilerinin yakalanması (CDC) ve bunun hedef tablolara uygulanmasıdır. Bu görev, kaynak verinin bir güncelleme mi yoksa mevcut hedef verilere bir ekleme mi olduğunu belirlemek için incelenmesini gerektirir. MERGE komutu olmadan, bir iş anahtarı kullanarak yeni veri kümesini mevcut veri kümesine göre test etmeniz gerekiyordu. Bu eşleşmediğinde mevcut veri kümesine yeni satırlar eklediniz; aksi takdirde mevcut veri kümesi satırlarını yeni veri kümesi değerleriyle güncellersiniz.
The BİRLEŞTİRMEK komut, kaynak tablodaki satırları koşullu olarak hedef tabloyla birleştirir. Geleneksel olarak bu yalnızca birden fazla ekleme, güncelleme veya silme ifadesinin ayrı ayrı kullanılmasıyla gerçekleştirilebilirdi. Verileri güncellemek veya eklemek için birden fazla ifade kullanıldığında, farklı işlemler arasında tutarsızlık riski vardır. Birleştirme işlemi tüm işlemlerin tek bir işlemde birlikte yapılmasını sağlayarak bu riski azaltır.
The NİTELEMEK yan tümcesi, önceden hesaplanan bir pencere fonksiyonunun sonuçlarını kullanıcı tarafından belirlenen arama koşullarına göre filtreler. Bir alt sorgu kullanmadan bir pencere fonksiyonunun sonucuna filtreleme koşullarını uygulamak için yan tümceyi kullanabilirsiniz. Bu şuna benzer HAVING WHERE yan tümcesindeki satırları daha fazla filtrelemek için bir koşulu uygulayan yan tümce. QUALIFY ve HAVING arasındaki fark, QUALIFY yan tümcesinden filtrelenen sonuçların, veriler üzerinde pencere işlevlerini çalıştırmanın sonucuna dayanabilmesidir. Tek bir sorguda hem QUALIFY hem de HAVING yan tümcelerini kullanabilirsiniz.
Bu yazıda, CDC'yi uygulamak için MERGE komutunun nasıl kullanılacağını ve bu değişikliklerin doğrulanmasını basitleştirmek için QUALIFY'ın nasıl kullanılacağını göstereceğiz.
Çözüme genel bakış
Bu kullanım durumunda, kaynak sistemden her zaman en son verileri alması gereken bir müşteri boyut tablosunun bulunduğu bir veri ambarımız var. Bu veriler aynı zamanda denetim ve izleme amacıyla ilk oluşturma zamanını ve son güncelleme zamanını da yansıtmalıdır.
Bunu çözmenin basit bir yolu, müşteri boyutunu her gün tamamen geçersiz kılmaktır; ancak bu, bir denetim görevi olan güncelleme izlemeyi başaramaz ve daha büyük tablolar için bunu yapmak mümkün olmayabilir.
Talimatı takip ederek Amazon S3'ten örnek verileri yükleyebilirsiniz. okuyun. Aşağıdaki mevcut müşteri tablosunu kullanma sample_data_dev.tpcds
, hem mevcut müşteriler için güncellemeleri hem de yeni müşteriler için eklemeleri içerecek bir müşteri boyutu tablosu ve bir kaynak tablosu oluşturuyoruz. Kaynak tablo verilerini hedef tablo (müşteri boyutu) ile birleştirmek için MERGE komutunu kullanırız. Ayrıca hedef tablodaki değişikliklerin doğrulanmasını basitleştirmek için QUALIFY yan tümcesinin nasıl kullanılacağını da gösteriyoruz.
Bu yazıdaki adımları takip etmek için beraberindekileri indirmenizi öneririz. defter, bu yazı için çalıştırılacak tüm komut dosyalarını içerir. Not defterlerini yazma ve çalıştırma hakkında bilgi edinmek için bkz. Not defterlerini yazma ve çalıştırma.
Önkoşullar
Aşağıdaki ön koşullara sahip olmalısınız:
Boyut tablosunu oluşturun ve doldurun
Aşağıdaki mevcut müşteri tablosunu kullanıyoruz sample_data_dev.tpcds
Oluşturmak için customer_dimension
masa. Aşağıdaki adımları tamamlayın:
- İş anahtarı da dahil olmak üzere seçilen birkaç alanı kullanarak bir tablo oluşturun ve zaman damgalarını eklemek ve güncellemek için birkaç bakım alanı ekleyin:
- Boyut tablosunu doldurun:
- Satır sayısını ve tablonun içeriğini doğrulayın:
Müşteri tablosu değişikliklerini simüle edin
Tabloda yapılan değişiklikleri simüle etmek için aşağıdaki kodu kullanın:
Kaynak tabloyu hedef tabloyla birleştirin
Artık müşteri boyutu tablosuyla birleştirmeniz gereken bazı değişiklikleri içeren bir kaynak tablonuz var.
MERGE komutundan önce, bu tür bir görevin uygulanması için iki ayrı UPDATE ve INSERT komutu gerekiyordu:
MERGE komutu, DML güncelleme işlemini mi (eşleştiğinde) yoksa DML ekleme işlemini mi (eşleşmediğinde) gerçekleştireceğimize karar vermek için anahtar karşılaştırma sonucunu kullandığımız daha basit bir sözdizimi kullanır:
Hedef tablodaki veri değişikliklerini doğrulama
Şimdi verilerin hedef tabloya doğru şekilde ulaştığını doğrulamamız gerekiyor. Öncelikle güncelleme zaman damgasını kullanarak güncellenen verileri kontrol edebiliriz. Bu bizim ilk güncellememiz olduğundan, güncelleme zaman damgasının boş olmadığı tüm satırları inceleyebiliriz:
Veri değişikliklerinin doğrulanmasını basitleştirmek için QUALIFY'ı kullanın
Bu tabloya en son eklenen verileri incelememiz gerekiyor. Bunu yapmanın bir yolu, verileri ekleme zaman damgasına göre sıralamak ve ilk sıraya sahip olanları almaktır. Bu, pencere işlevinin kullanılmasını gerektirir rank()
ve ayrıca sonuçları almak için bir alt sorgu gerektirir.
QUALIFY kullanıma sunulmadan önce bunu aşağıdaki gibi bir alt sorgu kullanarak oluşturmamız gerekiyordu:
QUALIFY işlevi, aşağıdaki kod parçacığında olduğu gibi alt sorguya olan ihtiyacı ortadan kaldırır:
Tüm veri değişikliklerini doğrula
Tüm eklemeleri ve güncelleme değişikliklerini almak için her iki sorgunun sonuçlarını birleştirebiliriz:
Temizlemek
Gönderide kullanılan kaynakları temizlemek için Redshift tarafından sağlanan kümeyi veya Redshift Sunucusuz çalışma grubunu ve bu gönderi için oluşturduğunuz ad alanını silin (bu aynı zamanda oluşturulan tüm nesneleri de bırakır).
Mevcut bir Redshift tarafından sağlanan kümeyi veya Redshift Sunucusuz çalışma grubunu ve ad alanını kullandıysanız, bu nesneleri bırakmak için aşağıdaki kodu kullanın:
Sonuç
Verileri güncellemek veya eklemek için birden fazla ifade kullanıldığında, farklı işlemler arasında tutarsızlık riski vardır. BİRLEŞTİRME operasyonu tüm işlemlerin tek bir işlemde birlikte yapılmasını sağlayarak bu riski azaltır. Diğer veri ambarı sistemlerinden geçiş yapan veya Redshift ambarlarına düzenli olarak hızla değişen verileri alması gereken Amazon Redshift müşterileri için MERGE komutu, mevcut ve mevcut tablolara dayalı olarak hedef tablolara koşullu olarak veri eklemenin, güncellemenin ve silmenin basit bir yoludur. yeni kaynak verileri.
Pencere işlevlerini kullanan analitik sorguların çoğunda, bu pencere işlevlerini WHERE yan tümcenizde de kullanmanız gerekebilir. Ancak buna izin verilmez ve bunu yapmak için gerekli pencere işlevini içeren bir alt sorgu oluşturmanız ve ardından sonuçları WHERE yan tümcesindeki üst sorguda kullanmanız gerekir. QUALIFY deyiminin kullanılması alt sorgu ihtiyacını ortadan kaldırır ve dolayısıyla SQL ifadesini basitleştirir ve yazmayı ve okumayı daha az zorlaştırır.
Bu yeni özellikleri kullanmaya başlamanızı ve bize geri bildirimde bulunmanızı öneririz. Daha fazla ayrıntı için bkz. BİRLEŞTİRMEK ve QUALIFY cümlesi.
yazarlar hakkında
Yanzhu Ji Amazon Redshift ekibinde Ürün Yöneticisidir. Sektör lideri veri ürünleri ve platformlarında ürün vizyonu ve stratejisi konusunda deneyime sahiptir. Web geliştirme, sistem tasarımı, veri tabanı ve dağıtılmış programlama teknikleri kullanarak önemli yazılım ürünleri oluşturma konusunda olağanüstü bir beceriye sahiptir. Yanzhu, kişisel hayatında resim yapmayı, fotoğraf çekmeyi ve tenis oynamayı seviyor.
Ahmet Şehat Toronto merkezli AWS'de Kıdemli Analitik Uzmanı Çözüm Mimarıdır. Müşterilerin veri platformlarını modernize etmelerine yardımcı olma konusunda yirmi yılı aşkın bir deneyime sahiptir. Ahmed, müşterilerin verimli, performanslı ve ölçeklenebilir analitik çözümler oluşturmasına yardımcı olma konusunda tutkulu.
Ranjan Burman AWS'de Analitik Uzmanı Çözüm Mimarıdır. Amazon Redshift'te uzmandır ve müşterilerin ölçeklenebilir analitik çözümler oluşturmasına yardımcı olur. Farklı veritabanı ve veri ambarı teknolojilerinde 16 yıldan fazla deneyime sahiptir. Müşteri sorunlarını bulut çözümleriyle otomatikleştirme ve çözme konusunda tutkulu.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/big-data/use-the-new-sql-commands-merge-and-qualify-to-implement-and-validate-change-data-capture-in-amazon-redshift/