İş Zekası Hakkında Herşey
6 Haziran 2013 Perşembe
İş Zekası Sorunlara Çözümler
SSAS'de küp için relationlara bakmaya çalıştığınızda "Damaged relationships cannot be edited. The relationship must be deleted and then re-created" şeklinde bir hata alırsanız bilgisayarda ne kadar RAM kaldığına bir bakın. Eğer yeterli memory yoksa böyle bir hata veriyor olabilir..
12 Kasım 2012 Pazartesi
SSIS Hata : The value violated the integrity constraints for the column
Yazan: Beytul Kocakaplan
Bu hata mesajı görüldüğü üzere çok fazla bilgi vermemektedir. Ayrıca baya genel bir hata mesajıdır.
Bu hata mesajı görüldüğü üzere çok fazla bilgi vermemektedir. Ayrıca baya genel bir hata mesajıdır.
[OLE DB Destination[500]] Error: There was an error with input column "ColumnName"(889) on input "OLE DB Destination Input" (521). The column status returned was : "The value violated the integrity constraints for the column.".SSIS paketinin başarısız olmasının temel sebebi (genellikle) data source'unuzdaki bir sütunun, ya da sütunların, null gelmesi ve hedef tablonuzda karşılık gelen alanın "not allow NULL values" şeklinde ayarlanmasından kaynaklanır. Bu durumu ya hedef tablonuzdaki alanın ayarını "allow NULL values" şeklinde değiştirerek ya da gelen verinizin default halini null olmayacak şekilde değiştirerek çözebilirsiniz.
12 Eylül 2012 Çarşamba
Dimension Processinde HYToo Hatası ve çözümü
Yazan: Beytul Kocakaplan
Herkese Merhaba,
Önceden düzgün çalışan SQL server analysis server üzerindeki bir dimension şu hatayı vermeye başlamıştı :
OLE DB Error: OLE DB or ODBC error: Query timeout expired; HYT00.
Bir süre araştırdıktan sonra aşağıdaki adımları gerçekleştirerek process işlemini tekrar çalışır hale getirebildim. Umarım sizlerin de işine yarar.
SQL Server Analysis Servis içerisinde "Timeout For External Data Queries" olarak tanımlanmış olan bir özelliğimiz mevcut bu özelliğimizin adı "ExternalCommandTimeOut" ve bu özelliğimize ulaşmak için ise SQL Server Management Studio'yu açıp SSAS serverımıza bağlanmamız gerekmekte.
Bağlantımızı sağladıktan sonra servera sağ tıklayarak "Properties"e tıklıyoruz.
Normal şartlarda bu özelliği göremeyebilirsiniz. Özelliği görebilmek için "Show Advanced (All) Properties" checkbox'unu işaretlemeniz gerekmekte.
Sonrasında tek yapmanız gereken buradaki Default olarak 3600 setlenmiş durumda olan value değerini daha yüksek bir değere setlemek ve Ok'e tıklamak
Değerin setlenip setlenmediğini kontrol etmek için aynı işlemi (Properties / Show Advanced) uygulayarak kontrol edebilirsiniz.
Herkese Merhaba,
Önceden düzgün çalışan SQL server analysis server üzerindeki bir dimension şu hatayı vermeye başlamıştı :
OLE DB Error: OLE DB or ODBC error: Query timeout expired; HYT00.
Bir süre araştırdıktan sonra aşağıdaki adımları gerçekleştirerek process işlemini tekrar çalışır hale getirebildim. Umarım sizlerin de işine yarar.
SQL Server Analysis Servis içerisinde "Timeout For External Data Queries" olarak tanımlanmış olan bir özelliğimiz mevcut bu özelliğimizin adı "ExternalCommandTimeOut" ve bu özelliğimize ulaşmak için ise SQL Server Management Studio'yu açıp SSAS serverımıza bağlanmamız gerekmekte.
Bağlantımızı sağladıktan sonra servera sağ tıklayarak "Properties"e tıklıyoruz.
Normal şartlarda bu özelliği göremeyebilirsiniz. Özelliği görebilmek için "Show Advanced (All) Properties" checkbox'unu işaretlemeniz gerekmekte.
Sonrasında tek yapmanız gereken buradaki Default olarak 3600 setlenmiş durumda olan value değerini daha yüksek bir değere setlemek ve Ok'e tıklamak
Değerin setlenip setlenmediğini kontrol etmek için aynı işlemi (Properties / Show Advanced) uygulayarak kontrol edebilirsiniz.
26 Haziran 2012 Salı
Slowly Changing Dimensions Nedir?
Yazan: Hüseyin Onur Özcan
Merhabalar
İş Zekasında sıklıkla kullanılan ancak amacı biraz karmaşık gelebilen bir konudan bahsetmek istiyorum.
Slowly changing Dimensions.
Bilindiği üzere veri ambarı dimension ve fact tablolarından oluşmaktadır. Dimension tablolarımız da zaman zaman verinin değişmesiyle beraber değişikliğe uğrar. Bu değişiklikleri kimi zaman saklamak önemsizken, kimi zaman saklamak çok önemli olabilir. Slowly changing dimensions genellikle değişimin oldukça nadir olduğu durumlarda kullanılır.
Slowly changing dimensions temel olarak üç kategoride incelenebilir.
1) Değişen verinin yalnızca son halinin saklanmasının gerekli olduğu durumlar
2) Verilerde değişiklik olduğundan eski kayıtların eski haliyle saklanması yenilerin yeni bir kayıtta saklanması. (Buna bir örnek verecek olursak, diyelim ki bir hastanede doçentimiz ve onun yaptığı ameliyatlar olsun. Bu doktor prof. ünvanı aldığında eski ameliyatlarını kaybetmek istemeyiz. Ancak prof. olduğunda da yeni ameliyatlı prof sıfatıyla tutmak isteriz)
3) Normal şartlar altında kullanılan bu maddede dimesionun belli bir attributeunun yanlızca son eski değerini (last old value) bilmek istediğimizde dimension tablosuna update etmeden önce son değeri kaydetmek amaçlı bir alan ekleyebiliriz.
Slowly changing dimensions nadiren değişen ve kıymetli olan değerler için kullanılmalı herşey için uygulanmamalıdır. Örneğin müşterinin adresi için slowly changing dimensions uygulanabilir ancak bir doğum tarihi değişikliğpi için saçma olacaktır.
Aynı dimension için farklı slowly changing dimensions uygulamaları da yapmak gerekebilir. Eğer aynı dimensions yaratılan farklı küpler tarafından kullanılıyorsa ETL diagramında bu konunun halledilmesi gerekir.
Şimdi de bu teorik bilgileri biraz daha pratiğe dökmeye çalışalım.
ETL de Slowly Changing Dimensions Eklediğimizde karşımıza çıkan Wizard'da gerekli ayarlamaları yapmamız gerekiyor.
Connection Manager'dan data source'u hangi dimension tablosuna uygulayacağımızı ve bu tablonun primary key( yada keylerini) seçiyoruz. İleri tuşuna basıyoruz.
Çıkan ekranda verilerimizi hangi kategoride değerlendirmek istediğimizi soruyor. İlk kısım (Fixed attribute) veriyi sabit tutup değişiklikleri hata olarak değerlendiriyor. İkinci kısım (Changing Attribute) yukarıda 1 olarak tanımlana, son kısım (Historical Attribute) ise yukarıda 2 olarak tanımlanan kategoriye giriyor. Hangisini yapmak istediğimize karar verdikten sonra dimension columnları seçip change typeı belirliyoruz.
Seçimlerimizi yapıp ileri dediğimizde çıkan ekranda fixed attribute çıktığında hata olarak değerlendirmeye bağlı olarak bu değiştirilmemesi gereken şey değişirse süreci dururup durdurmak istemediğimizi soruyor.
Alt kısımda ise changing attribute seçildiyse, değişime göre eşleşe tüm veriler üzerinde değişiklik isteyip istemediğimizi soruyor.
Bunlara da karar verip ileri tuşuna bastığımızda Inferred Dimension Members ile iligli bir kısım çıkar. Inferred Member henüz database'e yazılmamış dimension memberlara referans gösteren bir Fact Table olduğunda görülür. Veri database'e konulduğunda artık insert değil update işlemine uğrar. "Enable Inferred member Support" checkbox seçildiğinde ya bu inferred memberler başlangıçta null değeri alırlar yada bu kayıdın inferred member olması bir boolean değere bağlanır ve bu değer inferred member indicator altında seçilir.
İleri tuşuna basıldığında Özet bilgiler gelir ve Visual Studio kendi insert, update işlemlerini otomatik ayarlar.
Not: Slowly Changing Dimensions işleminde Delete işlemi otomamtik olarak oluşturulmaz.
Merhabalar
İş Zekasında sıklıkla kullanılan ancak amacı biraz karmaşık gelebilen bir konudan bahsetmek istiyorum.
Slowly changing Dimensions.
Bilindiği üzere veri ambarı dimension ve fact tablolarından oluşmaktadır. Dimension tablolarımız da zaman zaman verinin değişmesiyle beraber değişikliğe uğrar. Bu değişiklikleri kimi zaman saklamak önemsizken, kimi zaman saklamak çok önemli olabilir. Slowly changing dimensions genellikle değişimin oldukça nadir olduğu durumlarda kullanılır.
Slowly changing dimensions temel olarak üç kategoride incelenebilir.
1) Değişen verinin yalnızca son halinin saklanmasının gerekli olduğu durumlar
2) Verilerde değişiklik olduğundan eski kayıtların eski haliyle saklanması yenilerin yeni bir kayıtta saklanması. (Buna bir örnek verecek olursak, diyelim ki bir hastanede doçentimiz ve onun yaptığı ameliyatlar olsun. Bu doktor prof. ünvanı aldığında eski ameliyatlarını kaybetmek istemeyiz. Ancak prof. olduğunda da yeni ameliyatlı prof sıfatıyla tutmak isteriz)
3) Normal şartlar altında kullanılan bu maddede dimesionun belli bir attributeunun yanlızca son eski değerini (last old value) bilmek istediğimizde dimension tablosuna update etmeden önce son değeri kaydetmek amaçlı bir alan ekleyebiliriz.
Slowly changing dimensions nadiren değişen ve kıymetli olan değerler için kullanılmalı herşey için uygulanmamalıdır. Örneğin müşterinin adresi için slowly changing dimensions uygulanabilir ancak bir doğum tarihi değişikliğpi için saçma olacaktır.
Aynı dimension için farklı slowly changing dimensions uygulamaları da yapmak gerekebilir. Eğer aynı dimensions yaratılan farklı küpler tarafından kullanılıyorsa ETL diagramında bu konunun halledilmesi gerekir.
Şimdi de bu teorik bilgileri biraz daha pratiğe dökmeye çalışalım.
ETL de Slowly Changing Dimensions Eklediğimizde karşımıza çıkan Wizard'da gerekli ayarlamaları yapmamız gerekiyor.
Connection Manager'dan data source'u hangi dimension tablosuna uygulayacağımızı ve bu tablonun primary key( yada keylerini) seçiyoruz. İleri tuşuna basıyoruz.
Çıkan ekranda verilerimizi hangi kategoride değerlendirmek istediğimizi soruyor. İlk kısım (Fixed attribute) veriyi sabit tutup değişiklikleri hata olarak değerlendiriyor. İkinci kısım (Changing Attribute) yukarıda 1 olarak tanımlana, son kısım (Historical Attribute) ise yukarıda 2 olarak tanımlanan kategoriye giriyor. Hangisini yapmak istediğimize karar verdikten sonra dimension columnları seçip change typeı belirliyoruz.
Seçimlerimizi yapıp ileri dediğimizde çıkan ekranda fixed attribute çıktığında hata olarak değerlendirmeye bağlı olarak bu değiştirilmemesi gereken şey değişirse süreci dururup durdurmak istemediğimizi soruyor.
Alt kısımda ise changing attribute seçildiyse, değişime göre eşleşe tüm veriler üzerinde değişiklik isteyip istemediğimizi soruyor.
Bunlara da karar verip ileri tuşuna bastığımızda Inferred Dimension Members ile iligli bir kısım çıkar. Inferred Member henüz database'e yazılmamış dimension memberlara referans gösteren bir Fact Table olduğunda görülür. Veri database'e konulduğunda artık insert değil update işlemine uğrar. "Enable Inferred member Support" checkbox seçildiğinde ya bu inferred memberler başlangıçta null değeri alırlar yada bu kayıdın inferred member olması bir boolean değere bağlanır ve bu değer inferred member indicator altında seçilir.
İleri tuşuna basıldığında Özet bilgiler gelir ve Visual Studio kendi insert, update işlemlerini otomatik ayarlar.
Not: Slowly Changing Dimensions işleminde Delete işlemi otomamtik olarak oluşturulmaz.
21 Haziran 2012 Perşembe
A'dan Z'ye SSIS için Job Yaratılması
Yazan: Hüseyin Onur Özcan
Merhabalar
Bu yazımda sizlere SSIS ile bir günlük job oluşturup bunu nasıl uygulamaya koyacağınızı anlatmaya çalışacağım.
Öncelikle bir job oluşturmak için config dosyası oluşturmamız gerekiyor. Bunun için ana paket olarak seçeceğimiz paketi açalım. Üst kısımdaki SSIS sekmesinden 'Package Configuration' kısmını açıyoruz.
(Eğer 'Enable package Configurations' kısmı seçili değilse yeni bir config dosyası eklemek için o kısmı açmamız gerekiyor) Daha Sonra 'Add' tuşuna basarak Package Configuration Wizard'ı açıyor ve XML Configutarion Kısmını seçiyoruz.
Browse kısmına tıklayarak bin klasoru altına .dtsConfig uzantılı config dosyamızı oluşturuyoruz.
Oluşturulan config dosyamız ekrana geldikten sonra Package Configuration Wizard ekrana geliyor, buradan da config dosyamıza koyacağımız parametreleri seçiyoruz. İşi daha basit tutmak için projemizde daha önceden oluşturmuş olduğumuz bağlantıları config dosyasına tanımlamamız yeterli olacaktır. Bunun için ana projemisin altında Connection Managers altından hem ETL aktarımda kaynak olarak belirtilen datasource'u hem de dwh projemizde yazacağımız data source'u buluyoruz. Bu data source'un altında sırasıyla /Properties/ConnectionString sekmesini seçiyoruz.
Merhabalar
Bu yazımda sizlere SSIS ile bir günlük job oluşturup bunu nasıl uygulamaya koyacağınızı anlatmaya çalışacağım.
Öncelikle bir job oluşturmak için config dosyası oluşturmamız gerekiyor. Bunun için ana paket olarak seçeceğimiz paketi açalım. Üst kısımdaki SSIS sekmesinden 'Package Configuration' kısmını açıyoruz.
(Eğer 'Enable package Configurations' kısmı seçili değilse yeni bir config dosyası eklemek için o kısmı açmamız gerekiyor) Daha Sonra 'Add' tuşuna basarak Package Configuration Wizard'ı açıyor ve XML Configutarion Kısmını seçiyoruz.
Browse kısmına tıklayarak bin klasoru altına .dtsConfig uzantılı config dosyamızı oluşturuyoruz.
Oluşturulan config dosyamız ekrana geldikten sonra Package Configuration Wizard ekrana geliyor, buradan da config dosyamıza koyacağımız parametreleri seçiyoruz. İşi daha basit tutmak için projemizde daha önceden oluşturmuş olduğumuz bağlantıları config dosyasına tanımlamamız yeterli olacaktır. Bunun için ana projemisin altında Connection Managers altından hem ETL aktarımda kaynak olarak belirtilen datasource'u hem de dwh projemizde yazacağımız data source'u buluyoruz. Bu data source'un altında sırasıyla /Properties/ConnectionString sekmesini seçiyoruz.
Bu işlemi her iki datasource için de yaptıktan sonra Next tuşuna basarak ilerliyoruz. Configuration için bir isim vererek config dosyamızı yaratmayı tamamlıyoruz. Buradaki amaç connection stringleri belirleyerek bunları her pakette standard kullanıma oturtacak bir yapı hazırlamak.
Ana paketimizde config dosyamızı yarattıktan sonra ajna paketin içinde bulunan tüm paketlerde de aynı config dosyasını kullanacağımız aşamaya geçiyoruz.
Ana paketimizin altında bulunan her bir paket için en başta yaptığımız gibi sırasıyla SSIS tabına - Package Configuration'a ve Add'e tıklayıp XML configuration file seçip Browse'yi tıklıyoruz. Daha önceden bir config dosyası oluşturduğumuzdan projemizin klasorlerinden bin ile aynı yerde bulunan config dosyasını seçiyoruz ve Save tuşuna tıklıyoruz. İlgili config dosyasını seçip Next tuşuna tıkladığımızda bir ekran bize böyle bir config dosyası olduğundan bununla ilgili var olanı mı kullanmamız gerektiği yoksa üzerine yazıp değişiklik mi yapmak istediğimizi soruyor. Bir job oluşturduğumuzda esas amaç ortak bir config dosyası kullanmak olduğundan Reuse Existing tuşuna basıyoruz. Daha sonra gene bir isim vererek işlemimizi tamamlıyoruz.
Projemizde bulunan ve Ana paketimiz tarafından çağrılan her bir paket için bu işlemi tekrarlıyoruz.
Config dosyasını tüm paketlerimize uyguladıktan sonra database'de Integration Services'in altında yapacağımız işlemler kalıyor. Öncelikle Visual Studio üzerinde projemize sağ tıklayarak build etmemiz gerekiyor. Ancak burada üzerinde durulması gereken bir nokta var. Projemiz üzerinde sağ tıklayıp properties seçip çıkan ekranda Deployment Utility kısmına geldiğimizde CreateDeploymentUtility kısmının true olması gerekiyor.
Default olarak bu kısım false gelir. Bunu true yaparsak bize XML formatında bin altında Deployment klasorune bir deployment dosyası oluşturacaktır.
Build işlemi başarıyla tamamlandıktan sonra, projemizin hard disk'te ilgili kısmına girip /bin/deployment klasörüne giriyoruz. Bu Klasörün içinde paketlerimiz yanı sıra yarattığımız config dosyasının bir de Integration Services Deployment Manifest tipinde bir dosyanın oluştuğunu görebiliriz. Bu manifest dosyasını çalıştıracağız. Bunun üzerinde direk çift tıklayabileceğimiz gibi sağ tuş 'open with' seçip 'SQL Server Integration Services Package Installation Utility' seçerek de çalıştırabiliriz. Gelen ekranda SQL Server Deployment ve Validate Packages After Installation kısmını seçiyoruz.
Next diyerek devam ediyor, ve server adını seçtikten sonra aşağıda Package path kısmında SSIS packages altındaki Data Collector'u ve Rely on server storage for encryption seçiyoruz ve Next diyoruz. Default olarak gelen installation folder'ı değiştirmeden next diyoruz. Daha sonra confirm installation kısmını da geçerek paketlerimizi yüklemesini bekliyoruz. Ardından daha sonra yarattığımız config dosyasını seçiyoruz ve next diyerek deployment işleminin tamamlanmasını beliyoruz. Bu işlem projenini büyüklüğü ile doğru orantılı olarak uzun sürebilir. Kapaca processe göz atıp hatasız olduğunu görüp next diyor, hata varsa onu düzeltmek üzere solutionumuza geri dönüyoruz. Bize yapılan işlerin bir özeti çıkan son ekranda finish diyerek çıkıyoruz.
Şimdi SQL Server Management Studio açarak Object browserden Connect/Integration Services tıklıyoruz. Server'a başlandığımızda karşımıa 2 klasor çıkıyor. Bunlardan biri Running Packages, diğeri ise Stored Packages. Running packages ne işe yarar az sonra anlatacağım. Ama önce Stored Packages altında MSDB klasörünü açıyoruz. Burada Data Collector ve Maintenance Placs die iki klasor var. Hatırlarsanız biz projemizi Data Collector altına deploy etmiştik.
Birden fazla job çalıştırılacaksa tavsiye edilen bu joblari için klasör açmaktır. Bunun için MSDB üzerine sağ tıklayıp new Folder diyoruz. İsim vererek dosyamızı oluşturuyoruz. Bu dosyamızın üzerine sağ tıklayarak import package'ı seçiyoruz. Buradaki amaç Data collector altında yer alan tüm paketlerden sadece ana paketimiz i alıp diğerlerinden ayırmak. Çünkü tüm ETL akışımızı çalıştırmak amacında olduğumuzdan yanlızca ana paketimiz üzerinden job çalıştıracağız. Eğer ara paketler ayrıca çalıştırılacaksa onların da ayrı klasorler içine import edilmesi düzen açısından faydalı olacaktır.
Import package kısmına geri gelecek olursak, Import Package kısmında aşağıdaki ayarları yapıyoruz.
Burada server'ım HISBI olduğundan onu seçip, Data Collection altında ana paketim olan his'i seçtim. Sizde bunlara karşılık kendi alanlarınızı seçebilirsiniz.
Paketimizi oluşturduktan sonra, sıra geldi müstakbel job paketimizi deneme amaçlı çalıştırmaya.
Bunun için klasor içindeki paketimizi sağ tıklayıp Run Package'ı seçiyoruz ve aşağıdaki ekran karşımıza geliyor.
Burada configurations tabına tıklayıp Add diyerek yarattığımız config dosyasını tanımlıyoruz, Reporting tabında Console loging kısmında Source Name ve Message seçip, Console Event kısmıı Verbose seçili bırakıyoruz. Son olarak set values Kısmında Property Path kısmına '\Package.Properties[DisableEventHandlers]' yazıp, value kısmına True yazıyoruz ve execute kısmına basıyoruz. Bu işlem ana paket altındaki herşeyi çalıştıracağından proje büyüklüğüne göre uzun sürecektir. Ana paketin hangi aşamada olduğu Integration Services Server'ı altındaki Running packages kısmından gözlemlenebilir.
İşlemimiz hata verirse solution kısmına gidip düzeltip build edip diğer işlemleri tekrarlayarak yeniden bu aşamaya gelmemiz gerekiyor.
İşlemi sorunsuz tamamladıysak artık job için schedule ayarlama kısmına geçebiliriz.
Bunun için kısa bir ön hazırlık yapmamız gerekecek. Normal dwh databaseimize bağlanıp Security altında Credentials kısmından bir credential ayarlıyacağız. Bunun için sağ tıklayıp new credential dedikten sonra kullanıcımızı seçip şifresini giirip bir credential yaratıyoruz. Daha sonra SQL Server Agent altında SSIS Package Execution altına New Proxy diyoruz. Bir proxy ismi verip Credential name kısmına daha önce yarattığımız credentialı veriyor, Active to following subsystems kısmından SQL Server Integration Services Package'ı seçiyoruz.
Şimdi Job yaratmak için hazırız. SQL Server Agent altında, Jobs klasoru altına new Job diyoruz. Gelen ekranda Job'umuza bir isim veriyoruz. Daha sonra Step sekmesine gelip aşağıdaki ayarları yapıyoruz.
Run as kısmına az önce yarattığımız proxy'yi seçiyorz. Package kısmına da oluşturduğumuz klasor altındaki ana paketimizi veriyoruz. Daha sonra daha önce yaptığımız gibi configuration sekmesinden config dosyasını, set values kısmına da yukarıda bahsedilen ayarı yapıyoruz ve OK tuşuna basıyoruz.
Böylelikle job'umuz hazır. Schedules kısmından ne zaman çalışacağını, Alets ve Notifications kısmından da gerekli ayarlamaları opsiyonel olarak yapabilir.
Herhangi bir sorunuz olursa blogdan bana ulaşabilirsiniz..
1 Haziran 2012 Cuma
Saat Kırılımına Kadar İnen Tarih Hiyerarşisi
Yazan: Hüseyin Onur Özcan
Yıl - Yarı Yıl - Çeyrek - Ay - Gün - Saat Kırılımı olan tarih hiyerarşisi için query örneği
set datefirst 1
set language Turkish
declare @tarih datetime
set @tarih = '01/01/2000'
declare @saat int
set @saat = 0
while @tarih < '01/01/2020'
begin
set @saat = 0
while @saat < 24
begin
INSERT INTO [HIS_DWH].[dbo].[DT_Tarih]
([tarih]
,[saat]
,[gun]
,[ay]
,[yil]
,[gunun_adi]
,[ceyrek]
,[yariyil]
,[ayin_adi])
VALUES
(@tarih
,@saat
,datepart(d, @tarih)
,datepart(m,@tarih)
,datepart(yyyy,@tarih)
,datepart(dw,@tarih)
,datepart(q,@tarih)
,case datepart(q,@tarih) when 1 then 1 when 2 then 1 else 2 end
,datename(month, @tarih))
/*
insert into dbo.DT_Tarih
values
(datepart(yyyy,@tarih), datepart(m,@tarih), datename(month, @tarih),
datepart(ww,@tarih), datepart(d, @tarih), @saat)
*/
set @saat = @saat + 1
set @tarih = DATEADD(HH, 1, @tarih )
end
--set @tarih = @tarih + 1
end
--select * from DT_Tarih
Yıl - Yarı Yıl - Çeyrek - Ay - Gün - Saat Kırılımı olan tarih hiyerarşisi için query örneği
set datefirst 1
set language Turkish
declare @tarih datetime
set @tarih = '01/01/2000'
declare @saat int
set @saat = 0
while @tarih < '01/01/2020'
begin
set @saat = 0
while @saat < 24
begin
INSERT INTO [HIS_DWH].[dbo].[DT_Tarih]
([tarih]
,[saat]
,[gun]
,[ay]
,[yil]
,[gunun_adi]
,[ceyrek]
,[yariyil]
,[ayin_adi])
VALUES
(@tarih
,@saat
,datepart(d, @tarih)
,datepart(m,@tarih)
,datepart(yyyy,@tarih)
,datepart(dw,@tarih)
,datepart(q,@tarih)
,case datepart(q,@tarih) when 1 then 1 when 2 then 1 else 2 end
,datename(month, @tarih))
/*
insert into dbo.DT_Tarih
values
(datepart(yyyy,@tarih), datepart(m,@tarih), datename(month, @tarih),
datepart(ww,@tarih), datepart(d, @tarih), @saat)
*/
set @saat = @saat + 1
set @tarih = DATEADD(HH, 1, @tarih )
end
--set @tarih = @tarih + 1
end
--select * from DT_Tarih
10 Mayıs 2012 Perşembe
SSRS içinde Multi-Line Özelliği
Yazan: Beytul Kocakaplan
Raporlar içerisinde bazen alt satıra geçiş yapma ihtiyacı duyulabilir. Böyle durumlarda aşağıdaki yöntem ile satır kırılımını gerçekleştirmek mümkün.
TextBox'ımıza gelecek olan textimiz aşağıdaki gibi olsun.
Raporlar içerisinde bazen alt satıra geçiş yapma ihtiyacı duyulabilir. Böyle durumlarda aşağıdaki yöntem ile satır kırılımını gerçekleştirmek mümkün.
TextBox'ımıza gelecek olan textimiz aşağıdaki gibi olsun.
select 'Bu\rYazi\rAlt\rSatirlara\rKayacaktır' as StringTextBox'ımızın expression kısmına gelip şöyle diyelim:
=First(Fields!string.Value).Replace("\r"VbCrLf)Raporu Renderladığımızda TextBox'ımızın içeriği aşağıdaki gibi görünecektir.
BuUmarım işinize yarar :)
Yazi
Alt
Satirlara
Kayacaktır
Kaydol:
Kayıtlar (Atom)










