# 2026'da Excel Power Query: Veri Analistleri için ETL ve Mülakat Soruları > ETL işlemleri, veri dönüşümü ve M dili temelleri için Excel Power Query'de ustalaşma. Veri analisti pozisyonları için pratik örnekler ve yaygın mülakat soruları. - Published: 2026-09-20 - Updated: 2026-09-20 - Author: Anthony Fillion-Maillet - Tags: excel, power-query, etl, data-analytics, m-dili - Reading time: 11 min --- Excel Power Query, veri analistlerinin ETL (Çıkar, Dönüştür, Yükle) iş akışlarını doğrudan Excel içinde gerçekleştirme biçimini dönüştürür. Manuel kopyala-yapıştır veya karmaşık VBA makroları yerine, Power Query tek tıklamayla yenilenen tekrarlanabilir veri dönüşümlerini mümkün kılan M dili tarafından desteklenen görsel bir arayüz sunar. > **Power Query kullanılabilirliği** > > Power Query, Excel 365, Excel 2021, Excel 2019 ve Excel 2016'da yerleşik olarak bulunur. Önceki sürümlerde "Power Query for Excel" adlı ücretsiz bir eklenti olarak mevcuttu. Aynı motor Power BI Desktop veri akışlarını da çalıştırır. ## Power Query veri analistleri için neyi çözer Veri analistleri veri hazırlığına önemli zaman harcar: farklı kaynaklardan dosyaları birleştirmek, tutarsız formatları temizlemek, alakasız satırları filtrelemek ve tabloları analiz için yeniden şekillendirmek. Power Query, her dönüşüm adımını kaydeden bir sorgu düzenleyicisi aracılığıyla bu görevleri ele alır. Kaynak veriler değiştiğinde, tüm pipeline otomatik olarak yeniden çalışır. İş akışı üç aşamayı takip eder: veri kaynaklarına bağlanma, dönüşümleri uygulama ve sonuçları Excel tablolarına veya veri modeline yükleme. Her adım, gelişmiş senaryolar için doğrudan düzenlenebilen M dili sözdizimi kullanılarak formül çubuğunda kaydedilir. Bu yaklaşım geleneksel Excel formüllerinden farklıdır. Formüller hücreleri yeniden hesaplarken, Power Query çalışma sayfasına ulaşmadan önce tüm tablolar üzerinde çalışır. 50 CSV dosyasını birleştiren, yinelenenleri kaldıran ve sütunları ters pivotlayan bir sorgu bir kez çalışır ve çalışma kitabını yavaşlatan karmaşık iç içe formüller oluşturmak yerine temiz bir tablo üretir. ## Veri Al ile veri kaynaklarına bağlanma Power Query dosyalara (CSV, Excel, JSON, XML), veritabanlarına (SQL Server, MySQL, PostgreSQL, Oracle), bulut hizmetlerine (SharePoint, Azure, Salesforce) ve web sayfalarına bağlantıları destekler. Bağlantı türü, hangi kimlik doğrulama ve içe aktarma seçeneklerinin görüneceğini belirler. ```plaintext // Power Query'de yaygın veri kaynakları Veri > Veri Al > Dosyadan > CSV'den Veri > Veri Al > Veritabanından > SQL Server Veritabanından Veri > Veri Al > Diğer Kaynaklardan > Web'den Veri > Veri Al > Klasörden (birden çok dosya) ``` "Klasörden" seçeneği birden çok dosyayı birleştirmek için özellikle kullanışlıdır. Her dosyayı ayrı ayrı içe aktarmak yerine, Power Query bir klasörü tarar, eşleşen tüm dosyaları listeler ve bunları tek bir sorguda birleştirir. Klasöre yeni bir dosya eklemek, sonraki yenilemede otomatik olarak dahil edilir. Bir SQL veritabanına bağlanırken, Power Query sorgu katlama yoluyla dönüşüm mantığını sunucuya itebilir. Filtreler ve sütun seçimleri SQL WHERE ve SELECT cümleciklerine dönüştürülür ve Excel'e aktarılan veri miktarını azaltır. Formül çubuğu, katlama aktifken "Yerel Sorguyu Görüntüle" seçeneğini gösterir. ## Sorgu Düzenleyicisinde temel dönüşümler Sorgu Düzenleyicisi yaygın işlemler için şerit komutları sağlar, ancak altta yatan M kodunu anlamak özelleştirmeler gerektiğinde yardımcı olur. Her dönüşüm "Uygulanan Adımlar" bölmesine bir adım ekler ve denetlenebilir bir dizi oluşturur. ### Satırları filtreleme ve sıralama Filtreleme, ölçütleri karşılamayan satırları kaldırır. Sütun başlığı açılır menüsü hızlı filtreler sağlarken, "Satırları Filtrele" iletişim kutusu AND/OR mantığıyla karmaşık koşulları destekler. ```m // M dilinde FilteredRows adımı let Source = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content], FilteredRows = Table.SelectRows(Source, each [Region] = "EMEA" and [Amount] > 1000) in FilteredRows ``` `Table.SelectRows` fonksiyonu bir tablo ve bir koşul alır. `each` anahtar kelimesi `_`'nin geçerli satırı temsil ettiği bir fonksiyon oluşturur ve alan erişimi köşeli parantez notasyonu `[Region]` kullanır. Birden çok koşul `and` veya `or` operatörleriyle birleştirilir. ### Sütunları kaldırma ve yeniden adlandırma Veri kaynakları genellikle analiz için gerekli olmayan sütunlar içerir. Bunları erken kaldırmak bellek kullanımını azaltır ve sonraki adımları basitleştirir. ```m // Sütunları kaldır, ardından kalanları yeniden adlandır let Source = Excel.CurrentWorkbook(){[Name="RawData"]}[Content], RemovedColumns = Table.RemoveColumns(Source, {"TempID", "InternalNotes", "Debug"}), RenamedColumns = Table.RenameColumns(RemovedColumns, {{"Cust_Name", "CustomerName"}, {"Amt", "Amount"}}) in RenamedColumns ``` Sütun listesi birden çok öğe için süslü parantez `{}` kullanır. Yeniden adlandırma, her çiftin eski adı ve yeni adı içerdiği bir çift listesi alır. Sorgular arasında tutarlı adlandırma kuralları, veri kümelerini birleştirmeyi kolaylaştırır. ### Sütunları bölme ve birleştirme Metin sütunları sıklıkla ayrıştırma gerektirir. Bir "FullName" sütununun ad ve soyada bölünmesi gerekebilir veya ayrı tarih ve saat sütunlarının birleştirilmesi gerekebilir. ```m // FullName'i ayırıcıyla iki sütuna böl let Source = Excel.CurrentWorkbook(){[Name="Contacts"]}[Content], SplitColumn = Table.SplitColumn(Source, "FullName", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"FirstName", "LastName"}) in SplitColumn ``` `Splitter.SplitTextByDelimiter` fonksiyonu ayrıştırma mantığını işler. Daha karmaşık desenler için `Splitter.SplitTextByEachDelimiter` veya `Splitter.SplitTextByPositions` ek kontrol sunar. Sonuç sütun sayısı değiştiğinde, Power Query sütunları dinamik olarak oluşturur. ## Tür dönüşümleri ve veri kalitesi Power Query içe aktarma sırasında sütun türlerini tahmin eder, ancak açık tür ataması hataları erken yakalar. Sayısal ID'ler içeren bir metin sütunu, başındaki sıfırlar önemliyse metin olarak kalmalıdır. Metin olarak içe aktarılan tarih sütunları sıralama sorunlarına neden olur. ```m // Açık tür atamaları let Source = Csv.Document(File.Contents("C:\\Data\\transactions.csv")), TypedColumns = Table.TransformColumnTypes(Source, { {"TransactionID", type text}, {"Date", type date}, {"Amount", type number}, {"IsProcessed", type logical} }) in TypedColumns ``` `type` anahtar kelimesi hedef türü belirtir. Mevcut türler `text`, `number`, `date`, `datetime`, `datetimezone`, `time`, `duration`, `logical` ve `binary` içerir. Tür hataları hücrelerde "Error" değerleri olarak görünür ve veri kalitesi sorunlarını analizden önce görünür kılar. Null değerlerin işlenmesi açık mantık gerektirir. `Table.ReplaceValue` fonksiyonu null'ları varsayılanlarla değiştirirken, `[Column] <> null` ile `Table.SelectRows` bunları filtreler. ## Grupla ile gruplama ve toplama Verileri kategorilere göre toplamak sık bir gereksinimdir. "Grupla" dönüşümü aynı anahtar değerlerini paylaşan satırları daraltır ve toplama fonksiyonları uygular. ```m // Satışları bölge ve yıla göre grupla, toplam ve sayı hesapla let Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content], Grouped = Table.Group(Source, {"Region", "Year"}, { {"TotalSales", each List.Sum([Amount]), type number}, {"OrderCount", each Table.RowCount(_), Int64.Type}, {"AvgOrderValue", each List.Average([Amount]), type number} }) in Grouped ``` Gruplama sütunları önce görünür, ardından toplama tanımları gelir. Her toplama yeni bir sütun adı, bir toplama fonksiyonu ve isteğe bağlı bir sonuç türü belirtir. `each` anahtar kelimesi her grup için alt tabloyu temsil eder ve herhangi bir tablo veya liste fonksiyonuna izin verir. İç içe toplamalar, sonraki bir adımda hem satır değerine hem de grup toplamına başvurarak "grup toplamının yüzdesi" gibi hesaplamaları mümkün kılar. ## Verileri yeniden şekillendirmek için pivotlama ve ters pivotlama Pivotlama satır değerlerini sütunlara dönüştürür ve çapraz tablo düzeni oluşturur. Ters pivotlama, normalleştirilmiş yapılar için sütunları satırlara dönüştürerek tersini yapar. ```m // Ay sütunlarını satırlara ters pivotla let Source = Excel.CurrentWorkbook(){[Name="MonthlySales"]}[Content], // Orijinal: Product, Jan, Feb, Mar, Apr sütunları Unpivoted = Table.UnpivotOtherColumns(Source, {"Product"}, "Month", "Sales") // Sonuç: Product, Month, Sales sütunları in Unpivoted ``` `Table.UnpivotOtherColumns` fonksiyonu belirtilen sütunları sabit tutar ve geri kalanları ters pivotlar. Bu, ters pivotlanacak tüm sütunları listelemekten daha güvenlidir çünkü yeni ay sütunları eklemek bunları otomatik olarak dahil eder. Son iki parametre öznitelik sütununu ("Month") ve değer sütununu ("Sales") adlandırır. Pivotlama, aynı satır-sütun kombinasyonu için birden çok değer olduğunda bir toplama fonksiyonuyla `Table.Pivot` kullanır: ```m // Satışları bölgeye göre pivotla let Source = Excel.CurrentWorkbook(){[Name="DetailedSales"]}[Content], Pivoted = Table.Pivot(Source, List.Distinct(Source[Region]), "Region", "Amount", List.Sum) in Pivoted ``` ## Sorguları birleştirme ve ekleme Birden çok kaynaktan verileri birleştirmek, Power Query'nin manuel çabayı azalttığı yerdir. Birleştirme, eşleşen sütunlara dayalı olarak iki tablo arasında bir join gerçekleştirir. Ekleme tabloları dikey olarak yığınlar. ```m // Left join: Müşteri detaylarıyla Siparişler let Orders = Excel.CurrentWorkbook(){[Name="Orders"]}[Content], Customers = Excel.CurrentWorkbook(){[Name="Customers"]}[Content], Merged = Table.NestedJoin(Orders, {"CustomerID"}, Customers, {"ID"}, "CustomerDetails", JoinKind.LeftOuter), Expanded = Table.ExpandTableColumn(Merged, "CustomerDetails", {"Name", "Email"}) in Expanded ``` `Table.NestedJoin` fonksiyonu eşleşen satırları içeren iç içe bir tablo sütunu oluşturur. `Table.ExpandTableColumn` fonksiyonu daha sonra iç içe yapıyı normal sütunlara düzleştirir. Join türleri `Inner`, `LeftOuter`, `RightOuter`, `FullOuter`, `LeftAnti` ve `RightAnti` içerir. `Table.Combine` ile ekleme eşleşen sütun adları gerektirir. Şemalar farklı olduğunda, birleştirmeden önce her kaynakta `Table.SelectColumns` tutarlılık sağlar: ```m // Tutarlı sütunlarla iki satış tablosunu ekle let Sales2024 = Table.SelectColumns(Source2024, {"Date", "Product", "Amount"}), Sales2025 = Table.SelectColumns(Source2025, {"Date", "Product", "Amount"}), Combined = Table.Combine({Sales2024, Sales2025}) in Combined ``` ## Özel sütunlar ve koşullu mantık "Sütun Ekle > Özel Sütun" özelliği M ifadeleri kullanarak hesaplanmış alanlara izin verir. Koşullu mantık `if-then-else` sözdizimi kullanır. ```m // Koşullu mantıkla hesaplanmış bir sütun ekle let Source = Excel.CurrentWorkbook(){[Name="Orders"]}[Content], AddedColumn = Table.AddColumn(Source, "OrderCategory", each if [Amount] >= 10000 then "Enterprise" else if [Amount] >= 1000 then "Business" else "Consumer", type text ) in AddedColumn ``` `if` ifadesi hem `then` hem de `else` dallarını içermelidir. İç içe koşullar `else if` ile zincirlenir. Son parametre sütun türünü belirtir, performansı iyileştirir ve tür çıkarım sorunlarını önler. Karmaşık dönüşümler için `let` bloğunda tanımlanan yardımcı fonksiyonlar kodu okunabilir tutar: ```m let // Mali çeyrek için yardımcı fonksiyon GetFiscalQuarter = (date as date) as text => let month = Date.Month(date), fiscalQ = if month >= 4 and month <= 6 then "Q1" else if month >= 7 and month <= 9 then "Q2" else if month >= 10 and month <= 12 then "Q3" else "Q4" in fiscalQ, Source = Excel.CurrentWorkbook(){[Name="Transactions"]}[Content], AddedQuarter = Table.AddColumn(Source, "FiscalQuarter", each GetFiscalQuarter([Date]), type text) in AddedQuarter ``` ## Power Query'de hata işleme Dönüşüm hataları tüm sorguyu başarısız kılmak yerine hücrelerde "Error" değerleri olarak görünür. `try-otherwise` yapısı hataları zarif bir şekilde işler: ```m // Potansiyel bölme hatalarını işle let Source = Excel.CurrentWorkbook(){[Name="Metrics"]}[Content], AddedRatio = Table.AddColumn(Source, "Ratio", each try [Value1] / [Value2] otherwise null, type number ) in AddedRatio ``` `try` anahtar kelimesi ifadeyi dener ve `HasError` ve `Value` alanlarına sahip bir kayıt döndürür. `otherwise` cümleciği `HasError` doğru olduğunda bir geri dönüş sağlar. Daha fazla kontrol için `try Expression` ile hata ayrıntılarına erişin: ```m // Hata ayrıntılarını yakala let result = try SomeRiskyFunction(), output = if result[HasError] then "Error: " & result[Error][Message] else result[Value] in output ``` ## Veri analistleri için Power Query mülakat soruları Mülakatçılar hem pratik becerileri hem de Power Query'nin bir iş akışına ne zaman uyduğunun anlaşılmasını değerlendirir. Bu sorular veri analisti mülakatlarında sıkça görülür. **Sorgu katlama nedir ve neden önemlidir?** Sorgu katlama, Power Query dönüşümlerini veri kaynağı için yerel sorgulara çevirir. SQL Server'a bağlanırken, bir filtre adımı sunucuda yürütülen bir WHERE cümleciğine dönüşür ve ağ transferini azaltır. Tüm dönüşümler katlanmaz: özel M fonksiyonları, belirli tarih manipülasyonları ve katlanmayan bir adımdan sonraki işlemler zinciri kırar. Bir adıma sağ tıklayıp "Yerel Sorguyu Görüntüle" arayarak katlama durumunu kontrol edin. **Power Query veri dönüşümü için Excel formüllerinden nasıl farklıdır?** Excel formülleri çalışma sayfasında hücre hücre çalışır ve her değişiklikte yeniden hesaplanır. Power Query, çalışma sayfasına ulaşmadan önce tablolar üzerinde çalışır ve yenileme sırasında verileri toplu olarak işler. Ters pivotlama, yinelenen kaldırma veya dosya birleştirme gibi dönüşümler için Power Query, mantığı iç içe INDEX-MATCH veya yardımcı sütunlardan daha doğrudan ifade eder. **ETL için Power Query yerine Power BI'ı ne zaman tercih edersiniz?** Excel'deki Power Query, analistlerin ad-hoc analiz, pivot tablolar veya Power BI erişimi olmayan kullanıcılarla paylaşım için elektronik tablo formunda dönüştürülmüş verilere ihtiyaç duyduğu senaryolara uygundur. Power BI daha zengin görselleştirme, daha büyük veri kapasitesi ve kurumsal paylaşım özellikleri sağlar. Aynı M kodu her iki araçta da çalışır, bu nedenle Excel'de geliştirilen sorgular yeniden yazmadan Power BI Desktop'a taşınabilir. **Tabloları eklerken veri türü uyumsuzluklarını nasıl işlersiniz?** `Table.Combine` ile birleştirmeden önce her kaynak tabloda açık türler ayarlayın. Bir sütun bir kaynakta metin ve diğerinde sayı ise, ekleme başarısız olur veya hatalar üretir. Tutarlı türleri zorlamak için her iki kaynakta da `Table.TransformColumnTypes` kullanın. `try-otherwise` deseni, belirli değerler için dönüşümün başarısız olduğu uç durumları işler. **Power Query'de Birleştirme ve Ekleme arasındaki farkı açıklayın.** Birleştirme, SQL JOIN'e benzer şekilde eşleşen anahtar sütunlarına dayalı yatay bir join gerçekleştirir. Ekleme, SQL UNION ALL'a benzer şekilde birden çok tablodan satırların dikey birleşimini gerçekleştirir. Birleştirme eşleştirme için en az bir ortak sütun gerektirir. Ekleme, düzgün hizalanması için aynı isimlere sahip sütunlar gerektirir. Power Query becerilerini tamamlayan SQL kavramlarında daha derin hazırlık için [SQL pencere fonksiyonları modülü](/technologies/data-analytics/interview-questions/sql-window-functions) sıralama ve toplama desenlerini kapsar, [SQL alt sorgular ve CTE'ler modülü](/technologies/data-analytics/interview-questions/sql-subqueries-ctes) ise sorgu yapılandırma tekniklerini ele alır. ## Yükleme seçenekleri ve yenileme stratejileri Dönüşümlerden sonra "Kapat ve Yükle" düğmesi yükleme seçenekleri sunar: çalışma sayfası tablosuna yükle, yalnızca veri modeline yükle (Power Pivot) veya yalnızca bağlantı sorgusu oluştur. Yalnızca bağlantı sorguları, çalışma sayfası alanı tüketmeden diğer sorgular için hazırlama adımları olarak hizmet eder. Yenileme davranışı yükleme hedefine bağlıdır. Çalışma sayfası tabloları "Tümünü Yenile" düğmesiyle yenilenir veya dosya açılışında yenilenecek şekilde ayarlanabilir. Veri modeli tabloları çalışma kitabının veri modeli yenileme döngüsüne katılır. Harici veritabanlarına bağlı sorgular için, kayıtlı kimlik bilgileri yoksa yenilemede kimlik bilgisi istemleri görünebilir. Arka plan yenilemesi, veri yüklenirken çalışma kitabının kullanılabilir kalmasını sağlar, ancak aşağı akış formülleri yenilenen verilere bağlı olduğunda karmaşıklık yaratır. Sorgu özelliklerindeki "Arka plan yenilemesini etkinleştir" seçeneği bu davranışı kontrol eder. Kritik raporlar için arka plan yenilemesini devre dışı bırakmak sıralı yürütmeyi sağlar. ## Büyük veri kümeleri için performans değerlendirmeleri Power Query milyonlarca satırı işleyebilir, ancak çalışma kitabı yanıt verebilirliği verilerin nasıl yüklendiğine bağlıdır. Çalışma sayfası tabloları yerine veri modeline yüklemek Excel'in satır sınırını aşar ve pivot tablo performansını iyileştirir. Gereksiz sütunları erken kaldırmak bellek ayak izini azaltır. Birkaç dakika süren sorgular için Sorgu Düzenleyicisindeki "Veri önizlemesi" yalnızca bir örnek gösterir. Dönüşümler yenileme sırasında tam veri kümesine uygulanır. Önizlemede görünen hatalar sorunları gösterir, ancak bazı hatalar yalnızca tam verilerle görünür. Bir alt kümede test yenilemesi çalıştırmak, her şeyi işlemeden önce sorguyu doğrular. Birçok dosyayı birleştirirken, Power Query'nin ikili birleştirme özelliği dosyaları paralel olarak işler. Bir dosyayı dönüştüren bir fonksiyon tanımlamak, ardından dosya listesindeki her satır için çağırmak, varsayılan birleştirme yaklaşımından daha fazla kontrol sağlar. [Power Query en iyi uygulamaları](https://learn.microsoft.com/en-us/power-query/best-practices) hakkındaki Microsoft belgeleri, sorgu bağımlılık yapıları ve arabellek kullanımı dahil olmak üzere optimizasyon tekniklerini ayrıntılı olarak açıklar. ## Tekrarlanabilir ETL pipeline'ları için Power Query Power Query'deki kaydedilen adımlar dönüşüm mantığının dokümantasyonunu oluşturur. Gereksinimler değiştiğinde, bir adımı değiştirmek tüm aşağı akış adımlarını otomatik olarak günceller. Bu, kaynak veriler değiştiğinde sıfırdan yeniden oluşturmayı gerektiren ad-hoc Excel manipülasyonlarıyla tezat oluşturur. Ekipler bağlantıları dışa aktararak veya sorgu M kodunu sürüm kontrolünde saklayarak sorguları paylaşabilir. Gelişmiş Düzenleyici (Görünüm > Gelişmiş Düzenleyici) başka bir çalışma kitabına kopyalanıp yapıştırılabilen tam M betiğini görüntüler. Kurumsal senaryolar için Power BI veri akışları ve Fabric merkezi sorgu yönetimi sağlar. - Power Query, kaydedilen, tekrarlanabilir dönüşüm adımlarını kullanarak Excel içinde ETL'i işler - Görsel arayüzün altında yatan M dili, şerit komutlarının ötesinde özelleştirmelere olanak tanır - Sorgu katlama, daha iyi performans için filtreleri ve projeksiyonları kaynak veritabanlarına iter - Birleştirme tablolar arasında join'ler gerçekleştirir, Ekleme tabloları dikey olarak yığınlar - Tür atamaları ve hata işleme sessiz veri kalitesi sorunlarını önler - Yalnızca bağlantı sorguları, çalışma sayfası çıktısı olmadan yeniden kullanılabilir hazırlama adımları oluşturur - Mülakat soruları sorgu katlama, formül karşılaştırması ve birleştirme ile ekleme ayrımlarına odaklanır --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/tr/blog/data-analytics/excel-power-query-etl-tutorial-interview-2026