Şu anda veri ambarımız için ETL oluşturma sürecindeyim. SSIS 2008 kullanıyoruz, ancak en önemlisi bileşenlerin yeniden kullanılmasındaki zorluk olan sorunlarla karşılaşıyoruz. Her tablo için ayrı paketlerimiz vardır ve her paket bir üst paketten bir dizi değişken girdi olarak alır. Bu giriş değişkenlerinde değişiklik yaptığımız için, her pakete girmemiz gerekiyor (şimdi 15 tane var, ancak bu sayı önemli ölçüde büyüyecek) ve bu değişikliklerle başa çıkmak için paketi değiştirmeliyiz. Ayrıca, ayıklama için rasgele SQL çalıştırılamaması, zayıf günlük yetenekleri vb.
Kodda ETL'leri geliştirmenin, kodun yeniden kullanılmasını, ortak kütüphanelerin, daha iyi birim testlerinin vb. Etkinleştirilmesini sağlayan bir yol olsaydı, tüm bu süreç çok daha sağlam olurdu . SQL Server için fiili standart ETL dili / API var mı? GUI araçlarından mümkün olduğunca kaçınmak istiyorum.
Düzenleme: Arka planımı belirtmeliyim. Ben bir DBA değilim ve resmi (veya gayri resmi) bir DBA eğitimim yok, temelde bu şeyleri devam ederken anladım, bu yüzden SSIS ile uygunsuz şeyler yapmaya veya bu ETL'ye yaklaşmaya çalıştığım her olasılık var projeyi yanlış açıdan. Ayrıca, şu anda eyalet hükümetinde çalışıyorum, bu nedenle yeni bir yazılım paketi satın almayı gerektiren çözümler olasılık alanı içinde değil.
İşte görevlerimizden biri. Depomuza her bir tablo yüklemek için tek bir SSIS Paketi kullanıyoruz. Her bir Fact paketi ve Dimension paketi genellikle aynıdır, sadece
- Kaynak veritabanından alıntılar
- Veri Akışındaki Manipülasyonlar
- Hedef tabloyla birleşir
Ne yapabilmek istiyorum (SSIS'de zor olduğunu düşünüyorum)
- Bir metin dosyasından çıkarma sorgusunu yükleyin. Geliştiriciler ayıklama sorgularını yazarken ve test ederken, SSIS çalıştırmadan önce sorgularını herhangi bir şekilde işlememeliyim ve sorguyu bir DB Source nesnesine yapıştırmam ve yapıştırmamalıyım.
- Her bileşeni ayrı ayrı test edin. Diğer tablo yüklerinden bağımsız olarak ayrı bir tablo için ETL sürecinin tamamını test edebilmeliyim.
- Paylaşılan mantıkta tek bir yerde değişiklik yapın, her bir paketi düzenlemek zorunda değilsiniz. Her paket verileri denetim tablolarına aynı şekilde yükler, denetlenen yüklenen verileri değiştirmek istersem, 15 paketin tümünü de düzenlemek istemiyorum (bu sayı zamanla çok daha büyük olacak).
Tüm süreç, paylaşılan kodun doğru kullanımı ile programlı olarak yapılırsa, uygulamanın çok daha kolay ve daha sağlam olacağını hisseder.