Herkese merhaba,
Bir önceki postta M diliyle web API’dan xml veya json dizileriyle veri aktarımına bakmıştık. Şimdi ise İlişkisel veritabanından nasıl veri çekeceğimize bakalım ama öncesinde işilkisel veri tabanı nedir ile başlayalım.
İlişkisel veri tabanları adından da anlaşılacağı üzere veriler arası ilişki kurulabilen veritabanlarıdır. En tipik özellikleri
- Veriler tablolarda saklanır
- Çoğunlukla ama çoğunlukla sorgulama için structured query language (yapısal sorgu dili) kullanılır.
- Tabloların birleştirilmesini destekler. Genelde aradığımızı tek tabloda bulamayız, bu durumda tabloların birleştirilmesi işimizi kolaylaştırır.
- Ad-hoc query (geçici sorgu) desteklenir. Adı üzerinde sorgu öncesinde belirlenmeyen, sorgu anında bilgi almak için oluşturulan sorgulardır.
Piyasada yaygın olarak kullanılan bazı ilişkisel veritabanlarından bahsedelim. Bunlardan bazısı ücretsizken bazısı da güzel paralar alıyor.
- SQL Server: Microsoft tabanlı olduğu için power query’yi güzel destekleyen ilişkisel veritabanıdır. SQL Server’a benzer Cosmos DB var ancak M dili kullananlar için SQL idealdir.
- Oracle: Kurumsal ilişkisel veritabanıdır. Genelde büyük firmalar Oracle tercih eder, pahallı olduğunu belirtmeliyim.
- MySQL: Genelde wordpress blogları, wikipedia gibi web tabanlı yaygın bir kullanımı var ve Oracle tarafından satın alındı. Ücretsiz olması popülerliği de beraberinde getiriyor.
- Postgres: MySQL’e benzer ancak MySql’den daha tutarlı. Open source bir veritabanıdır.
Veri aktarımına geçmeden önce bilisayarınızda SQL Server Management Studio yoksa buradan yükleyebilirsiniz. Örneklerimde hem AdventureWorks2014 hem de NorthwindDB‘yi kullanıyorum. Bu database’ler hazır örnek databaselerdir ve .bak dosyalarını GitHub‘ımdan indirebilirsiniz.
Microsoft SQL Server’ı, Power BI’ı, power query’yi ve M dilini kendi içinde güzel bir şekilde desteklediği için tercih ediyorum. Şimdi gelelim Power BI Desktop’dan SQLServer’da yer alan Northwind DB’ye bağlanıp veri aktaralım ve M kodda neler döndüğüne bakalım.
Power BI Desktop tap menu > Get Data > SQL Server
Açılan pencerede Sunucu adını ve verileri çekmek istediğim database’in-ki benim durumumda veritabanına “NORTHWND” yazıyorum ve verileri içeri aktarıyorum. DirectQuery’ye daha sonradan değineceğim.

Northwind DB’den içinde çalışan bilgilerinin yer aldığı Employee tablosunu Power BI Desktop’a aktardım ve gelişmiş sorgulayıcıda (advanced editor) açtım. Karşıma çıkan bu query’yi çalıştıran M kodlarını inceliyorum.

İlk satır Source = Sql.Database(“\SQLEXPRESS”, “NORTHWND”), bize verilerin kaynağının Sql.Database fonksiyonuyla SQL olduğunu söylüyor yani erişim sağladığımız sunucunun adresini görüyoruz. İkinci satırda veritabanını ve tabloyu alıyoruz. Mesela ikinci satırdan [Data]’yı sildiğimde bana verilerle ilgili kayıt göstermekte. Aslında M language ile manipüle etmek bu kadar kolay.

Mesela aktardığım database’de Categories satırında tabloyu tıkladığımda bana Category tablosunu açması yapıyla tabloların nasıl sarmal şekilde iç içe girdiğini göstermekte.

