Power BI ‘da XML İle Veri Alma İşlemi (Get Data From Web)
Bazen raporlarımızda web sitelerinde bulunan verilere ihtiyaç duyarız.(Döviz Kurları, Hava Durumu, Fiyat Bilgileri vb.) İşte bu verileri XML ile çekerek raporlarımızda göstermek Power BI’ ın oldukça fonksiyonel özelliklerinden biridir.
Bu sebepten bu yazımda, genelde kolay gibi görünen fakat hatalarla karşılaşılan bu veri alma özelliğini anlatmaya çalışacağım.
Bu seferki senaryomuzda, Merkez Bankasından günlük kurların çekilip raporlarda kullanılması örneğini vereceğim.
Power BI ‘da XML İle Veri Alma (Get Data From Web)
- Power BI Desktop uygulamasında Get Data bölümünden Web sekmesi seçilir.
2. Burada açılan ekranda kullanmak istediğimiz web adresini ekleyip ve OK butonuna basıyoruz.
3. Eğer web adresinizi yanlış yazma gibi bir hata yapmadıysanız aşağıdaki gibi bir ekranla karşılaşacaksınız. Düzenleme kısmını daha sonra yapacağımız için bu bölümde Edit yerine Load butonunu tıklayarak devam ediyoruz.
4. Yeri gelmişken XML ile veri çekmenin diğer bir yolundan daha bahsetmek istiyorum. Kod bölümüne yazılacak bir kod parçası ile de bu işlemi gerçekleştirebiliriz. Aşağıdaki ekranda göründüğü gibi Get Data bölümünden Blank Query sekmesi seçilir.
5. Açılan Edit Queries ekranında kod yazılabilen ilgili bölüme ;
=Xml.Tables(Web.Contents(http://www.tcmb.gov.tr/kurlar/today.xml)) şeklinde kod yazılarak yukarıda yapmış olduğumuz XML veri ekleme işleminin aynısı gerçekleştirilebilir. (Kullanılan dil M Dilidir. Zaman buldukça bu dil ile ilgili eğitim yazıları da yazmaya çalışacağım.)
6. Artık veri alacağımız siteden XML ile verileri çekmiş olduk. Bu bölümden sonra raporlarımızda kullanmak istediğimiz verilerle ilgili bazı ayarları yapmamız gerekebilir. Şimdi onlardan bahsetmek istiyorum.
Aşağıdaki ekranda görüldüğü üzere eklenen verinin tarihsel bilgileri (5.12.2017) ve bu veriyi matris şeklinde barındıran table isimli link bulunmaktadır. Bu bölümü tıklayarak veri kümesini inceliyoruz.
Ayrıca eklenen Query ‘ i isimlendirmek çok sayıda veri kümesi içeren bir .pbix dosyasında verileri takip edebilmek ve hızlı ulaşabilmek açısından son derece önemlidir. Bu değişikliği Edit Queries ekranının sağ tarafından PROPERTIES – Name bölümünden yapabiliriz.
7. Veri kümesini incelediğimizde çapraz kurların (Cross Rate) yanı sıra, Döviz kurlarının Türk Lirası karşılığının Döviz Alış-Satış (Forex Selling –Buying) ve Efektif Alış-Satış (Banknote Selling-Buying) şeklinde oluştuğunu görüyoruz.
Applied Steps Bölümünün Kullanımı
8. Bu tablodaki verilerin hepsine ihtiyaç duymuyor olabiliriz. Bu kolonların bazılarının gelmesini istiyorsak birkaç adımda bu işlemi gerçekleştirebiliriz.
Bu adımı daha önce gerçekleştirebilirdik fakat hem çekilen XML verisinin tamamını görmek için hem de Applied Steps bölümünün kullanımını anlamak açısından bu işlemi bu bölümde ayrı olarak göstermek istedim.
Sağ tarafta bulunan Applied Steps bölümünden Changed Type adımına tekrar dönelim.
9. Veriyi ilk eklediğimiz andaki ekrana Applied Steps ile geri giderek tekrar görüntülemiş olduk. Veriler üzerinde yaptığımız değişiklikleri bu bölümden iptal edebilir, eski haline döndürebiliriz.
Bu bölümde Currency kolon başlığının yan tarafında bulunan çift ok simgesine tıklıyoruz.
10. Açılan pencerede çekilen XML verisinin içerisinde bulunan tüm kolonlar görüntülenir. Verisine ihtiyacımızın olduğu kolonlar işaretlenir. Ayrıca pencerenin alt bölümünde bulunan Use original column name as prefix ifadesi seçili kalır ise seçmiş olduğumuz kolonların hepsinin önüne table’ ın ismi eklenir. (Currency.İsim, Currency.CurrencyName vb.)
11. Applied Steps Bölümünün Kullanımı başlığını burada sonlandırıp, günlük dolar kurunun ve Euro/Dolar çapraz kurunun raporlara eklenmesi adımına tekrar devam ediyorum. Currency Table’ ını görüntülemek için Table linkini tıklıyoruz.
12. Gelen matriste kullanmak istediğimiz döviz kurunun ki burada ilk olarak ABD Dolarının – TL karşılığını almak istiyorum. Bu sebepten örnek raporumuzda ABD Dolarının TL karşılığının Efektif Alışını (BanknoteBuying) raporumda kullanacağız.
13. Bunun yanı sıra Euro/Dolar çapraz kurunu da raporumuzda kullanabileceğimiz için EURO’ nun, ABD Doları çapraz kurunun (Currency.CrossRateUSD) bulunduğu alanı da seçiyoruz.
14. Tüm bu işlemlerden son aşağıdaki ekranda göründüğü üzere Günlük ABD Dolar kurunun Türk Lirası karşılığını ve EUR-ABD Doları çapraz kurunu raporumuza eklemiş olduk.
15. Burada atlanmaması gereken önemli bir husus bulunmaktadır. Gelen verideki değerde (3.8597) basamak değerleri nokta ile ayrılmıştır.
Power BI’ da bu ayırma işlemi virgül ile yapıldığı için bu uyumsuzluğu giderecek bir işlem yapmamız gerekir. Bu sebepten Element:Text diye adlandırılmış kolon başlığa sağ tıklanır ve açılan menüden ReplaceValues… seçilir.
16. Açılan ekranda .(nokta) yerine ,(virgül) yazılmasını sağlayan bölümler doldurulur ve OK butonuna basılır.
Value To Find –> .
Replace With –> ,
17. Son olarak alınan kur değerinin üzerinde matematiksel işlemler yapılabilmesi için Text olan Veri Tipinin Decimal Number olarak değiştirilmesi gereklidir. Bu işlem için aşağıda yer alan ekran görüntüsündeki işlem yapılır.
18. Edit Queries ekranındaki işlemlerimizi tamamlamış olduk. Close & Apply diyerek kaydedip çıkıyoruz.
19. Artık Power BI Desktop ekranından bulunan Fields bölümünde yer alan kur verilerini PowerBI Görselleri (Visualizations) ile birlikte kullanabiliriz.
Power BI ‘ da Web‘ ten veri alma işlemi ile ilgili olarak bir çok örneği barındıran Power BI’ da Euroleague Analizi (Euroleague Analysis) başlıklı yazımı da inceleyebilirsiniz.
Ayrıca bu yazımın devamı sayılabilecek; web sitesinden veri çekerek çeşitli matematiksel ve dönüşüm işlemlerini DAX fonksiyonları ile gerçekleştirip, Measure ve Column ‘lar oluşturduğum, Power BI ‘da DAX ile Measure ve Column Kullanımı başlıklı yazımı incelemenizi tavsiye ederim.
Umarım sizin için faydalı bir yazı olmuştur. Görüşlerinizi, önerilerinizi ve sorularınızı yorum bölümüne yazabilirsiniz. Vakit buldukça cevaplamaya çalışacağım.
Görüşmek dileğiyle…
Harikasınızı , kamu yararına o kadar yararlı bir çalışma yapıyorsunuz ki çok teşekkür ederiz.Bugün keşfettim sizi bundan sonra takip amaçlı radarımdasınız :)
Güzel yorumunuz için teşekkür ederim. Yararlı olabiliyorsam ne mutlu bana :) Böyle yorumlarınızı gördükçe ben de mutlu oluyorum ve bu blog için daha çok çabalıyorum. Takipte kalmanız dileğiyle…
Webden veri alma ayağında sıkıntı var aslında.Her web sitenin herhangi bir bölümünden neden veri alamıyoruz ?
Merhaba Eser Bey,
Web’ den veri alabilmek için web sitesinin içerisinde tablo yapısında verilerin olması gerekiyor. Aksi takdirde her veriyi çekemezsiniz.
Örnek olarak https://powerzeka.com/power-bi-examples/power-bi-euroleague-analysis/ yazımı incelerseniz Euroleague web sitesinin ana sayfasında o kadar çok veri varken, tablo olarak yer alan puan durumu (sıralama) tablosunu çekebiliyoruz. Genel oalrak bu da ihtiyaçları karşılayacaktır.
Ne gibi bir sorunla karşılaştınız tam olarak bilmiyorum ama umarım sorunuzu cevaplayabilmişimdir. Görüşmek üzere. Teşekkür ederim.
Merhaba,
Power BI ‘da XML İle Veri Alma İşlemi (Get Data From Web) başlıklı yazınızı okudum. Bu güzel paylaşımınız için teşekkür ediyorum. Emeğinize sağlık.
Yazınızda TCMB üzerinden o güne ait döviz kurlarının nasıl alınacağını anlatmışsınız. Anlattıklarınız üzerinden geçmişteki herhangi bir tarih için veri almayı denedim ama http://www.tcmb.gov.tr/kurlar/today.xml adresinden sadece bugünkü kurlara erişebiliyorum.
Örneğin 29.06.2018 Günü Saat 15:30\’da Belirlenen Gösterge Niteliğindeki Türkiye Cumhuriyet Merkez Bankası Kurlarını nasıl sorgulayabilirim?
İyi çalışmalar dilerim.
Merhabalar,
Güzel yorumunuz teşekkür ederim. Destekleriniz sayesinde daha çok kişiye yardımcı olmayı hedefliyorum.
Benim makalede belirttiğim adres o günkü güncel kuru vermektedir.
Fakat siz http://www.tcmb.gov.tr/kurlar/kur2018_tr.html adresinden 2018 yılının herhangi bir gününe ait kurlara ulaşabilirsiniz.
Takipte kalmanız dileğiyle…
Teşekkür ederim.
İyi çalışmalar.
Merhabalar,
PowerBI ile ilgilenmekteyim ancak veri seti bulurken zorlanmaktayım. Tavsiyelerinizi rica ederim.
Merhaba Hakan Bey,
Genelde Power BI ile ilgilenen arkadaşların yaşadığı bu sıkıntıyı dile getirdiğiniz için size teşekkür ederim. Daha önce bu konuda powerzeka.com‘ a mail gönderen arkadaşlar da olmuştu bu sebepten bir daha ki veri kaynağı ile ilgili örneklerin olduğu bir yazımda, bilgi birikimi olması açısından bundan bahsedeceğim.
Genel olarak benim de çalışmalarımı yaparken kullandığım web sitelerinin bazılarını aşağı bölümde link olarak yazıyorum. Umarım faydalı olur.
Takipte kalmanız dileğiyle…
https://www.google.com/publicdata/directory
https://www.kaggle.com/
https://www.data.gov/metrics
Merhaba,
Açıklayıcı anlatımınız için teşekkür ederim. 12. maddede belirtildiği şekilde dolar kurunu seçebiliyorum ama ayrıca 13. maddede Euro kurunu da seçemiyorum. Shift, Ctrl, Alt vb tuşları basılı tutarak denedim yine olmadı. Bu ikili seçim nasıl yapılıyor?
Merhaba Selçuk Bey,
Öncelikle yorumunuzu çok geç gördüğüm için üzgünüm. Anladığım kadarıyla aynı ekranda hem Dolar/TL paritesini hem de Euro/Dolar paritesini seçmeye çalışıyorsunuz. Haklısınız anlatımdan dolayı öyle yapmış olduğum düşünülebilir. Fakat ben bu iki pariteyi ayrı ayrı alarak daha sonra işlemlere tabi tuttum. Umarım sorunuzu doğru anlamışımdır. Başka sorunuz olursa lütfen iletiniz. Umarım yardımcı olabilmişimdir. İyi çalışmalar.