{"id":32207,"date":"2025-10-19T01:31:12","date_gmt":"2025-10-18T22:31:12","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/"},"modified":"2025-10-19T01:31:12","modified_gmt":"2025-10-18T22:31:12","slug":"power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/","title":{"rendered":"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon"},"content":{"rendered":"<p>Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query&#8217;nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.<\/p>\n<p>Her g\u00fcn y\u00fczlerce hatta binlerce sat\u0131r veriyle u\u011fra\u015fan herkes bilir ki, veri temizli\u011fi ve d\u00f6n\u00fc\u015f\u00fcm\u00fc, analizin temelidir. Power Query, Excel ve Power BI kullan\u0131c\u0131lar\u0131n\u0131n veriyi alma, d\u00f6n\u00fc\u015ft\u00fcrme ve y\u00fckleme (ETL) s\u00fcre\u00e7lerini basitle\u015ftiren g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Ancak bu s\u00fcrecin kritik bir par\u00e7as\u0131, verilerin do\u011fru tiplerde olmas\u0131n\u0131 sa\u011flamakt\u0131r. \u00d6rne\u011fin, bir tarih s\u00fctununun metin olarak okunmas\u0131 veya bir say\u0131 s\u00fctununun hatal\u0131 karakterler i\u00e7ermesi, analizlerinizde ciddi sorunlara yol a\u00e7abilir.<\/p>\n<p>Veri tipleri neden bu kadar \u00f6nemli? \u00d6ncelikle, performans a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck fark yarat\u0131r. Power Query ve Power BI veri modelleri, do\u011fru veri tiplerine sahip s\u00fctunlarla \u00e7ok daha verimli \u00e7al\u0131\u015f\u0131r. Metin olarak saklanan say\u0131lar veya tarihler, gereksiz bellek t\u00fcketimine ve yava\u015f sorgu i\u015flem s\u00fcrelerine neden olabilir. \u0130kinci olarak, veri do\u011frulu\u011fu ve analitik b\u00fct\u00fcnl\u00fck i\u00e7in vazge\u00e7ilmezdir. Bir &#8220;tarih&#8221; s\u00fctunu metin olarak kal\u0131rsa, \u00fczerinde tarih filtreleme, s\u0131ralama veya hesaplama gibi i\u015flemleri yapamazs\u0131n\u0131z. Ayn\u0131 \u015fekilde, bir say\u0131 s\u00fctunundaki metin de\u011ferleri, ortalama, toplam gibi matematiksel i\u015flemleri imkans\u0131z k\u0131lar.<\/p>\n<p>Power Query&#8217;nin kullan\u0131c\u0131 aray\u00fcz\u00fc (UI) \u00fczerinden s\u00fctun tiplerini de\u011fi\u015ftirmek olduk\u00e7a kolayd\u0131r. Bir s\u00fctuna sa\u011f t\u0131klay\u0131p &#8220;Tipi De\u011fi\u015ftir&#8221; se\u00e7ene\u011fini se\u00e7ebilir veya s\u00fctun ba\u015fl\u0131\u011f\u0131ndaki ikona t\u0131klayarak istedi\u011finiz tipi belirleyebilirsiniz. Ancak bu y\u00f6ntem, veri setinizdeki s\u00fctun say\u0131s\u0131 artt\u0131\u011f\u0131nda veya s\u00fcrekli de\u011fi\u015fen veri kaynaklar\u0131yla \u00e7al\u0131\u015f\u0131rken ciddi bir darbo\u011faz haline gelebilir. Onlarca, y\u00fczlerce s\u00fctunun her birini tek tek manuel olarak de\u011fi\u015ftirmek hem zaman al\u0131c\u0131 hem de hata yapmaya a\u00e7\u0131k bir s\u00fcre\u00e7tir. Ayr\u0131ca, yeni bir veri kayna\u011f\u0131 geldi\u011finde veya mevcut bir kayna\u011f\u0131n yap\u0131s\u0131nda k\u00fc\u00e7\u00fck bir de\u011fi\u015fiklik oldu\u011funda, t\u00fcm bu ad\u0131mlar\u0131 tekrar etmek zorunda kal\u0131rs\u0131n\u0131z. \u0130\u015fte tam da bu noktada, M dili ile yaz\u0131lm\u0131\u015f esnek bir fonksiyonun de\u011feri ortaya \u00e7\u0131kar. Bu fonksiyon, s\u00fctun tiplerini dinamik olarak y\u00f6netmenizi sa\u011flayarak, tekrarlayan g\u00f6revleri ortadan kald\u0131r\u0131r ve veri d\u00f6n\u00fc\u015f\u00fcm s\u00fcre\u00e7lerinizi otomatikle\u015ftirir. Bu da size daha kritik analizlere odaklanmak i\u00e7in daha fazla zaman ve enerji kazand\u0131r\u0131r.<\/p>\n<p>Veri tiplerinin Power Query&#8217;deki rol\u00fcn\u00fc ve \u00f6nemini anlamak, daha sa\u011flam ve verimli veri modelleri olu\u015fturman\u0131n ilk ad\u0131m\u0131d\u0131r. Power Query, \u00e7e\u015fitli veri tiplerini destekler: Metin (Text), Say\u0131 (Number), Tarih (Date), Saat (Time), Tarih\/Saat (DateTime), Tarih\/Saat\/Saat Dilimi (DateTimeZone), Mant\u0131ksal (Logical &#8211; True\/False), Para Birimi (Currency) ve \u0130kili (Binary). Her bir tipin kendine \u00f6zg\u00fc \u00f6zellikleri ve kullan\u0131m alanlar\u0131 vard\u0131r. \u00d6rne\u011fin, bir sat\u0131\u015f miktar\u0131n\u0131 temsil eden s\u00fctunu &#8220;Metin&#8221; olarak b\u0131rakmak yerine &#8220;Say\u0131&#8221; (Decimal Number veya Whole Number) olarak ayarlamak, bu s\u00fctun \u00fczerinde toplama, ortalama alma gibi istatistiksel hesaplamalar\u0131 do\u011frudan yapabilmenizi sa\u011flar. Tarih bilgileri i\u00e7in &#8220;Tarih&#8221; veya &#8220;Tarih\/Saat&#8221; tipi kullanmak, takvim tabanl\u0131 analizler, d\u00f6nemlik raporlamalar ve zaman serisi incelemeleri i\u00e7in hayati \u00f6nem ta\u015f\u0131r. Yanl\u0131\u015f veri tipleri, sadece hesaplama hatalar\u0131na de\u011fil, ayn\u0131 zamanda g\u00f6rselle\u015ftirme ara\u00e7lar\u0131nda (Power BI gibi) hatal\u0131 grafik ve raporlar\u0131n olu\u015fmas\u0131na da neden olabilir. T\u00fcm bu nedenlerle, Power Query&#8217;de veri tiplerine hakim olmak, veri analiz yolculu\u011funuzda ataca\u011f\u0131n\u0131z en \u00f6nemli ad\u0131mlardan biridir.<\/p>\n<h2>Esnek S\u00fctun Tipi De\u011fi\u015ftirme Fonksiyonuna \u0130htiya\u00e7 Duyuyor muyuz?<\/h2>\n<p>Power Query&#8217;de veri d\u00f6n\u00fc\u015f\u00fcmleri yaparken, \u00e7o\u011fu zaman tekrarlayan g\u00f6revlerle kar\u015f\u0131la\u015f\u0131r\u0131z. Bu g\u00f6revlerin ba\u015f\u0131nda s\u00fctun tiplerini de\u011fi\u015ftirmek gelir. Diyelim ki, farkl\u0131 kaynaklardan (CSV dosyalar\u0131, SQL veritabanlar\u0131, API&#8217;ler) gelen ve benzer bir yap\u0131ya sahip onlarca tabloyu Power BI&#8217;a aktar\u0131yorsunuz. Her bir tabloda &#8220;Tarih&#8221;, &#8220;Miktar&#8221;, &#8220;ID&#8221; gibi s\u00fctunlar\u0131n do\u011fru veri tipine d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi gerekiyor. E\u011fer bu i\u015flemi her tablo i\u00e7in manuel olarak yapmaya kalkarsan\u0131z, hem \u00e7ok zaman kaybedersiniz hem de insan hatas\u0131 riski artar. Bir tabloda &#8220;Tarih&#8221; s\u00fctununu do\u011fru tipe d\u00f6n\u00fc\u015ft\u00fcrmeyi unutman\u0131z veya yanl\u0131\u015f bir tip se\u00e7meniz, t\u00fcm analiz zincirini bozabilir.<\/p>\n<p>Kullan\u0131c\u0131 aray\u00fcz\u00fc (UI) tabanl\u0131 d\u00f6n\u00fc\u015f\u00fcmlerin en b\u00fcy\u00fck k\u0131s\u0131tl\u0131l\u0131\u011f\u0131, dinamik olmamalar\u0131d\u0131r. E\u011fer bir s\u00fctunun ad\u0131 de\u011fi\u015firse veya yeni bir s\u00fctun eklenirse, mevcut ad\u0131mlar\u0131n\u0131z bozulabilir veya manuel m\u00fcdahale gerektirebilir. Otomasyonun ve \u00f6l\u00e7eklenebilirli\u011fin anahtar\u0131, M dilinin g\u00fcc\u00fcnden yararlanmakt\u0131r. M dili, Power Query&#8217;nin arkas\u0131ndaki g\u00fc\u00e7l\u00fc form\u00fcl dilidir ve bize, standart UI ad\u0131mlar\u0131n\u0131n \u00f6tesine ge\u00e7erek \u00f6zelle\u015ftirilmi\u015f, esnek ve dinamik \u00e7\u00f6z\u00fcmler \u00fcretme imkan\u0131 sunar. \u0130\u015fte bu noktada, &#8220;Esnek S\u00fctun Tipi De\u011fi\u015ftirme Fonksiyonu&#8221; kavram\u0131 devreye girer. Bu t\u00fcr bir fonksiyon, sadece bir veya iki s\u00fctunun de\u011fil, tablolar\u0131n\u0131zdaki istedi\u011finiz say\u0131da s\u00fctunun tipini tek bir ad\u0131mda ve parametreler arac\u0131l\u0131\u011f\u0131yla de\u011fi\u015ftirebilmenizi sa\u011flar.<\/p>\n<p>Bu fonksiyon, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k veri projelerinde, veri ak\u0131\u015flar\u0131n\u0131n (dataflows) tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flamak i\u00e7in paha bi\u00e7ilmez bir ara\u00e7t\u0131r. Diyelim ki bir veri ambar\u0131na veri y\u00fckl\u00fcyor ve staging alan\u0131nda bir\u00e7ok ge\u00e7ici tabloyu i\u015fliyorsunuz. Her bir tablonun belirli s\u00fctunlar\u0131n\u0131n ayn\u0131 tipe sahip olmas\u0131 gerekiyorsa, bu esnek fonksiyonu kullanarak t\u00fcm bu d\u00f6n\u00fc\u015f\u00fcmleri tek bir merkezi yerden y\u00f6netebilirsiniz. Bu, hem kod tekrar\u0131n\u0131 azalt\u0131r hem de bak\u0131m maliyetlerini d\u00fc\u015f\u00fcr\u00fcr. Fonksiyonun parametre alabilme yetene\u011fi sayesinde, farkl\u0131 tablolar i\u00e7in farkl\u0131 s\u00fctun\/tip e\u015fle\u015fmeleri tan\u0131mlayabilir ve ayn\u0131 fonksiyonu farkl\u0131 senaryolarda kullanabilirsiniz. Bu, veri d\u00f6n\u00fc\u015f\u00fcm s\u00fcre\u00e7lerinize ger\u00e7ek anlamda bir \u00e7eviklik kazand\u0131r\u0131r. \u00d6rne\u011fin, bir veri kayna\u011f\u0131n\u0131n &#8220;Sipari\u015fTarihi&#8221; s\u00fctununu &#8220;Date&#8221; (Tarih) tipine, ba\u015fka bir kayna\u011f\u0131n &#8220;OrderDate&#8221; s\u00fctununu da ayn\u0131 \u015fekilde &#8220;Date&#8221; tipine d\u00f6n\u00fc\u015ft\u00fcrmek isteyebilirsiniz. Fonksiyonunuzu, hangi s\u00fctunun hangi tipe d\u00f6n\u00fc\u015ft\u00fcr\u00fclece\u011fini belirten bir liste veya tablo alacak \u015fekilde tasarlayarak, bu esnekli\u011fi kolayca sa\u011flayabilirsiniz. Bu, veri d\u00f6n\u00fc\u015f\u00fcm s\u00fcre\u00e7lerinizi sadece h\u0131zland\u0131rmakla kalmaz, ayn\u0131 zamanda gelecekteki de\u011fi\u015fikliklere kar\u015f\u0131 daha diren\u00e7li hale getirir.<\/p>\n<h2>Ad\u0131m Ad\u0131m K\u0131lavuz: Esnek Fonksiyonumuzu Nas\u0131l Olu\u015ftururuz?<\/h2>\n<p>\u015eimdi, Power Query&#8217;deki veri d\u00f6n\u00fc\u015f\u00fcmlerimizi bir \u00fcst seviyeye ta\u015f\u0131yacak o esnek M fonksiyonunu nas\u0131l olu\u015fturaca\u011f\u0131m\u0131za dair ad\u0131m ad\u0131m bir rehbere dalal\u0131m. Amac\u0131m\u0131z, sadece birka\u00e7 s\u00fctun i\u00e7in de\u011fil, onlarca hatta y\u00fczlerce s\u00fctun i\u00e7in dinamik olarak tip de\u011fi\u015fikli\u011fi yapabilen, tekrar kullan\u0131labilir bir fonksiyon yazmak.<\/p>\n<h3>Fonksiyonun Temel Fikri Nedir?<\/h3>\n<p>M dilinde, s\u00fctun tiplerini de\u011fi\u015ftirmek i\u00e7in <code>Table.TransformColumnTypes<\/code> ad\u0131nda g\u00fc\u00e7l\u00fc bir yerle\u015fik fonksiyon bulunur. Bu fonksiyon, bir tabloyu ve d\u00f6n\u00fc\u015ft\u00fcr\u00fclecek s\u00fctunlar\u0131n adlar\u0131n\u0131 ve hedef tiplerini i\u00e7eren bir listeyi arg\u00fcman olarak al\u0131r. Bizim esnek fonksiyonumuz ise, bu listeyi dinamik olarak olu\u015fturacak ve <code>Table.TransformColumnTypes<\/code>&#8216;\u0131 \u00e7a\u011f\u0131racak bir sarmalay\u0131c\u0131 (wrapper) olacakt\u0131r. B\u00f6ylece, her seferinde kodu ba\u015ftan yazmak yerine, sadece fonksiyonumuzu \u00e7a\u011f\u0131r\u0131p parametrelerini g\u00fcncelleyece\u011fiz.<\/p>\n<h3>Ad\u0131m 1: Bo\u015f Bir Sorgu Olu\u015fturma<\/h3>\n<p>Power BI veya Excel&#8217;de Power Query d\u00fczenleyicisini a\u00e7\u0131n. Sol taraftaki &#8220;Sorgular&#8221; b\u00f6lmesinde bo\u015f bir alana sa\u011f t\u0131klay\u0131n, &#8220;Yeni Sorgu&#8221; -> &#8220;Bo\u015f Sorgu&#8221; se\u00e7ene\u011fini se\u00e7in. Bu, bizim \u00f6zel M fonksiyonumuzu yazaca\u011f\u0131m\u0131z yer olacak.<\/p>\n<h3>Ad\u0131m 2: Fonksiyon Kodunu Yazma<\/h3>\n<p>Bo\u015f sorguyu a\u00e7t\u0131ktan sonra, &#8220;Geli\u015fmi\u015f D\u00fczenleyici&#8221;ye (Advanced Editor) gidin. \u0130\u015fte fonksiyonumuzun temel yap\u0131s\u0131:<\/p>\n<pre><code class=\"language-m\">\n  (inputTable as table, typeTransformList as list) as table =>\n  let\n      \/\/ Her bir \u00f6\u011fe {SutunAd\u0131, HedefTip} format\u0131nda bir liste i\u00e7erir.\n      \/\/ \u00d6rne\u011fin: {{\"Sipari\u015fTarihi\", type date}, {\"Miktar\", type number}}\n      ChangedTypes = Table.TransformColumnTypes(inputTable, typeTransformList)\n  in\n      ChangedTypes\n\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011funu Geli\u015fmi\u015f D\u00fczenleyici'ye yap\u0131\u015ft\u0131r\u0131n ve sorgunuzun ad\u0131n\u0131 \u00f6rne\u011fin <code>fnChangeColumnTypes<\/code> olarak de\u011fi\u015ftirin.<\/p>\n<h3>Fonksiyonun Detayl\u0131 A\u00e7\u0131klamas\u0131:<\/h3>\n<ul>\n<li><code>inputTable as table<\/code>: Fonksiyonumuzun ilk parametresi, \u00fczerinde i\u015flem yapaca\u011f\u0131m\u0131z tablonun kendisidir. Tip olarak <code>table<\/code> bekleriz.<\/li>\n<li><code>typeTransformList as list<\/code>: Bu, d\u00f6n\u00fc\u015ft\u00fcr\u00fclecek s\u00fctunlar\u0131 ve onlar\u0131n hedef tiplerini tan\u0131mlayan bir listedir. Her bir liste \u00f6\u011fesi, <code>{S\u00fctunAd\u0131, HedefTip}<\/code> \u015feklinde bir i\u00e7 liste olmal\u0131d\u0131r. \u00d6rne\u011fin: <code>{\"Sipari\u015fNo\", type text}<\/code> veya <code>{\"Miktar\", type number}<\/code>. <code>type text<\/code>, <code>type number<\/code>, <code>type date<\/code>, <code>type datetime<\/code> gibi M dili tiplerini kullan\u0131r\u0131z.<\/li>\n<li><code>Table.TransformColumnTypes(inputTable, typeTransformList)<\/code>: \u0130\u015fte t\u00fcm b\u00fcy\u00fcy\u00fc ger\u00e7ekle\u015ftiren ana fonksiyon budur. Verdi\u011fimiz tabloyu ve tip d\u00f6n\u00fc\u015f\u00fcm listesini kullanarak s\u00fctun tiplerini de\u011fi\u015ftirir.<\/li>\n<\/ul>\n<h3>Ad\u0131m 3: Fonksiyonu Kullanma<\/h3>\n<p>Fonksiyonumuzu olu\u015fturduktan sonra, onu herhangi bir Power Query sorgusunda \u00e7a\u011f\u0131rabiliriz. Diyelim ki <code>Sat\u0131\u015flar<\/code> ad\u0131nda bir tablonuz var ve bu tabloda <code>Sipari\u015fTarihi<\/code> (metin olarak gelmi\u015f), <code>Sipari\u015fMiktar\u0131<\/code> (metin olarak gelmi\u015f) ve <code>BirimFiyat<\/code> (metin olarak gelmi\u015f) s\u00fctunlar\u0131n\u0131 do\u011fru tiplere d\u00f6n\u00fc\u015ft\u00fcrmek istiyorsunuz.<\/p>\n<pre><code class=\"language-m\">\n  let\n      Kaynak = Excel.CurrentWorkbook(){[Name=\"Sat\u0131\u015flar\"]}[Content],\n      \/\/ D\u00f6n\u00fc\u015f\u00fcm listemizi olu\u015fturuyoruz\n      DonusumListesi = {\n          {\"Sipari\u015fTarihi\", type date},\n          {\"Sipari\u015fMiktar\u0131\", type number},\n          {\"BirimFiyat\", type currency},\n          {\"M\u00fc\u015fteriID\", type text} \/\/ \u00d6rnek olarak bir de metin tipi ekleyelim\n      },\n      \/\/ Fonksiyonumuzu \u00e7a\u011f\u0131r\u0131yoruz\n      DonusturulmusTablo = fnChangeColumnTypes(Kaynak, DonusumListesi)\n  in\n      DonusturulmusTablo\n\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kodda, <code>DonusumListesi<\/code> adl\u0131 bir liste tan\u0131mlad\u0131k. Bu liste, <code>fnChangeColumnTypes<\/code> fonksiyonumuzun <code>typeTransformList<\/code> parametresine aktar\u0131l\u0131r. Fonksiyon, <code>Kaynak<\/code> tablosunu al\u0131r ve bu listeye g\u00f6re s\u00fctun tiplerini otomatik olarak de\u011fi\u015ftirir. Art\u0131k, y\u00fczlerce s\u00fctunlu bir tablonuz olsa bile, sadece bu d\u00f6n\u00fc\u015f\u00fcm listesini g\u00fcncelleyerek saniyeler i\u00e7inde t\u00fcm s\u00fctun tiplerini de\u011fi\u015ftirebilirsiniz. Bu y\u00f6ntem, hem zaman kazand\u0131r\u0131r hem de veri d\u00f6n\u00fc\u015f\u00fcm s\u00fcre\u00e7lerinizi standartla\u015ft\u0131rarak hata oran\u0131n\u0131 ciddi \u015fekilde d\u00fc\u015f\u00fcr\u00fcr. Ayr\u0131ca, bir tablonun s\u00fctun yap\u0131s\u0131 de\u011fi\u015fti\u011finde, sadece <code>DonusumListesi<\/code>'ni g\u00fcncellemeniz yeterli olacakt\u0131r, Power Query aray\u00fcz\u00fcndeki onlarca ad\u0131m\u0131 tek tek d\u00fczeltmeye gerek kalmaz.<\/p>\n<p>Bu fonksiyon, Power Query'nin sundu\u011fu dinamik ve esnek d\u00f6n\u00fc\u015f\u00fcm yeteneklerinin sadece k\u00fc\u00e7\u00fck bir \u00f6rne\u011fidir. Fonksiyonlar\u0131 kullanarak, tekrarlayan g\u00f6revleri otomatikle\u015ftirebilir, kodunuzu daha okunabilir ve y\u00f6netilebilir hale getirebilirsiniz. Gelecek b\u00f6l\u00fcmlerde, bu fonksiyonu daha da geli\u015ftirerek farkl\u0131 senaryolara nas\u0131l adapte edebilece\u011fimizi inceleyece\u011fiz.<\/p>\n<blockquote><p>\n  Uzman \u0130pucu: M dilinde \"type any\" genel bir tiptir ve herhangi bir de\u011feri temsil eder. Ancak performans ve do\u011fruluk i\u00e7in m\u00fcmk\u00fcnse her zaman daha spesifik tipleri (type date, type number vb.) kullanmaya \u00f6zen g\u00f6sterin.\n<\/p><\/blockquote>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Birden Fazla Tabloyu Tek Bir Fonksiyonla D\u00f6n\u00fc\u015ft\u00fcrmek<\/h2>\n<p>Tek bir tablo \u00fczerinde s\u00fctun tiplerini de\u011fi\u015ftirmek g\u00fczel, ancak ger\u00e7ek d\u00fcnya projelerinde genellikle birden fazla tabloyla, hatta onlarca tabloyla \u00e7al\u0131\u015f\u0131r\u0131z. Bu tablolar\u0131n \u00e7o\u011fu zaman benzer s\u00fctun isimleri ve benzer veri t\u00fcr\u00fc ihtiya\u00e7lar\u0131 olur. \u0130\u015fte bu noktada, olu\u015fturdu\u011fumuz esnek fonksiyonun ger\u00e7ek g\u00fcc\u00fc ortaya \u00e7\u0131kar. Hayal edin: Bir e-ticaret \u015firketinin ayl\u0131k sat\u0131\u015f verilerini, her ay ayr\u0131 bir CSV dosyas\u0131nda ald\u0131\u011f\u0131n\u0131z\u0131 d\u00fc\u015f\u00fcn\u00fcn. Her dosyan\u0131n i\u00e7inde \"OrderDate\", \"Quantity\", \"UnitPrice\", \"CustomerID\" gibi s\u00fctunlar var ve her biri metin olarak geliyor. Her ay yeni bir dosya geldi\u011finde, her bir s\u00fctunu manuel olarak d\u00f6n\u00fc\u015ft\u00fcrmek yerine, tek bir fonksiyonla t\u00fcm bu tablolar\u0131 standart hale getirebiliriz.<\/p>\n<h3>Vaka Analizi: Ayl\u0131k Sat\u0131\u015f Raporlar\u0131n\u0131n Standardizasyonu<\/h3>\n<p><strong>Problem:<\/strong> Her ay gelen yeni CSV dosyalar\u0131 (\u00f6rne\u011fin, \"Sat\u0131\u015flar_202301.csv\", \"Sat\u0131\u015flar_202302.csv\" vb.) Power Query'ye aktar\u0131ld\u0131\u011f\u0131nda, \"OrderDate\" s\u00fctunu metin, \"Quantity\" ve \"UnitPrice\" s\u00fctunlar\u0131 metin ve \"CustomerID\" s\u00fctunu da metin olarak geliyor. Bu s\u00fctunlar\u0131 her seferinde manuel olarak d\u00f6n\u00fc\u015ft\u00fcrmek zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> Olu\u015fturdu\u011fumuz <code>fnChangeColumnTypes<\/code> fonksiyonunu kullanarak t\u00fcm bu tablolar\u0131 otomatik olarak d\u00f6n\u00fc\u015ft\u00fcrece\u011fiz. \u00d6ncelikle, t\u00fcm CSV dosyalar\u0131n\u0131 Power Query'ye aktarman\u0131n bir yolunu bulmal\u0131y\u0131z (\u00f6rne\u011fin, bir klas\u00f6rdeki t\u00fcm dosyalar\u0131 birle\u015ftirmek).<\/p>\n<pre><code class=\"language-m\">\n  let\n      \/\/ 1. Klas\u00f6rdeki t\u00fcm CSV dosyalar\u0131n\u0131 al\n      KaynakKlasor = Folder.Files(\"C:\\Veri\\AylikSatislar\"),\n      \n      \/\/ 2. Her bir dosyay\u0131 oku ve i\u00e7eri\u011fini tablo olarak al\n      OkunmusDosyalar = Table.AddColumn(KaynakKlasor, \"DosyaIcerigi\", each Csv.Document([Content], [Delimiter=\",\", Columns=6, Encoding=65001, QuoteStyle=QuoteStyle.Csv])),\n      \n      \/\/ 3. \u0130htiyac\u0131m\u0131z olmayan s\u00fctunlar\u0131 kald\u0131r ve sadece dosya i\u00e7eri\u011fini tut\n      Kald\u0131r\u0131lanDigerSutunlar = Table.SelectColumns(OkunmusDosyalar, {\"Name\", \"DosyaIcerigi\"}),\n      \n      \/\/ 4. D\u00f6n\u00fc\u015f\u00fcm listemizi tan\u0131mla (t\u00fcm tablolar i\u00e7in ge\u00e7erli olacak)\n      DonusumListesi = {\n          {\"OrderDate\", type date},\n          {\"Quantity\", type number},\n          {\"UnitPrice\", type currency},\n          {\"CustomerID\", type text}\n      },\n      \n      \/\/ 5. Her bir tablonun s\u00fctun tiplerini fonksiyonumuzu kullanarak d\u00f6n\u00fc\u015ft\u00fcr\n      \/\/ Table.TransformColumnTypes yerine fnChangeColumnTypes'\u0131 \u00e7a\u011f\u0131r\u0131yoruz.\n      DonusturulmusTablolar = Table.AddColumn(Kald\u0131r\u0131lanDigerSutunlar, \"DonusturulmusTablo\", each fnChangeColumnTypes([DosyaIcerigi], DonusumListesi)),\n      \n      \/\/ 6. Orijinal dosya i\u00e7eri\u011fi s\u00fctununu kald\u0131r ve d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f tabloyu geni\u015flet\n      Kald\u0131r\u0131lanOrijinalIcerik = Table.RemoveColumns(DonusturulmusTablolar, {\"DosyaIcerigi\"}),\n      GenisletilmisTablo = Table.ExpandTableColumn(Kald\u0131r\u0131lanOrijinalIcerik, \"DonusturulmusTablo\", {\"OrderDate\", \"Quantity\", \"UnitPrice\", \"CustomerID\"}, {\"OrderDate\", \"Quantity\", \"UnitPrice\", \"CustomerID\"})\n  in\n      GenisletilmisTablo\n\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki M kodu blo\u011funu inceleyelim:<\/p>\n<ol>\n<li>\u00d6ncelikle <code>Folder.Files<\/code> ile belirli bir klas\u00f6rdeki t\u00fcm dosyalar\u0131 al\u0131yoruz.<\/li>\n<li>Ard\u0131ndan, <code>Csv.Document<\/code> kullanarak her bir dosyan\u0131n i\u00e7eri\u011fini okuyup bir tabloya d\u00f6n\u00fc\u015ft\u00fcr\u00fcyoruz. Bu ad\u0131mda s\u00fctun tipleri hen\u00fcz metin olarak kal\u0131r.<\/li>\n<li><code>DonusumListesi<\/code> ad\u0131nda, t\u00fcm tablolar\u0131m\u0131z i\u00e7in ge\u00e7erli olacak standart bir d\u00f6n\u00fc\u015f\u00fcm listesi tan\u0131ml\u0131yoruz.<\/li>\n<li>En kritik ad\u0131m: <code>Table.AddColumn<\/code> ile yeni bir s\u00fctun ekleyip, bu s\u00fctunda her bir dosya i\u00e7eri\u011fi tablosu i\u00e7in <code>fnChangeColumnTypes<\/code> fonksiyonumuzu \u00e7a\u011f\u0131r\u0131yoruz. Bu, her bir alt tablonun s\u00fctun tiplerini belirledi\u011fimiz listeye g\u00f6re d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/li>\n<li>Son olarak, orijinal i\u00e7eri\u011fi kald\u0131r\u0131p d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f tablolar\u0131 geni\u015fleterek tek, birle\u015fik bir tablo elde ediyoruz.<\/li>\n<\/ol>\n<p>Bu senaryo, tek bir <code>fnChangeColumnTypes<\/code> fonksiyonunun ne kadar g\u00fc\u00e7l\u00fc olabilece\u011fini g\u00f6steriyor. Art\u0131k, yeni bir ay\u0131n verisi geldi\u011finde, yapman\u0131z gereken tek \u015fey CSV dosyas\u0131n\u0131 <code>C:\\Veri\\AylikSatislar<\/code> klas\u00f6r\u00fcne atmak ve Power Query'yi yenilemek. T\u00fcm s\u00fctun tipi d\u00f6n\u00fc\u015f\u00fcmleri otomatik olarak ve tutarl\u0131 bir \u015fekilde ger\u00e7ekle\u015fecektir. Bu y\u00f6ntem, sadece zamandan tasarruf etmekle kalmaz, ayn\u0131 zamanda veri d\u00f6n\u00fc\u015f\u00fcm s\u00fcre\u00e7lerinizde tutarl\u0131l\u0131k ve g\u00fcvenilirlik sa\u011flar.<\/p>\n<blockquote><p>\n  Uzman \u0130pucu: Fonksiyonunuzu parametrelendirerek \u00e7ok daha dinamik hale getirebilirsiniz! \u00d6rne\u011fin, farkl\u0131 kaynaklardan gelen tablolarda ayn\u0131 anlama gelen ancak farkl\u0131 adlara sahip s\u00fctunlar\u0131 (\u00f6rn. \"Sipari\u015fTarihi\" ve \"OrderDate\") tek bir d\u00f6n\u00fc\u015f\u00fcm listesiyle e\u015fle\u015ftirmek i\u00e7in fonksiyonunuzu geli\u015ftirebilirsiniz. Bu, M dilinde daha karma\u015f\u0131k \"mapping\" tablolar\u0131 olu\u015fturarak yap\u0131labilir.\n<\/p><\/blockquote>\n<p>Bu yakla\u015f\u0131m, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli ve s\u00fcrekli g\u00fcncellenen veri ortamlar\u0131nda veri m\u00fchendisleri ve analistler i\u00e7in vazge\u00e7ilmezdir. Manuel i\u015flemlerin yerine otomatize edilmi\u015f, esnek fonksiyonlar koymak, veri haz\u0131rl\u0131k s\u00fcrecini modernle\u015ftirmenin ve gelece\u011fe haz\u0131r hale getirmenin en etkili yollar\u0131ndan biridir. Ayr\u0131ca, bu t\u00fcr bir yap\u0131, veri kalitesi standartlar\u0131n\u0131 y\u00fckseltmenize ve raporlama s\u00fcre\u00e7lerinizin g\u00fcvenilirli\u011fini art\u0131rman\u0131za da yard\u0131mc\u0131 olur.<\/p>\n<h2>Daha \u0130leriye Gitmek: Geli\u015fmi\u015f \u00d6zelle\u015ftirmeler ve Hata Y\u00f6netimi<\/h2>\n<p>Olu\u015fturdu\u011fumuz temel fonksiyon harika bir ba\u015flang\u0131\u00e7 noktas\u0131. Ancak ger\u00e7ek d\u00fcnya verileri nadiren bu kadar temiz ve d\u00fczg\u00fcn gelir. Geli\u015fmi\u015f senaryolar, dinamik s\u00fctun adlar\u0131, yerel ayarlar (locale) ve hata y\u00f6netimi gibi ek \u00f6zellikler gerektirebilir. \u015eimdi, fonksiyonumuzu daha sa\u011flam ve esnek hale getirmek i\u00e7in baz\u0131 ileri d\u00fczey tekniklere bakal\u0131m.<\/p>\n<h3>Ko\u015fullu Tip De\u011fi\u015fiklikleri ve Hata Y\u00f6netimi<\/h3>\n<p>Bazen bir s\u00fctun, bekledi\u011fimiz tipte olmayan de\u011ferler i\u00e7erebilir. \u00d6rne\u011fin, bir say\u0131 s\u00fctununda \"N\/A\" veya bo\u015f metinler olabilir. <code>Table.TransformColumnTypes<\/code> varsay\u0131lan olarak bu durumda hata f\u0131rlat\u0131r. Bunu y\u00f6netmek i\u00e7in M dilindeki <code>try...otherwise<\/code> yap\u0131s\u0131n\u0131 kullanabiliriz.<\/p>\n<pre><code class=\"language-m\">\n  \/\/ \u00d6rnek: Bir metni say\u0131ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcrken hata y\u00f6netimi\n  TextToNumberWithNull = (textValue as text) as nullable number =>\n      try Number.From(textValue) otherwise null;\n\n  \/\/ Fonksiyonunuzda bu mant\u0131\u011f\u0131 uygulamak i\u00e7in\n  \/\/ typeTransformList'i g\u00fcncelleyebilirsiniz:\n  \/\/ {\"Miktar\", TextToNumberWithNull} \u015feklinde do\u011frudan kullanamay\u0131z,\n  \/\/ \u00e7\u00fcnk\u00fc Table.TransformColumnTypes M tipi bekler.\n  \/\/ Bunun yerine, her s\u00fctun i\u00e7in ayr\u0131 ayr\u0131 Try...Otherwise ad\u0131m\u0131 uygulayabiliriz\n  \/\/ veya daha karma\u015f\u0131k bir fonksiyon yazabiliriz.\n  \/\/ Pratik ve okunabilir bir yakla\u015f\u0131m i\u00e7in:\n  let\n      Kaynak = MyTable,\n      \/\/ Miktar s\u00fctununu say\u0131ya d\u00f6n\u00fc\u015ft\u00fcr, hata olursa null yap\n      MiktarDonusum = Table.TransformColumns(Kaynak, {{\"Miktar\", each try Number.From(_) otherwise null, type nullable number}}),\n      \/\/ Di\u011fer s\u00fctunlar i\u00e7in normal tip d\u00f6n\u00fc\u015f\u00fcm\u00fc yap\n      \/\/ ...\n  in\n      MiktarDonusum\n\n<\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131m, her s\u00fctun i\u00e7in ayr\u0131 ayr\u0131 <code>Table.TransformColumns<\/code> kullanmay\u0131 gerektirebilir, bu da tek fonksiyonumuzun esnekli\u011fini azalt\u0131r. Daha geli\u015fmi\u015f bir <code>fnChangeColumnTypes<\/code> s\u00fcr\u00fcm\u00fc, <code>typeTransformList<\/code> i\u00e7inde bir hata i\u015fleme stratejisi belirtecek ek bir parametre alabilir veya her d\u00f6n\u00fc\u015f\u00fcm\u00fc bir <code>try...otherwise<\/code> sarmalay\u0131c\u0131 i\u00e7inde ger\u00e7ekle\u015ftirebilir. Ancak bu, fonksiyonun karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<h3>Dinamik S\u00fctun Alg\u0131lama ve Varsay\u0131lan Tipler<\/h3>\n<p>Ya s\u00fctun adlar\u0131 s\u00fcrekli de\u011fi\u015fiyorsa veya sadece belirli bir desenle e\u015fle\u015fen s\u00fctunlar\u0131 d\u00f6n\u00fc\u015ft\u00fcrmek istiyorsak? <code>Table.ColumnNames<\/code> fonksiyonu, bir tablonun t\u00fcm s\u00fctun adlar\u0131n\u0131 dinamik olarak alman\u0131z\u0131 sa\u011flar. Bunu kullanarak, d\u00f6n\u00fc\u015f\u00fcm listemizi dinamik olarak olu\u015fturabiliriz.<\/p>\n<pre><code class=\"language-m\">\n  (inputTable as table, optional typeMap as list) as table =>\n  let\n      \/\/ Varsay\u0131lan d\u00f6n\u00fc\u015f\u00fcm listesi, e\u011fer typeMap sa\u011flanmazsa\n      DefaultTypeMap = {\n          {\"ID\", type text},\n          {\"Miktar\", type number},\n          {\"Tarih\", type date}\n      },\n      \/\/ E\u011fer typeMap sa\u011flanm\u0131\u015fsa onu kullan, yoksa varsay\u0131lan\u0131 kullan\n      ActualTypeMap = if typeMap = null then DefaultTypeMap else typeMap,\n      \n      \/\/ S\u00fctunlar\u0131n mevcut adlar\u0131n\u0131 al\n      AvailableColumns = Table.ColumnNames(inputTable),\n      \n      \/\/ D\u00f6n\u00fc\u015f\u00fcm listemizdeki her bir \u00f6\u011fe i\u00e7in, e\u011fer s\u00fctun tablomuzda varsa, onu dahil et\n      FilteredTypeMap = List.Select(ActualTypeMap, each List.Contains(AvailableColumns, Record.Field(_, 0))),\n      \n      \/\/ M tipi d\u00f6n\u00fc\u015f\u00fcm format\u0131na getir ({\"SutunAdi\", Type})\n      FinalTypeTransformList = List.Transform(FilteredTypeMap, each {Record.Field(_, 0), Record.Field(_, 1)}),\n      \n      ChangedTypes = if List.IsEmpty(FinalTypeTransformList) then inputTable else Table.TransformColumnTypes(inputTable, FinalTypeTransformList)\n  in\n      ChangedTypes\n\n<\/pre>\n<p><\/code><\/p>\n<p>Bu fonksiyon, art\u0131k iste\u011fe ba\u011fl\u0131 bir <code>typeMap<\/code> al\u0131yor. E\u011fer sa\u011flanmazsa, \u00f6nceden tan\u0131mlanm\u0131\u015f bir <code>DefaultTypeMap<\/code> kullan\u0131r. Ayr\u0131ca, tabloda bulunmayan s\u00fctunlar i\u00e7in d\u00f6n\u00fc\u015f\u00fcm yapmaya \u00e7al\u0131\u015fmaz, bu da hatalar\u0131 \u00f6nler.<\/p>\n<h3>Yerel Ayar (Locale) Fark\u0131ndal\u0131\u011f\u0131<\/h3>\n<p>Say\u0131lar ve tarihler, farkl\u0131 b\u00f6lgelerde farkl\u0131 formatlarda yaz\u0131labilir. \u00d6rne\u011fin, \"12.345,67\" Avrupa'da bir say\u0131 iken, ABD'de \"12,345.67\" \u015feklinde yaz\u0131l\u0131r. Power Query'de <code>Table.TransformColumnTypes<\/code> fonksiyonu, iste\u011fe ba\u011fl\u0131 \u00fc\u00e7\u00fcnc\u00fc bir parametre olarak <code>locale<\/code> bilgisi alabilir.<\/p>\n<pre><code class=\"language-m\">\n  \/\/ Mevcut fonksiyonumuzu bu \u015fekilde g\u00fcncelleyebiliriz:\n  (inputTable as table, typeTransformList as list, optional locale as text) as table =>\n  let\n      \/\/ E\u011fer locale sa\u011flanmam\u0131\u015fsa, varsay\u0131lan bir de\u011fer kullanabiliriz veya bo\u015f b\u0131rakabiliriz\n      EffectiveLocale = if locale = null then Culture.Current else locale,\n      \n      \/\/ Her bir tip d\u00f6n\u00fc\u015f\u00fcm\u00fc i\u00e7in locale bilgisini ekleyerek yeni bir liste olu\u015ftur\n      \/\/ Table.TransformColumnTypes'\u0131n format\u0131 her bir \u00f6\u011fe i\u00e7in {sutun_ad\u0131, yeni_tip, locale} \u015feklindedir.\n      FormattedTransformList = List.Transform(typeTransformList, each \n          if List.Contains({type number, type date, type datetime, type datetimezone, type currency}, List.Last(_)) \/\/ Sadece say\u0131sal ve tarihsel tipler i\u00e7in locale ekle\n          then {List.First(_), List.Last(_), EffectiveLocale} \n          else {List.First(_), List.Last(_)}\n      ),\n      \n      ChangedTypes = Table.TransformColumnTypes(inputTable, FormattedTransformList)\n  in\n      ChangedTypes\n\n<\/pre>\n<p><\/code><\/p>\n<p>Art\u0131k fonksiyonumuz, bir <code>locale<\/code> parametresi alarak, say\u0131 ve tarih d\u00f6n\u00fc\u015f\u00fcmlerinde b\u00f6lgesel farkl\u0131l\u0131klar\u0131 da g\u00f6z \u00f6n\u00fcnde bulundurabilir. \u00d6rne\u011fin, <code>fnChangeColumnTypes(MyTable, DonusumListesi, \"en-US\")<\/code> veya <code>fnChangeColumnTypes(MyTable, DonusumListesi, \"tr-TR\")<\/code> \u015feklinde \u00e7a\u011f\u0131rabilirsiniz.<\/p>\n<h3>Performans D\u00fc\u015f\u00fcnceleri<\/h3>\n<p>B\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken, her ad\u0131m\u0131n performansa etkisi olabilir. Fonksiyonlar\u0131m\u0131z\u0131 m\u00fcmk\u00fcn oldu\u011funca verimli yazmaya \u00e7al\u0131\u015fmal\u0131y\u0131z. \u00d6zellikle dinamik s\u00fctun alg\u0131lama gibi ad\u0131mlar, her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda tablonun s\u00fctunlar\u0131n\u0131 yeniden okuyaca\u011f\u0131 i\u00e7in k\u00fc\u00e7\u00fck bir ek y\u00fck getirebilir. Ancak genel olarak, tek bir <code>Table.TransformColumnTypes<\/code> \u00e7a\u011fr\u0131s\u0131, aray\u00fczden yap\u0131lan bir dizi ayr\u0131 ad\u0131mdan genellikle daha verimlidir \u00e7\u00fcnk\u00fc Power Query motoru bu t\u00fcr toplu i\u015flemleri daha iyi optimize edebilir. Karma\u015f\u0131k ko\u015fullu d\u00f6n\u00fc\u015f\u00fcmlerde (\u00f6rn. <code>try...otherwise<\/code> her h\u00fccre i\u00e7in ayr\u0131 ayr\u0131 \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda), performans biraz d\u00fc\u015febilir. Bu gibi durumlarda, \u00f6nce veriyi filtreleyip temizleyerek d\u00f6n\u00fc\u015f\u00fcm\u00fcn sadece temizlenmi\u015f veri \u00fczerinde yap\u0131lmas\u0131n\u0131 sa\u011flamak veya daha optimize edilmi\u015f M dilindeki yerle\u015fik fonksiyonlar\u0131 kullanmak faydal\u0131 olabilir.<\/p>\n<blockquote><p>\n  Uzman \u0130pucu: B\u00fcy\u00fck veri setlerinde d\u00f6n\u00fc\u015f\u00fcm ad\u0131mlar\u0131n\u0131 optimize etmek performans\u0131 kritik d\u00fczeyde etkiler. D\u00f6n\u00fc\u015f\u00fcm listesini m\u00fcmk\u00fcn oldu\u011funca sabit tutmaya \u00e7al\u0131\u015f\u0131n ve gereksiz yere dinamik hesaplamalardan ka\u00e7\u0131n\u0131n. Ayr\u0131ca, <code>Table.Buffer<\/code> gibi fonksiyonlar\u0131 kullanarak ara tablolar\u0131 belle\u011fe alarak performans\u0131 art\u0131rabilirsiniz, ancak bunu yaparken bellek t\u00fcketimine dikkat edin.\n<\/p><\/blockquote>\n<p>Bu ileri d\u00fczey tekniklerle, Power Query d\u00f6n\u00fc\u015f\u00fcm fonksiyonunuzu \u00e7ok daha sa\u011flam, uyarlanabilir ve hata toleransl\u0131 hale getirebilirsiniz. Bu, karma\u015f\u0131k veri entegrasyonu ve haz\u0131rl\u0131k projelerinde size \u00f6nemli bir avantaj sa\u011flayacakt\u0131r.<\/p>\n<h2>Mobil Uyumlu HTML ve Neden \u00d6nemli?<\/h2>\n<p>Bu teknik makale Power Query \u00fczerine olsa da, i\u00e7erik t\u00fcketimi ba\u011flam\u0131nda mobil uyumluluk her t\u00fcrl\u00fc dijital i\u00e7erik i\u00e7in vazge\u00e7ilmez bir konudur. Okuyucular\u0131n makalelerinize farkl\u0131 cihazlardan (masa\u00fcst\u00fc, tablet, telefon) eri\u015febilece\u011fini g\u00f6z \u00f6n\u00fcnde bulundurarak, sundu\u011funuz HTML i\u00e7eri\u011finin mobil uyumlu olmas\u0131, kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.<\/p>\n<h3>Neden Mobil Uyumlu HTML?<\/h3>\n<ul>\n<li><strong>Geni\u015f Kitleye Eri\u015filebilirlik:<\/strong> Art\u0131k \u00e7o\u011fu internet trafi\u011fi mobil cihazlar \u00fczerinden ger\u00e7ekle\u015fiyor. \u0130\u00e7eri\u011finiz mobil uyumlu de\u011filse, potansiyel okuyucular\u0131n b\u00fcy\u00fck bir k\u0131sm\u0131na ula\u015famayabilirsiniz.<\/li>\n<li><strong>Kullan\u0131c\u0131 Deneyimi:<\/strong> Mobil cihazlarda okunmas\u0131 zor, yanlara kayd\u0131rma gerektiren veya k\u00fc\u00e7\u00fck metinli sayfalar, kullan\u0131c\u0131lar\u0131 h\u0131zla siteden uzakla\u015ft\u0131r\u0131r. \u0130yi bir kullan\u0131c\u0131 deneyimi, okuyucunun i\u00e7eri\u011finize odaklanmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>SEO Avantaj\u0131:<\/strong> Arama motorlar\u0131 (\u00f6zellikle Google), mobil uyumlu siteleri s\u0131ralamada \u00f6ncelikli tutar. Responsive tasar\u0131m, SEO performans\u0131n\u0131z i\u00e7in do\u011frudan bir etkendir.<\/li>\n<li><strong>Profesyonel \u0130maj:<\/strong> Teknik i\u00e7erik sunan bir platformun veya yazar\u0131n mobil uyumlulu\u011fu g\u00f6z ard\u0131 etmesi, profesyonellikten uzak bir imaj \u00e7izebilir.<\/li>\n<\/ul>\n<h3>HTML \u0130\u00e7eri\u011finde Mobil Uyumluluk Nas\u0131l Sa\u011flan\u0131r?<\/h3>\n<p>Temel olarak, HTML i\u00e7eri\u011finizin mobil uyumlu olmas\u0131 i\u00e7in CSS ve <code>meta<\/code> etiketlerinden yararlan\u0131l\u0131r. Bir makale i\u00e7eri\u011fi sunarken, bu etiketlerin HTML sayfan\u0131z\u0131n <code><head><\/code> b\u00f6l\u00fcm\u00fcnde do\u011fru \u015fekilde ayarland\u0131\u011f\u0131ndan emin olmak gerekir.<\/p>\n<h4>Viewport Meta Etiketi<\/h4>\n<p>En temel ad\u0131m, taray\u0131c\u0131ya sayfan\u0131n geni\u015fli\u011fini cihaz\u0131n geni\u015fli\u011fine g\u00f6re ayarlamas\u0131n\u0131 s\u00f6yleyen <code>viewport<\/code> meta etiketidir. Bu etiket, genellikle bir web sayfas\u0131n\u0131n <code><head><\/code> b\u00f6l\u00fcm\u00fcnde yer al\u0131r:<\/p>\n<pre><code class=\"language-html\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<\/pre>\n<p><\/code><\/p>\n<ul>\n<li><code>width=device-width<\/code>: Sayfan\u0131n geni\u015fli\u011fini cihaz\u0131n ekran geni\u015fli\u011fiyle e\u015fle\u015ftirir.<\/li>\n<li><code>initial-scale=1.0<\/code>: Sayfa ilk y\u00fcklendi\u011finde varsay\u0131lan yak\u0131nla\u015ft\u0131rma d\u00fczeyini ayarlar.<\/li>\n<\/ul>\n<h4>Esnek D\u00fczen ve \u0130\u00e7erik<\/h4>\n<p>HTML i\u00e7eri\u011finizdeki \u00f6\u011felerin (resimler, tablolar, metin bloklar\u0131) esnek olmas\u0131 \u00f6nemlidir. Geni\u015fli\u011fi sabit piksel de\u011ferleriyle ayarlamak yerine, y\u00fczde de\u011ferleri (<code>width: 100%;<\/code>) veya <code>max-width<\/code> gibi \u00f6zellikler kullanmak, i\u00e7eriklerin farkl\u0131 ekran boyutlar\u0131na uyum sa\u011flamas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h4>Medya Sorgular\u0131 (Media Queries)<\/h4>\n<p>CSS medya sorgular\u0131, belirli ekran geni\u015fliklerine, cihaz tiplerine veya y\u00f6nelimlerine g\u00f6re farkl\u0131 stil kurallar\u0131 uygulaman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, mobil cihazlarda s\u00fctunlar\u0131 \u00fcst \u00fcste y\u0131\u011fmak veya font boyutlar\u0131n\u0131 k\u00fc\u00e7\u00fcltmek isteyebilirsiniz.<\/p>\n<pre><code class=\"language-css\">\n  \/* Genel stil kurallar\u0131 (masa\u00fcst\u00fc i\u00e7in optimize edilmi\u015f olabilir) *\/\n  body {\n      font-size: 16px;\n      line-height: 1.6;\n  }\n  .container {\n      width: 960px;\n      margin: 0 auto;\n  }\n\n  \/* Mobil cihazlar i\u00e7in stil kurallar\u0131 (ekran geni\u015fli\u011fi 768px veya daha az ise) *\/\n  @media only screen and (max-width: 768px) {\n      body {\n          font-size: 14px;\n      }\n      .container {\n          width: 100%;\n          padding: 10px;\n      }\n      h2 {\n          font-size: 20px;\n      }\n      \/* Kod bloklar\u0131 i\u00e7in yatay kayd\u0131rma \u00e7ubu\u011fu *\/\n      pre {\n          overflow-x: auto;\n          white-space: pre-wrap; \/* Uzun sat\u0131rlar\u0131 otomatik k\u0131rar *\/\n          word-wrap: break-word; \/* Uzun kelimeleri de k\u0131rar *\/\n      }\n  }\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnek, <code>max-width: 768px<\/code> alt\u0131ndaki ekranlarda font boyutunu k\u00fc\u00e7\u00fclt\u00fcr ve <code>.container<\/code> s\u0131n\u0131f\u0131na sahip \u00f6\u011fenin geni\u015fli\u011fini tam ekrana yayar. <code>pre<\/code> etiketi i\u00e7in eklenen <code>overflow-x: auto<\/code> \u00f6zelli\u011fi, kod bloklar\u0131n\u0131n mobil cihazlarda ekran d\u0131\u015f\u0131na ta\u015fmas\u0131n\u0131 engeller ve yatay kayd\u0131rma \u00e7ubu\u011fu sa\u011flar, b\u00f6ylece kodun tamam\u0131 g\u00f6r\u00fcnt\u00fclenebilir olur.<\/p>\n<p>Sonu\u00e7 olarak, haz\u0131rlad\u0131\u011f\u0131n\u0131z Power Query makalesinin kendisi ne kadar teknik ve detayl\u0131 olursa olsun, bu i\u00e7eri\u011fin farkl\u0131 cihazlarda kolayca okunabilir ve t\u00fcketilebilir olmas\u0131, bilginin etkin bir \u015fekilde aktar\u0131lmas\u0131 i\u00e7in hayati \u00f6nem ta\u015f\u0131r. Mobil uyumluluk, g\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda sadece bir l\u00fcks de\u011fil, bir gerekliliktir.<\/p>\n<h2>Sonu\u00e7: D\u00f6n\u00fc\u015f\u00fcmlerinizi Ger\u00e7ekten H\u0131zland\u0131r\u0131n!<\/h2>\n<p>Bu makale boyunca, Power Query'nin g\u00fcc\u00fcn\u00fc kullanarak s\u00fctun tipi d\u00f6n\u00fc\u015f\u00fcmlerini nas\u0131l otomatikle\u015ftirebilece\u011fimizi ve esnek bir M fonksiyonu arac\u0131l\u0131\u011f\u0131yla nas\u0131l daha verimli hale getirebilece\u011fimizi ayr\u0131nt\u0131l\u0131 olarak inceledik. G\u00f6rd\u00fck ki, manuel ve tekrarlayan g\u00f6revler yerine M dilinin dinamik yeteneklerinden faydalanmak, veri haz\u0131rl\u0131k s\u00fcre\u00e7lerimizi h\u0131zland\u0131r\u0131rken, insan kaynakl\u0131 hatalar\u0131 minimuma indiriyor ve genel veri kalitemizi art\u0131r\u0131yor.<\/p>\n<p>Olu\u015fturdu\u011fumuz <code>fnChangeColumnTypes<\/code> fonksiyonu, sadece bir ba\u015flang\u0131\u00e7 noktas\u0131. Onu yerel ayar deste\u011fiyle zenginle\u015ftirdik, hata y\u00f6netimi stratejileri \u00fczerine d\u00fc\u015f\u00fcnd\u00fck ve dinamik s\u00fctun alg\u0131lama yetenekleri ekleyerek daha da g\u00fc\u00e7l\u00fc hale getirdik. Bu ara\u00e7lar, \u00f6zellikle \u00e7ok say\u0131da veri kayna\u011f\u0131yla \u00e7al\u0131\u015fan, s\u00fcrekli de\u011fi\u015fen veya b\u00fcy\u00fcyen veri setlerini y\u00f6neten analistler ve veri m\u00fchendisleri i\u00e7in paha bi\u00e7ilmez birer yard\u0131mc\u0131d\u0131r. Art\u0131k Power Query'deki rutin s\u00fctun tipi de\u011fi\u015fiklikleri, tek bir fonksiyon \u00e7a\u011fr\u0131s\u0131yla an\u0131nda ve tutarl\u0131 bir \u015fekilde ger\u00e7ekle\u015febilir.<\/p>\n<p>Power Query'nin sundu\u011fu bu esneklik, sadece zaman kazand\u0131rmakla kalmaz, ayn\u0131 zamanda veri d\u00f6n\u00fc\u015f\u00fcm i\u015f ak\u0131\u015flar\u0131n\u0131zda bir standartla\u015fma sa\u011flar. Herkesin ayn\u0131 fonksiyonu kullanmas\u0131, veri modelinizin tutarl\u0131l\u0131\u011f\u0131n\u0131 garanti eder ve hatal\u0131 veri tipleri nedeniyle ortaya \u00e7\u0131kabilecek karma\u015f\u0131k sorunlar\u0131n \u00f6n\u00fcne ge\u00e7er. Bu sayede, daha az veri temizli\u011fiyle u\u011fra\u015farak, daha fazla zaman\u0131 verileri analiz etmeye ve i\u015f de\u011feri olu\u015fturmaya ay\u0131rabilirsiniz. Unutmay\u0131n, M dili sonsuz olanaklar sunar ve bu makalede \u00f6\u011frendikleriniz, kendi yarat\u0131c\u0131 \u00e7\u00f6z\u00fcmlerinizi geli\u015ftirmek i\u00e7in size ilham verecektir. Deney yapmaktan \u00e7ekinmeyin ve Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi ger\u00e7ekten \"s\u00fcper \u015farj edin\"!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ol>\n<li>\n        <strong>Bu fonksiyon sadece belirli bir veri kayna\u011f\u0131 i\u00e7in mi ge\u00e7erli?<\/strong><\/p>\n<p>Hay\u0131r, olu\u015fturdu\u011fumuz <code>fnChangeColumnTypes<\/code> fonksiyonu, Power Query'nin destekledi\u011fi herhangi bir tablo yap\u0131s\u0131ndaki veri kayna\u011f\u0131 (Excel, CSV, Veritaban\u0131, API vb.) i\u00e7in kullan\u0131labilir. Fonksiyon, kendisine iletilen Power Query tablosu \u00fczerinde i\u015flem yapar, kayna\u011f\u0131n t\u00fcr\u00fcnden ba\u011f\u0131ms\u0131zd\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>Performans \u00fczerinde bir etkisi var m\u0131?<\/strong><\/p>\n<p>Genellikle, bu t\u00fcr optimize edilmi\u015f bir M fonksiyonu, Power Query aray\u00fcz\u00fcnden yap\u0131lan manuel ad\u0131mlardan daha iyi veya en az\u0131ndan e\u015fde\u011fer performans sunar. \u00d6zellikle \u00e7ok say\u0131da s\u00fctunun tek seferde d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi gerekti\u011finde, <code>Table.TransformColumnTypes<\/code> gibi yerle\u015fik fonksiyonlar toplu i\u015flemleri verimli bir \u015fekilde ger\u00e7ekle\u015ftirir. Ancak, karma\u015f\u0131k hata y\u00f6netimi veya her sat\u0131rda \u00f6zel d\u00f6n\u00fc\u015f\u00fcmler i\u00e7eren \u00e7ok dinamik fonksiyonlar, \u00e7ok b\u00fcy\u00fck veri setlerinde k\u00fc\u00e7\u00fck bir ek y\u00fck getirebilir.<\/p>\n<\/li>\n<li>\n        <strong>Hata al\u0131rsam ne yapmal\u0131y\u0131m?<\/strong><\/p>\n<p>Hata alman\u0131z durumunda, \u00f6ncelikle d\u00f6n\u00fc\u015f\u00fcm listenizi (<code>typeTransformList<\/code>) kontrol edin. S\u00fctun adlar\u0131n\u0131n do\u011fru yaz\u0131ld\u0131\u011f\u0131ndan ve hedef tiplerin (<code>type date<\/code>, <code>type number<\/code> vb.) M diline uygun oldu\u011fundan emin olun. Ayr\u0131ca, veri kayna\u011f\u0131n\u0131zdaki de\u011ferlerin, hedef tipe d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilecek formatta olup olmad\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n. \u00d6rne\u011fin, bir metin \"ABC\" de\u011ferini <code>type number<\/code>'a d\u00f6n\u00fc\u015ft\u00fcrmeye \u00e7al\u0131\u015fmak hataya yol a\u00e7acakt\u0131r. Hata y\u00f6netimi i\u00e7in makalede bahsedilen <code>try...otherwise<\/code> yakla\u015f\u0131m\u0131n\u0131 uygulayabilirsiniz.<\/p>\n<\/li>\n<li>\n        <strong>Bu fonksiyonu Power BI ve Excel'de kullanabilir miyim?<\/strong><\/p>\n<p>Evet, kesinlikle! Power Query, hem Power BI Desktop'\u0131n hem de Excel'in g\u00fc\u00e7l\u00fc bir par\u00e7as\u0131d\u0131r. Bu makalede olu\u015fturdu\u011fumuz M dili fonksiyonunu her iki platformdaki Power Query d\u00fczenleyicisinde de tan\u0131mlayabilir ve kullanabilirsiniz. Kod tamamen ayn\u0131 \u015fekilde \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>T\u00fcm s\u00fctunlar\u0131 otomatik olarak metne d\u00f6n\u00fc\u015ft\u00fcrmek m\u00fcmk\u00fcn m\u00fc?<\/strong><\/p>\n<p>Evet, t\u00fcm s\u00fctunlar\u0131 metne d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in de benzer bir dinamik yakla\u015f\u0131m kullanabilirsiniz. \u00d6ncelikle <code>Table.ColumnNames<\/code> ile tablodaki t\u00fcm s\u00fctun adlar\u0131n\u0131 al\u0131n, ard\u0131ndan bu liste \u00fczerinde d\u00f6ng\u00fc yaparak her s\u00fctun i\u00e7in hedef tip olarak <code>type text<\/code> belirten bir d\u00f6n\u00fc\u015f\u00fcm listesi olu\u015fturup <code>Table.TransformColumnTypes<\/code>'a iletebilirsiniz.<\/p>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query&#8217;nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32207","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon<\/title>\n<meta name=\"description\" content=\"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query&#039;nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon\" \/>\n<meta property=\"og:description\" content=\"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query&#039;nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-18T22:31:12+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon\",\"datePublished\":\"2025-10-18T22:31:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\"},\"wordCount\":4238,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\",\"name\":\"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-18T22:31:12+00:00\",\"description\":\"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query'nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon","description":"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query'nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/","og_locale":"tr_TR","og_type":"article","og_title":"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon","og_description":"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query'nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.","og_url":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-18T22:31:12+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon","datePublished":"2025-10-18T22:31:12+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/"},"wordCount":4238,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/","url":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/","name":"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-18T22:31:12+00:00","description":"Veri d\u00f6n\u00fc\u015f\u00fcmleri s\u0131ras\u0131nda s\u00fctun tiplerini manuel olarak de\u011fi\u015ftirmekten s\u0131k\u0131ld\u0131n\u0131z m\u0131? Power Query'nin g\u00fcc\u00fcn\u00fc kullanarak, bu yorucu g\u00f6revi otomatik ve esnek bir fonksiyona d\u00f6n\u00fc\u015ft\u00fcrmeye ne dersiniz? Bu makale, Power Query d\u00f6n\u00fc\u015f\u00fcmlerinizi h\u0131zland\u0131racak, zamandan tasarruf sa\u011flayacak ve hatalar\u0131 en aza indirecek \u00f6zel bir M dili fonksiyonu olu\u015fturma yolculu\u011funa \u00e7\u0131karacak.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/power-query-donusumlerinizi-hizlandirin-sutun-tiplerini-degistirmek-icin-esnek-bir-fonksiyon\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Power Query D\u00f6n\u00fc\u015f\u00fcmlerinizi H\u0131zland\u0131r\u0131n: S\u00fctun Tiplerini De\u011fi\u015ftirmek i\u00e7in Esnek Bir Fonksiyon"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32207"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32207\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}