PIVOT TABLE



Rapor halindeki verilerin daha anlaşılır biçimde görünmesini sağlamak amacıyla pivot tablolar kullanılır. Pivot tabloda satırları sütun haline dönüştürüp, dataların daha kolay yorumlanması sağlanır.

Pivot tablonun yazım formatı aşağıdaki gibidir.

SELECT
[sutun1],
[sutun2]
...
FROM (
SELECT       -- select cümlesi ile pivot sql sorgusu.
) AS TableAlias   -- Tablo için takma ad.
PIVOT
(
<MIN,MAX,SUM,COUNT...gibi fonksiyonlar>(yapılacak işlem göre yer alacak sütun veya sütunlar)
FOR [Pivot tablo sütunları için sütun adını içeren değer veya değerler]
IN (
[sutun1], ... ,[sutun5]     -- görüntülenecek sutunlar
)
) AS PivotTableAlias     -- Pivot tablo için verilen takma ad.
ORDER BY clause       -- tercihe göre isterseniz belli bir kritele sıralamada yaptırabilirsiniz.

Adventure Works databaseini kullanarak pivot tablo kullanımı aşağıdaki şekilde özetlenebilir.
Pivot table kullanmadan örnek bir query yazarsak;

select PC.Name,P.Color,count(*)  ProductCount
from Production.Product P
inner join Production.ProductSubcategory PSC on PSC.ProductSubcategoryID=P.ProductSubcategoryID
inner join Production.ProductCategory PC on PC.ProductCategoryID=PSC.ProductCategoryID
group by PC.Name,P.Color

Sonuç aşağıdaki şekilde bir tablo olur.


 Bu tabloda Product Category ve Color bazında ProductCount hesabı bulunmaktadır.
Bunun yerine pivot tablo kullanılsaydı query şu şekilde olabilirdi.

select *
from
(
select PC.Name,P.Color, P.ProductID
from Production.Product P
inner join Production.ProductSubcategory PSC on PSC.ProductSubcategoryID=P.ProductSubcategoryID
inner join Production.ProductCategory PC on PC.ProductCategoryID=PSC.ProductCategoryID
) as DataTable
pivot
(
 count(ProductID)
for Name
IN ([Bikes],[Components],[Clothing],[Accessories])
)
as PivotTable

Sonuç da aşağıdaki şekilde olur.



Bu tabloda Color bazında ve ProductCategory bazında ProductCount ı görmek ve yorumlamak, pivot tablo olmadan yapılan querydeki sonuca göre daha kolaydır.

OLAP, OLTP, DATAWAREHOUSE



OLTP (On Line Transactional Processing) sistemler genellikle ilişkisel veri tabanları üzerine kurulmuş, üzerinde sürekli işlem yapılan veritabanları sistemleridir. Adından da anlaşılacağı gibi çok fazla transactional işlemler içeren yani insert, update,delete şeklide DML işlemleri içeren veri depolama sistemleridir. OLTP sistemlerde sürekli yoğun işlemler yapılır. Sağlam bir ilişkisel yapı üzerine kurulmuş sistemlerdir. Günlük hayatta kullanılan sistemlerin çoğu OLTP ürüne kurulu sistemlerdir.

OLAP (On Line Analytical Processing), ilişkisel veri tabanın aksine veriyi tekrarlayarak oluşturulan, veriyi bu şekilde depolayan, raporlama ve analiz için kullanılan, veriye hızlı erişim sağlayan yapılardır. Flat file mantığıyla çalışır. İş zekası çözümleri için OLAP kullanılır.
Database yapısı verileri depolamak, işlemleri hızlı bir şekilde yapmak, sistemleri çalıştırmak için oluşturulur. OLAP yapısı ise daha yüksek performansla, varolan verileri anlamladırmayı ve raporlamayı sağlar.

OLTP sistemler geçmişe yönelik, birden fazla boyutta rapor oluşturmada, farklı bakış açılarında analiz yapmada zorlanırlar. Bu nedenle raporlama sistemlerinde OLAP tercih edilir. OLAP sistemlerinin hızlı çalışma sebebi, verilerin daha önceden hesaplanmış bir şekilde bulunmasıdır. OLAP istenilecek verileri yani ölçümleri (measure), istenilen boyutlarda (dimension) küp (cube) adı verilen ortamlarda tutar.
OLTP sistemlerde sorgulama dili olarak TSQL kullanılırken, OLAP sistemlerinde MDX (MultiDimensional Expression) dili kullanılır.
OLAP sistemleri karar destek sistemlerinde kullanılır ve OLTP sistemlerine göre eş zamanlı birden fazla kullanıcıya daha performanslı sorgu sonucu verir.

Datawarehouse (veri ambarı) kısaca, bir kurumdaki birden fazla departmanın datasını içinde bulunduran, dataların denormalizasyon yapılarak tutulduğu yapıdır. Veri ambarı oluşturma sürecinde ETL (Extract, Transform, Load) kullanılır. Extract, çeşitli kaynaklardan gelen verileri ayırt eder. Transform, veriyi istenilen formata dönüştürür. Load ise veriyi veri ambarına yükler.

Veri ambarından elde edilen, örneğin bir şirketteki bir departmana ait dataya Data Mart denir. Data Mart lar veri ambarının bir alt kümesidir.
Veri ambarındaki verilerin OLAP sistemleri kullanılarak çeşitli analizler yapılmasıyla Veri Madenciliği (Data Mining) ortaya çıkar. Veri madenciliği geçmişe dönük dataların birden çok boyutta ve metotla analiz edilmesiyle, geleceğe dönük öngörülerde bulunmaktır.