Power Query ile YKB Döviz Kurlarını Listeleme, M kodları kullanarak Yapı ve Kredi’nin web sitesinden kur bilgisini yazdırmayı öğretmektedir
Power Query ile YKB Döviz Kurlarını Listeleme (Detaylı M Kodu Rehberi)
Döviz kurları, dalgalı yapıları nedeniyle takibi dikkat gerektiren finansal göstergelerdir. Özellikle ticari faaliyetler, yatırımlar veya kişisel tasarruflar dövize endeksli olmaktadır. Anlık ve geçmiş kur verilerine erişim büyük önem taşımaktadır. Bu tür verilerin web sitelerinden manuel olarak kopyala-yapıştır yöntemiyle toplanmaktadır. Ancak bu durumlar zaman alıcı ve hataya açık bir süreç olabilmektedir. Microsoft Excel’in etkili araçlarından biri olan Power Query (Veri Al ve Dönüştür) bulunmaktadır. Bu aracın kullandığı güçlü M dili sayesinde, bu işlemler önemli ölçüde otomatikleştirilebilmektedir.
M kodları Yapı Kredi Bankası’nın web sitesinden canlı döviz kurlarının (EUR, USD, Altın/XAU) Excel’e nasıl çekileceğini açıklamaktadır. Bununla birlikte, çekilen bu verilerin zaman içinde bir “Master” tablosunda nasıl arşivleneceği gösterilmektir. Ayrıca, her bir kod satırı açıklanarak gösterilmektedir.
Neden Yapı Kredi? Neden Power Query?
Yapı Kredi Bankası: Türkiye’nin önde gelen bankalarından biri olması sebebiyle, döviz kuru verileri için genellikle güvenilirdir. Bu nedenle güncel bir kaynak olarak kabul edilmektedir. (Ancak, web’den veri çekme işlemlerinin her zaman belirli riskler taşıdığı ve bu konuya makalenin ilerleyen bölümlerinde değinileceği unutulmamalıdır.)
Power Query: Excel 2016 ve üzeri sürümler ile Microsoft 365 aboneliklerinde yerleşik olarak sunulmaktadır. Bu araç, veri alma, temizleme ve dönüştürme konularında çok yönlü bir çözüm sunmaktadır. Hem kullanıcı arayüzü üzerinden hem de M dili ile kod yazarak karmaşık veri işleme operasyonları gerçekleştirilmektedir. Önemli bir avantajı da, sistem bir kez kurulduktan sonra verilerin tek bir işlemle güncellenebilmesidir.
Başlamadan Önce Bilinmesi Gerekenler (Önemli Uyarılar)
- Excel Sürümü: Bu içerikteki adımların uygulanabilmesi için Excel 2016, Excel 2019, Excel 2021 veya Microsoft 365 aboneliğine sahip olunması gerekmektedir. Power Query, bu sürümlerde "Veri" sekmesi altında yer almaktadır.
- Web’den Veri Çekmenin Dinamikleri (CSS Seçicileri): İlk M kodu, Yapı Kredi Bankası’nın web sayfasının HTML yapısındaki belirli verileri çekmek amacıyla CSS seçicileri kullanmaktadır. Finansal kurumlar, web sitelerinin yapılarını periyodik olarak güncelleyebilirler. Eğer web sayfasının yapısı değişirse, kullanılan CSS seçicileri hedeflerini bulamayabilir. Bu sebeple sorgu hata üretebilmektedir. Bu durumda, sorgu içerisindeki seçicilerin güncellenmesi gerekmektedir. Bu, web’den veri çekme yönteminin en hassas yönlerinden biridir. Ancak bu durum çözümsüz değildir. Makalenin ilerleyen kısımlarında bu konuya değinilecektir.
- Temel Power Query Bilgisi: Tüm adımlar detaylı olarak anlatılacaktır. Ancak, Power Query arayüzüne genel bir aşinalık vardır. İşlemlerin daha verimli bir şekilde takip edilmesini sağlayacaktır. Eğer bu araca tamamen yabancı olan kullanıcılar olmaktadır. Öncelikle "Power Query Nedir?" gibi temel bir bilgilendirme içeriğine göz atılması faydalı olabilir.
Bölüm 1: Yapı Kredi’den Anlık Döviz Kurlarını Çekme (İlk M Kodu Analizi)
Bu bölümde, Yapı Kredi Bankası’nın "Döviz Bilgileri" sayfasından anlık işlem zamanını ve belirlenen döviz kurlarını (örneğin EUR, USD, XAU) çeken ilk M kodu incelenecektir.
Adım 1: Power Query Editörünü Açma ve Yeni Sorgu Oluşturma
- Excel’de "Veri" sekmesine gidin.
- "Veri Al" (Get Data) > "Diğer Kaynaklardan" (From Other Sources) > "Boş Sorgu" (Blank Query) seçeneğine tıklayın.
- Power Query Editörü açılacaktır.
Adım 2: İlk M Kodunu Yapıştırma
Açılan Power Query Editörü’nde, "Görünüm" (View) sekmesinden "Gelişmiş Düzenleyici"yi (Advanced Editor) açın. Mevcut tüm metni silin ve aşağıdaki M kodunu yapıştırın:
let a = Web.BrowserContents("https://www.yapikredi.com.tr/yatirimci-kosesi/doviz-bilgileri"), b = Html.Table(a, {{"IslemZamani", ".currency-label > SPAN:nth-child(1):nth-last-child(1)"}}), islemZamani= b{0}[IslemZamani], d = Html.Table(a, {{"Column1", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(1)"}, {"Column2", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(2)"}, {"Column3", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(3)"}, {"Column4", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(4)"}, {"Column5", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(5)"}}, [RowSelector="DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR"]), e = Table.PromoteHeaders(d, [PromoteAllScalars=true]), f = Table.RemoveColumns(e,{"Döviz Açıklaması", "Değişim"}), g = Table.SelectRows(f, each ([Döviz Cinsi] = "EUR" or [Döviz Cinsi] = "USD" or [Döviz Cinsi] = "XAU")), h = Table.AddColumn(g, "IslemZamani", each islemZamani), i = Table.TransformColumnTypes(h,{{"IslemZamani", type datetime}}) in i
"Bitti" (Done) butonuna tıklayın.
Adım 3: M Kodu Adımlarının Detaylı Açıklaması
Bu M kodu adımlarının her biri aşağıda detaylandırılmıştır:
- `a = Web.BrowserContents("Canlı Döviz Kurları"),`
Bu satır, belirtilen Yapı Kredi web sayfasının tüm HTML içeriğini indirir. Böylece, ‘a’ adlı değişkene atar. Bu işlem için aktif bir internet bağlantısının olması şarttır. - `b = Html.Table(a, {{"IslemZamani", ".currency-label > SPAN:nth-child(1):nth-last-child(1)"}}),`
İndirilen HTML içeriğinden (‘a’ değişkeni) bir tablo çıkarılmaya çalışılır. Kullanılan CSS seçicisi (`.currency-label > SPAN:nth-child(1):nth-last-child(1)`), web sayfasındaki "İşlem Zamanı" bilgisinin bulunduğu alanı hedefler. Bu bilgi, elde edilen kur verilerinin hangi zamana ait olduğunu gösterir. - `islemZamani= b{0}[IslemZamani],`
Bir önceki adımda elde edilen tablonun ilk satırındaki (`{0}`) "IslemZamani" sütununda yer alan değer alınır ve ‘islemZamani’ adlı değişkene atanır. Bu, genellikle "GG.AA.YYYY SS:DD" formatında bir metin olacaktır. - `d = Html.Table(a, {{"Column1", "… TR > :nth-child(1)"}, …}, [RowSelector="… > TR"]),`
Bu adım, ana döviz tablosunun HTML içeriğinden çekilmesini sağlar.- `DIV.table-radius:nth-child(11) > TABLE…`: Bu ve benzeri uzun CSS seçiciler, Yapı Kredi web sayfasındaki döviz kurlarının bulunduğu spesifik tabloyu ve bu tablonun içindeki satırları (`RowSelector`) ile sütunları (örneğin `:nth-child(1)` birinci sütunu ifade eder) hedeflemektedir.
- CSS Seçicileri ve Kırılganlık: CSS seçicileri, web sayfasındaki belirli HTML elemanlarını hedeflemek için kullanılır. Ancak, web sitelerinin yapısı zamanla değişebilir. Bu seçiciler, bir web sayfasındaki verinin tam konumunu belirten adresler gibidir. Eğer web sitesinin tasarımında veya yapısında bir değişiklik olursa (örneğin, banka web sitesini güncellerse), bu adresler geçerliliğini yitirebilir. Böylece, veri çekme işlemi başarısız olabilir. Bu nedenle, bu kısım sorgunun en hassas noktasıdır. Dolayısıyla, hata vermeye en açık bölümüdür. Eğer sorgu ileride çalışmazsa, büyük olasılıkla bu seçicilerin güncellenmesi gerekecektir. (Çözüm önerileri için "Sorun Giderme ve İpuçları" bölümüne bakılabilir.)
- `e = Table.PromoteHeaders(d, [PromoteAllScalars=true]),`
Çekilen tablonun ilk satırında yer alan değerler ("Döviz Cinsi", "Alış (TL)" vb.) sütun başlıkları olarak ayarlanmaktadır.
Adım 3: M Kodu Adımlarının Detaylı Açıklaması
- `f = Table.RemoveColumns(e,{"Döviz Açıklaması", "Değişim"}),`
Tabloda ihtiyaç duyulmayan "Döviz Açıklaması" ve "Değişim" gibi sütunlar kaldırılır. Böylece daha sade bir tablo elde edilmektedir. - `g = Table.SelectRows(f, each ([Döviz Cinsi] = "EUR" or [Döviz Cinsi] = "USD" or [Döviz Cinsi] = "XAU")),`
Bu adımda, sadece "EUR" (Euro), "USD" (Amerikan Doları) ve "XAU" (Altın) para birimlerine ait satırlar tutulmaktadır Diğerleri filtrelenmektedir. Bu filtreleme kriteri, kullanıcıların ihtiyaçlarına göre farklı döviz cinslerini içerecek şekilde değiştirilebilir. Örneğin, "GBP" (İngiliz Sterlini) de eklenmek istenirse ilgili koşul `… or [Döviz Cinsi] = "GBP"))` şeklinde genişletilebilir. - `h = Table.AddColumn(g, "IslemZamani", each islemZamani),`
Filtrelenmiş tabloya, sorgunun başında elde edilen ‘islemZamani’ bilgisi yeni bir sütun olarak eklenir. Böylece her kur verisinin hangi zamana ait olduğu bilgisi tabloya dahil edilmektedir. - `i = Table.TransformColumnTypes(h,{{"IslemZamani", type datetime}})`
"IslemZamani" sütunundaki metin formatındaki tarih ve saat bilgisi, Excel’in tarih/saat (datetime) olarak tanıyacağı bir formata dönüştürülür. Bu dönüşüm, ileride yapılacak sıralama veya tarih bazlı filtreleme işlemleri için çok faydalı olacaktır. - `in i`
Sonuç olarak, ‘i’ adlı değişkende tutulan işlenmiş tablo verileri döndürülür.
Adım 4: Sorguyu Adlandırma ve Yükleme
- Power Query Editörü’nün sağ tarafında bulunan "Sorgu Ayarları" (Query Settings) bölmesindeki "Ad" (Name) kısmına, oluşturulan bu sorgu için bir isim verin (Örneğin: YK_Anlik_Kur).
- Daha sonra, "Giriş" (Home) sekmesinde yer alan "Kapat ve Yükle" (Close & Load) butonunun altındaki oka tıklayıp "Kapat ve Şuraya Yükle…" (Close & Load To…) seçeneğini seçin.
- Açılan "Veri İçeri Aktar" (Import Data) penceresinde aşağıdaki ayarları yapın:
- "Tablo" (Table) seçeneğini işaretleyin.
- "Yeni çalışma sayfası" (New worksheet) veya "Varolan çalışma sayfası" (Existing worksheet) seçeneklerinden birini tercih ederek verilerin yükleneceği konumu belirleyebilirsiniz. ÖNEMLİ NOT: İkinci M kodunun doğru çalışabilmesi için, bu ilk sorgudan elde edilen verilerin Excel’de "Guncel" adında bir tabloya yüklenmesi gerekmektedir. Bu nedenle, verilerin yeni bir çalışma sayfasına tablo olarak yüklenmesi ve Excel’e dönüldükten sonra oluşturulan bu Excel tablosuna "Guncel" adının verilmesi tavsiye edilmektedir. (Tablo seçildikten sonra Excel’in "Tablo Tasarımı" sekmesinden tablo adı kolayca değiştirilebilmektedir.)
- "Tamam" butonuna tıklayın. Anlık kur verileri belirttiğiniz Excel sayfasına yüklenecektir.
Bölüm 2: Döviz Kurlarını Tarihi Bir Arşivde Biriktirme (İkinci M Kodu Analizi)
İlk sorgu, anlık kur verilerini çekmektedir. Bu kurların günlük olarak biriktirilmesiyle kapsamlı bir kur arşivi oluşturulabilmektedir. İkinci M kodu bu amaca hizmet etmektedir.
Adım 1: "Master" Adında Boş Bir Arşiv Tablosu Oluşturma
Bu adım önemlidir. Power Query ile yeni çekilen kurların ekleneceği bir ana tabloya ihtiyaç duyulmaktadır.
- Excel’de yeni bir çalışma sayfası açın.
- İlk satıra şu başlıkları yazınız:
Döviz Cinsi Alış (TL) Satış (TL) IslemZamani - Bu başlıkları içeren hücreleri seçin ve Excel’in "Ekle" (Insert) sekmesinden "Tablo" seçeneğine tıklayın. Açılan pencerede "Tablomun üst bilgileri var" (My table has headers) kutucuğunun işaretli olduğundan emin olun ve "Tamam" butonuna tıklayın.
- Oluşan bu Excel tablosunu seçin. Excel’in "Tablo Tasarımı" (Table Design) sekmesinde, sol üst bölümde yer alan "Tablo Adı" (Table Name) alanına "Master" yazın ve Enter tuşuna basın. Bu tablo, başlangıçta sadece başlık satırından oluşacak ve veri içermeyecektir.
Adım 2: "Master" Tablosunu Power Query’e Kaynak Olarak Tanıtma (Önerilen İyileştirme)
İkinci M kodunda yer alan `& Master` gibi dolaylı bir referans, bazen belirsizliklere yol açmaktadır. Daha sağlam bir yaklaşım, "Master" adlı Excel tablosunun öncelikle Power Query’e ayrı bir sorgu olarak tanıtılmasıdır.
- Excel’de "Veri" sekmesine gidin.
- "Tablodan/Aralıktan" (From Table/Range) seçeneğine tıklayın. (Bu işlem öncesinde, "Master" adlı Excel tablonuzdaki herhangi bir hücrenin seçili olması gerekmektedir.)
- "Master" tablosu Power Query Editörü’ne yüklenecektir. Editörün sağ tarafındaki "Sorgu Ayarları" bölmesinde, bu yeni sorguya "MasterKayitlar" adını verin.
- Bu sorgu üzerinde herhangi bir veri dönüşümü yapılmasına gerek yoktur. "Giriş" sekmesinden "Kapat ve Yükle" butonunun altındaki oka tıklayıp "Kapat ve Şuraya Yükle…" seçeneğini seçin.
- Açılan pencerede "Yalnızca Bağlantı Oluştur" (Only Create Connection) seçeneğini işaretleyin ve "Tamam" butonuna tıklayın. Bu işlemle "Master" tablosu, Power Query için tanımlı bir veri kaynağı haline gelir.
Adım 3: İkinci M Kodunu Yeni Bir Sorguya Yapıştırma
Şimdi, arşivleme işlemini gerçekleştirecek ikinci sorgu oluşturulacaktır.
- Excel’de tekrar "Veri" > "Veri Al" > "Diğer Kaynaklardan" > "Boş Sorgu" adımlarını izleyerek yeni bir Power Query sorgusu açın.
- "Gelişmiş Düzenleyici"yi açın ve aşağıdaki güncellenen ve iyileştirilen M kodunu yapıştırın:
let // 1. Adım: "Guncel" adlı Excel tablosundan (ilk sorgunun çıktısı) veriyi al Kaynak_Guncel = Excel.CurrentWorkbook(){[Name="Guncel"]}[Content], TipDonusumu_Guncel = Table.TransformColumnTypes(Kaynak_Guncel,{{"Döviz Cinsi", type text}, {"Alış (TL)", type number}, {"Satış (TL)", type number}, {"IslemZamani", type datetime}}), // 2. Adım: "MasterKayitlar" sorgusundan (Master Excel tablosunun bağlantısı) mevcut arşiv verisini al Kaynak_Master = MasterKayitlar, // MasterKayitlar sorgusu zaten doğru tiplerde olmalı, ama emin olmak için bir tip dönüşümü eklenebilir: // TipDonusumu_Master = Table.TransformColumnTypes(Kaynak_Master,{{"Döviz Cinsi", type text}, {"Alış (TL)", type number}, {"Satış (TL)", type number}, {"IslemZamani", type datetime}}), // 3. Adım: Güncel verileri mevcut arşiv verilerine ekle (append) BirlestirilmisTablo = Table.Combine({Kaynak_Master, TipDonusumu_Guncel}), // Önce Master, sonra Güncel // 4. Adım: Yinelenenleri Kaldır (Opsiyonel ama Önemli!) // Eğer aynı IslemZamani ve Döviz Cinsi için birden fazla kayıt oluşması istenmiyorsa // Özellikle tüm sütunlara göre yinelenenleri kaldırmak daha güvenli olabilir YinelenenleriKaldır = Table.Distinct(BirlestirilmisTablo, {"Döviz Cinsi", "IslemZamani"}), // Veya tüm sütunlara göre: Table.Distinct(BirlestirilmisTablo) // 5. Adım: Son bir tip dönüşümü (genellikle iyi bir pratiktir) SonTipDonusumu = Table.TransformColumnTypes(YinelenenleriKaldır,{{"Alış (TL)", type number}, {"Satış (TL)", type number}, {"IslemZamani", type datetime}}) in SonTipDonusumu
Adım 4: İkinci M Kodu Adımlarının Detaylı Açıklaması (Güncellenen Kod)
- `Kaynak_Guncel = Excel.CurrentWorkbook(){[Name="Guncel"]}[Content],`
Mevcut Excel çalışma kitabında bulunan "Guncel" adlı tablonun içeriğini alır. Bu tablo, ilk sorgu (YK_Anlik_Kur) tarafından Excel’e yüklenen anlık kur verilerini içerir. - `TipDonusumu_Guncel = Table.TransformColumnTypes(Kaynak_Guncel,{…}),`
"Guncel" tablosundaki sütunların veri tiplerini (metin, sayı, tarih/saat vb.) olması gereken formatlara dönüştürür. Bu, veri birleştirme işlemi öncesinde veri tutarlılığının sağlanması açısından önemlidir. - `Kaynak_Master = MasterKayitlar,`
Bu satır, bir önceki adımda oluşturulan "MasterKayitlar" adlı sorguya (yani "Master" isimli Excel tablosuna) bağlanır. Bu sorgu, mevcut tüm arşivlenen kur verilerini içermektedir. Bahsi geçen orijinal koddaki `& Master` ifadesi yerine bu yöntem, veri kaynağını daha net belirttiği için daha sağlam bir yaklaşımdır. - `BirlestirilmisTablo = Table.Combine({Kaynak_Master, TipDonusumu_Guncel}),`
Bu adımda iki tablo birleştirilmektedir. `Kaynak_Master` (mevcut arşiv verilerini içeren tablo) ile `TipDonusumu_Guncel` (yeni çekilen kur verilerini içeren tablo) alt alta eklenmektedir. `Table.Combine` fonksiyonunun kullanılması, basit `&` birleştirme operatörüne göre daha esnek ve genellikle daha iyi performans sunan bir yöntemdir. Verilerin doğru sırada eklenmesi için `Table.Combine` fonksiyonuna verilen listede önce Master, sonra Güncel tablo referansı listelenmiştir. - `YinelenenleriKaldır = Table.Distinct(BirlestirilmisTablo, {"Döviz Cinsi", "IslemZamani"}),`
Bu önemli bir adımdır. Eğer sorgular kısa aralıklarla birden fazla kez yenilenirse, aynı kur bilgisinin arşive tekrar tekrar eklenmesi söz konusu olmaktadır. Bu satır, "Döviz Cinsi" ve "IslemZamani" sütun kombinasyonlarına göre yinelenen (tekrar eden) satırları kaldırır. Bu sayede, her bir döviz kuru için belirtilen zamana ait yalnızca tek bir kayıt bulunması sağlanır. İstenirse, `Table.Distinct(BirlestirilmisTablo)` ifadesi kullanılarak tüm sütunların birebir aynı olduğu yinelenen satırlar da kaldırılabilmektedir. - `SonTipDonusumu = Table.TransformColumnTypes(YinelenenleriKaldır,{…})`
Birleştirilen ve yinelenen kayıtlardan arındırılan tablonun sütun tipleri son bir kez daha kontrol edilmelidir. Bu işlemden sonra ayarlanmalıdır. Bu, verilerin "Master" adlı Excel tablosuna doğru formatta yazılması için bir güvence sağlar.
Adım 5: Arşiv Sorgusunu Adlandırma ve Yükleme
- Power Query Editörü’nde bu sorguya bir isim verin (Örneğin: GuncelKurlariArsiveEkle).
- "Giriş" sekmesinde yer alan "Kapat ve Yükle" butonunun altındaki oka tıklayıp "Kapat ve Şuraya Yükle…" seçeneğini seçin.
- Açılan "Veri İçeri Aktar" penceresinde aşağıdaki ayarları yapın:
- "Tablo" seçeneğini işaretleyin.
- "Varolan çalışma sayfası" seçeneğini işaretleyin ve hedef olarak "Master" adlı Excel tablonuzun bulunduğu hücrelerden birini (örneğin, tablonun başlık hücresini) gösterin. Bu sorgunun çıktısı, "Master" tablosunun mevcut içeriğinin üzerine yazılarak tabloyu güncelleyecektir.
- "Tamam" butonuna tıklayın.
Bu işlemler sonucunda, her iki sorgu da ("YK_Anlik_Kur" ve ardından "GuncelKurlariArsiveEkle") çalıştırıldığında, yeni kur verileri önce "Guncel" adlı tabloya, ardından da "Master" tablosundaki kur arşivine eklenecektir.
Sorguları Çalıştırma ve Otomatik Yenileme
- Manuel Yenileme: Excel’de "Veri" sekmesine gidip "Tümünü Yenile" (Refresh All) butonuna tıklanmalıdır. Böylece, Tüm sorguları (önce anlık kur sorgusu, sonra arşivleme sorgusu) sırayla çalıştırabilirsiniz. Power Query, sorgular arasındaki bağımlılıkları algılayarak genellikle doğru sırada yenileme yapar. Daha kontrollü bir yenileme için, "Sorgular ve Bağlantılar" bölmesinden önce "YK_Anlik_Kur" sorgusu yenilenmelidir. Ardından "GuncelKurlariArsiveEkle" sorgusu manuel olarak yenilenmelidir.
- Dosya Açıldığında Yenileme: "Sorgular ve Bağlantılar" (Queries & Connections) bölmesini açın (Bu bölme, "Veri" sekmesinde bulunmaktadır). Her bir sorguya sağ tıklayıp "Özellikler" (Properties) seçeneğine gidin. Açılan pencerede "Dosya açılırken veriyi yenile" (Refresh data when opening the file) kutucuğunu işaretleyebilirsiniz. Bu sayede, Excel dosyası her açıldığında kur verileri otomatik olarak güncellenmektedir. Böylece arşivleme işlemi de yapılmaktadır.
Önemli Hususlar: Sorun Giderme ve İpuçları
- Web Sitesi Değişiklikleri (CSS Seçici Sorunları): Makalenin başında da belirtildiği gibi, eğer Yapı Kredi Bankası web sitesinin HTML yapısını değiştirirse, ilk sorgudaki `Html.Table` adımları (özellikle ‘b’ ve ‘d’ olarak adlandırılan adımlar) hata verebilmektedir. Bu durumda:
- Kullanılan web tarayıcısının "Geliştirici Araçları" (F12 tuşu) kullanılarak sayfanın yeni HTML yapısının incelenmesi gerekmektedir. Daha sonra, M kodundaki CSS seçicilerinin güncellenmesi gerekmektedir. İncelenen element üzerine sağ tıklanması gerekmektedir. "İncele" (Inspect) gibi bir seçenekle ilgili HTML etiketleri vardır. Bu etiketlere ulaşmak için kullanılan yollar (path) bulunabilmektedir. Bu konu biraz teknik bilgi gerektirmektedir. Ancak, internet üzerinde "CSS selectors tutorial" gibi anahtar kelimelerle yapılan aramalarla temel mantığı öğrenilmektedir.
- Alternatif bir yöntem olarak, Power Query’nin kendi arayüzündeki "Web’den Veri Al" özelliği bulunmaktadır. İlgili tablo web sayfasından yeniden bulunmaya çalışabilmektedir. Çünkü, bu işlem sırasında Power Query tarafından otomatik olarak oluşturulmaktadr. Bu M kodundan yeni CSS seçicileri tespit edilerek mevcut koda adapte edilebilmektedir.
- Hata Mesajları: Power Query, genellikle hatanın hangi adımda meydana geldiğini belirten bir mesaj gösterir. Sorgu adımlarını tek tek kontrol ederek sorunun kaynağı tespit edilebilmektedir.
- İşlem Zamanı Formatı: Eğer Yapı Kredi Bankası’nın web sayfasında sunduğu "İşlem Zamanı" bilgisinin formatı değişmektedir. `Table.TransformColumnTypes` adımıyla yapılan tarih ve saat dönüşümü sorun yaratabilmektedir. Gerekirse, metin olarak gelen tarih/saat bilgisinin `DateTime.FromText` gibi M dili fonksiyonları kullanılmalıdır. Böylece, doğru format belirtilerek ayrıştırılması (parse edilmesi) yapılmalıdır.
- Büyük Veri Arşivleri: "Master" tablosu zamanla çok sayıda satır içerebilmektedir. Excel’in çok büyük tablolarla çalışırken performansı düşecektir. Eğer çok sık aralıklarla arşivleme planlanıyorsa, Microsoft Access veritabanı önerilmektedir. Ayrıca, SQL Server gibi bir veritabanına kayıt yapmakta tercih edilmelidir.
Power Query ile YKB Döviz Kurlarını Listeleme – Geliştirme Fikirleri ve Ek Olanaklar
Bu sistemle önemli bir temel oluşturulmuştur. İleride aşağıdaki geliştirmeler de değerlendirilebilecektir:
- Günlük, haftalık veya aylık kur değişim oranlarını hesaplayan yeni sütunlar eklemek.
- "Master" tablosundaki verilerden faydalanarak Excel’in grafik özellikleriyle kur trendlerini görselleştirmek.
- Belirli bir kur hedefine ulaşıldığında kullanıcıyı bilgilendirecek Excel formülleri veya koşullu biçimlendirmeler uygulamak.
- Sorgu çalıştırıldığında bir hata oluşması durumunda otomatik e-posta ile bildirim göndermek. Bu tür bir otomasyon için VBA makroları gerekmektedir. Ayrıca, Office Scripts gibi ek araçlar da gerekebilmektedir.
Power Query ile YKB Döviz Kurlarını Listeleme – Sonuç
Bu içerik, döviz kurlarını Yapı Kredi Bankası’ndan Excel‘e otomatik olarak çekmenizi sağlamaktadır. Bu işlem için M kodları ve Power Query yöntemleri kullanılmaktadır. Böylece verilerin işlenmesi için kapsamlı bir çözüm sunulmuştur.
Power Query ile YKB Döviz Kurlarını Listeleme, kullanıcıların ilgili konuda bilgi sahibi olmalarını sağlamaktadır. Ayrıca, sunulan çözümü etkin bir şekilde uygulamalarını sağlamak amacıyla hazırlanmıştır. M dilinin, pratikle daha etkin kullanılan güçlü bir araç olduğu unutulmamalıdır. Power Query ile YKB Döviz Kurlarını Listeleme ile ilgili sorular gerekebilmektedir. Ayrıca, sistemin geliştirilmesine yönelik öneriler için yorumlar bölümü kullanılmalıdır.