Power BI’da Veri Dönüştürme İşlemleri
Herkese merhaba! Geçen ay ilkini yayınladığım yazının devamında tekrar sizlerleyim.
İlk yazımızda Power BI’a giriş yapmıştık. Tam olarak ne olduğunu, nelerden oluştuğunu, neler yapabildiğimizi söylemiştik.
Bu yazıda Power BI’a veri nasıl alınır, hangi veri kaynaklarını kullanabiliriz, veri dönüştürme işlemleri nasıl yapılır gibi soruların yanıtlarını vermeye çalışacağım.
O halde başlayalım.
Power BI’da görselleştirmeye başlamadan önce bir veri almamız gerekmektedir. Bunun için bir veri kaynağına bağlanmalıyız. Power BI’da veri kaynakları çok çeşitlidir. Bunlardan bazılarını aşağıdaki gibi sıralayabiliriz.
- Excel
- SQL Server Veritabanı, SQL Server Analysis Services Veritabanı
- Access Veritabanı
- Metin/CSV, XML, JSON, PDF dosyaları
- Oracle veritabanı
- SAP HANA Veritabanı, SAP BW Sunucusu
- Azure SQL Server Veritabanı, Veri ambarı, Analysis Services veritabanı
- Google BigQuery
Veri kaynakları bununla sınırlı değil. Bunların haricinde çeşitli veri kaynakları var. Bu veri kaynaklarının listesine üst menüden “Veri Al” butonuna tıklayıp en alttaki “Daha Fazla”ya tıklayarak ulaşabiliriz.
En çok kullanılan veri kaynaklarından biri SQL Server’dır. Biz de örneğimiz için bunu kullanacağız. AdventureWorks2016 veritabanı ile çalışacağız. Bilmeyenler için kısa özet geçeyim; AdventureWorks veritabanı içinde örnek verilerin (satış, üretim, ürün, vs.) olduğu herkese açık bir veritabanıdır. Microsoft’un resmi sitesinden indirilebilir, kaynaklar kısmında bulabilirsiniz.
Yukarıdaki ekran görüntüsünde yer alan “SQL Server Veritabanı”nı seçip Bağlan diyoruz.
Açılan ekranda bizden sunucu ve veritabanı bilgilerini istiyor. Burada birkaç kavramı açıklayalım. Power BI, veri alırken iki seçenek sunar. Bunlar Import Modu (İçeri aktarma) ve Direct Query’dir. Import modunda seçilen tablolar ve sütunlar Power BI Desktop’a aktarılır. Bir görselleştirme oluşturduğumuzda veya mevcut bir görsel ile bir işlem yaptığımızda Power BI, içeri aktarılan verileri kullanır. Verilerde bir değişiklik gerçekleştiğinde verileri yenilememiz ve veri kümesinin tamamını içeri aktarmamız gerekir.
Direct Query’de ise herhangi bir veri aktarılmaz veya kopyalanmaz. Bir görsel oluşturduğumuzda veya var olan bir görsel ile ilgili işlem yaptığımızda Power BI, temel alınan veri kaynağını sorgular. Yani tüm istekler kaynak veritabanına gönderilir. Örnek olarak bir SQL kodunu kaynak olarak kullandığımız zaman DirectQuery’yi seçersek, Power BI her işlemde bu SQL sorgusunu çalıştırarak güncel verileri döndürür. Bu yüzden sorgu performansı önemlidir. Tüm verilerin önceden toplanarak içeri aktarmanın mümkün olmayacağı çok büyük veri kümeleri söz konusu olduğunda DirectQuery avantajlı olabilir, ancak Direct Query’nin bazı kısıtlamaları vardır. Bu kısıtlamalar düşünülerek seçim yapılmalıdır.
Veri aktarma metotlarını açıkladıktan sonra devam ediyoruz. Verilerimiz büyük olmadığı için Import yöntemini seçeceğiz. Aşağıda yer alan SQL Deyimi yerine bir sorgu yazabiliriz. Özellikle sorgumuz karmaşıksa buraya sorguyu yazmamız gerekir, eğer bir tablonun tamamını seçeceksek devam edebiliriz.
“Tamam” butonuna bastığımızda AdventureWorks veritabanındaki tüm nesnelerin listesi açılacaktır. Burada tablolar içinden “SalesOrderHeader” tablosunu seçiyoruz, ardından sağ altta işaretlediğim “Veri Dönüştürme” butonuna tıklıyoruz. Eğer hiçbir dönüştürme işlemi yapmayacaksak direkt olarak “Yükle” de diyebiliriz.
Sorgu düzenleyicisi ekranı veri dönüştürme için kullanılır. Burada ihtiyacımıza uygun işlemler yapabiliriz. Örneğin sütunların veri tiplerini değiştirme, istenilen sütunları kaldırma, hesaplamalara dayanan ek sütunlar oluşturma, sütunları belli ayraçlara göre bölme, sütunları gruplama gibi birçok işlem yapılabilir. Burada bazı işlemleri açıklayalım. Örneğin istemediğimiz sütunları kaldıralım. “CreditCardID”, “CreditCardApprovalCode” ve “CurrencyID” sütunlarını seçip “Sütunları Kaldır” butonunun altındaki kulakçığa tıklayıp “Sütunları Kaldır” kısmına tıklıyoruz ve sütunları kaldırmış oluyoruz.
Veri dönüştürme ekranında yaptığımız işlemleri geri alabiliriz. Burada şunu belirtmekte fayda var. Bu ekranda yaptığımız her dönüşüm işlemi ekranın sağ tarafında yer alan “Uygulanan Adımlar” kısmına bir adım olarak eklenir. Örneğin biz sütunları sildikten sonra sağ tarafta “kaldırılan sütunlar” adıyla bir adım eklenecektir. Silme işlemini geri almak için bu adımın yanındaki “X” işaretine tıklamak yeterlidir. Buraya tıkladığımızda sildiğimiz sütunlar geri gelir.
Başka bir örnek daha yapalım. “Order Date” sütununun yıl olarak parçasını alalım. Bunu diğer bir yolla DAX ifadesi yazarak da yapabiliriz fakat bu editör yardımıyla yapmak oldukça kolay.
“Order Date” sütununu seçip yukarıda “Sütun Ekle” menüsüne geliyoruz. Sağda yer alan menülerden Tarih menüsünden Yıl’a tıklayarak “Order Date” sütununun yıl parçasını üretmiş oluyoruz. Bu yolu takip ederek Ay ve Gün parçalarını da alabiliriz.
Son örnek olarak bazı sütunların veri tiplerini değiştirelim. “CustomerID” sütununun veri tipi şu anda tamsayı, biz bunu Metin olarak değiştireceğiz. Bunu yapmak için yine sütunu seçiyoruz ve yukarıda “Dönüştür” menüsünde yer alan “Veri Türü: Tamsayı” yazan yere tıklayıp istediğimiz veri tipini seçiyoruz.
Yaptıklarımızın özetini yapacak olursak; Power BI’a nelerin veri kaynağı olarak verilebileceğini, verilerin nasıl alınacağını, verilerin hangi yollarla alınabileceğini (Import-DirectQuery), veri dönüştürme işlemlerinde nelerin yapılabileceğini, sütun kaldırma, sütun ekleme ve sütun veri tipi değiştirme gibi işlemleri gördük.
Bir sonraki yazımızda DAX kavramına giriş yapacağız ve hesaplanmış sütun, metrik gibi kavramlara değineceğiz.
Kaynaklar
[1] https://docs.microsoft.com/tr-tr/power-bi/connect-data/desktop-use-directquery
Merhabalar, size Power BI hakkında bir şey sormak istiyorum. Şu anda yurtdışında Power BI ile ilgili bir rapor hazırlıyorum. Ancak projeyi tamamlamam için internetten gerçek hayattan örnek olarak büyük şirketlerin Power BI ile verilerini nasıl kullandıklarını verileri nasıl crosladıklarını Power BI da göstermemi istiyorlar. Ama bunu nasıl yapacağımı bilmiyorum. Bu konu hakkında bana bir tavsiye verebilir misiniz?