14
2011
SQL Server Analiz-Entegrasyon Servis Kardeşliği (MDX-SQL)
Merhaba Arkadaşlar.
Konumuz SQL Server da Analiz Servis üzerinde bulunan küplerimizden SQL aracılığı ile veri alarak bu veriyi tablo üzerine almak olacak.
Bu işlemleri yapabilmemiz için SQL Server Analiz Servisi ve üzerinde çalışır halde bulunan bir küp ile bir entegrasyon paketine ihtiyaç duyacağız. Küpdeki verilerimizin sql üzerine alınması için ise OPENQUERY komutunu kullanacağız.
Bu komutu kullanmak amacı ile öncelikli olarak sunucu üzerinde Bağlı server (Linked Server) tanımlaması yapacağız. Bu şekilde OPENQUERY komutu içerisinde bağlı sunucumuzu göstererek MDX sorgu işletimi yapabileceğiz. Bağlı sunucuyu göstermek için SQL Server Yönetim Studyomuzu açıp bağlanıyoruz.
Burada sağ tuş ile “New Linked Server..” diyoruz ve aşağıdaki gibi pencere karşımıza çıkıyor.
Şimdi ise bilgilerimizi dolduralım ;
- Provider : Microsoft OLEDB Provider for Analysis Services 10.0
- Product Name : LINKED
- Data Source : localhost
- Catalog : MyCompanySA
Catalog kısmını doldururken Analysis servisiniz üzerinde bağlanmak istediğiniz veritabanının ismini yazıyorsunuz. Ben MyCompanySA dedim.(Siz kendi veritabanı ismini yazarsınız). Onayladıktan sonra Sunucu Objeleri içinde Bağlı sunucular (Server Objects->Linked Server) kısmında “LINKED” ismi ile bağlı sunucumuzun gelmesini bekliyoruz.
Şimdi ise Entegrasyon servisimiz ile Analysis Servisimize bağlanmak amacıyla Visual Studio Kabuk(Shell) imizi açalım ve bir entegrasyon projesi oluşturalım. Bu projeyi oluşturmak için MSSQL Döngüler yazısından faydalanabilirsiniz.
Projemizi açtıktan sonra Araç Kutumuz(Toolbox) dan Veri Akış Görevi(Data Flow Task) sürükleyip bırakıyoruz.
Resimde görüldüğü gibi Veri Akış sekmesine girip Araç Kutumuzdan OLEDB Source objesini sürükleyip bırakıyoruz. Sağ tuş ile düzenleme yapalım.
SELECT TABLO.* FROM OPENQUERY (LINKED,'Select [Measures].[Forecast Gsv] ON COLUMNS, ([t Fny Forecast].[Yil].Children as yil,[t Fny Forecast].[Donem].Children as donem) ON ROWS FROM [Forecast]') AS TABLO
Şimdi ise “OPENQUERY” komutumuzu kullanarak LINKED bağlı sunucusu ile verilerimizi OLAP Küpünden getirebiliriz. Yukarda tırnak işareti içinde MDX sorgu komutumuzu yazıyoruz bu şekilde MDX sorgusundan geri döndürülen veriyi yakalayabiliyoruz. Önizleme tuşu ile gelen veriyi görebilirsiniz.
Küpümüzdeki veriye erişmek için Script Component bileşenini kullanıyor olacağız. Bu bileşeni sürükleyip bırakdığımızda Dönüştürme yani “Transformation” seçiyoruz. Bileşeninimizi sağ tuş ile düzenliyoruz.
Bu kısımda “[t fny forecast]” kırılımlamızdan gelen Yıl ve Donem bilgilerini girdi(input) kısmından okuyup çıktı(output) kısmından hedef veri görevimize vereceğiz. Bu amaçla standart input0 ve output0 elemanlarımızı kullanacağız.

Şimdi ise aynı ekranda Girdiler ve Çıktılar(Inputs and Outputs) kısmına geliyoruz burada Output0 kısmına Kolon Ekle(Add Column) tuşu ile iki kolon ekleyelim.
İsimlendirmelerini olarak “Yıl” ve “Donem” yapalım ve “String” veritipini “CodePage” olarak “1252″ seçelim (veritabanınızın SQL_Latin1_General_CP1_CI_AS olduğunu kabul ediyorum duruma göre codepage’i değiştirebilirsiniz). Uzunluk (Length) kısmını 50 olarak bıraktık isterseniz kısabilirsiniz.
Şimdi ise ağımızdan bize blob tipinde gelen veriyi ASCII tipine çevireceğiz. By amaçla Script sekmesine gelip “Edit Script” tuşuna basalım. Burada karşımıza mini bir Visual Studio ekranı çıkacak.
Byte[] row = Row.tFnyForecastDonemDonemMEMBERCAPTION.GetBlobData(0, Convert.ToInt32(Row.tFnyForecastDonemDonemMEMBERCAPTION.Length));
Row.Donem = System.Text.Encoding.ASCII.GetString(row);
Byte[] row2 = Row.tFnyForecastYilYilMEMBERCAPTION.GetBlobData(0, Convert.ToInt32(Row.tFnyForecastYilYilMEMBERCAPTION.Length));
Row.Yil= System.Text.Encoding.ASCII.GetString(row2);
Şimdi ise bağlantı kurduğumuz veritabanında veriyi koyacağımız tabloyu oluşturuyoruz.
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[t_fny_forecast_GSV]( [Yil] [varchar](50) NULL, [Donem] [varchar](50) NULL, [GSV] [decimal](18, 2) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
Son olarak hedef veri görevimize gelip yukarda oluşturduğumuz tabloyu seçerek kolon eşleme işlemlerimizi yapıyoruz.
Bağlantı Yöneticisi (Connection Manager) dan oluşturduğumuz tabloyu seçtikten sonra Output0 dan Yil,Donem bilgilerini eşleştiriyoruz. GSV verimiz decimal olduğu için direk aktardık.
Veri akış görevimizi çalıştırdığımızda verinin tabloya aktığını göreceğiz.
Herkese iyi çalışmalar.
Kariyer
- Yazılım Geliştirme Uzmanları
MobilMutfak - Java Yazılım Uzmanı
Yapı Kredi Emeklilik - Java Yazılım Uzmanı
Universal Bilgi Teknolojileri - Yazılım Geliştirmeci ve Proje Mühendisi
Yapı ve Kredi Bankası - Java Yazılım Uzmanı
Abaküs Finansal Yaz. A.Ş















