Power Query Nedir? Excel ve Power BI ile Veri Dönüştürme

Her ay elle yaptığınız temizlik işini bir kez tanımlayın. Sütun profilinden unpivot'a, Merge'ün satır çoğaltma tuzağından query folding'e ve yayın sonrası yenileme sorunlarına kadar.

  • Araçlar
  • Veri Görselleştirme

Power Query nedir?

Power Query, farklı kaynaklardan aldığı veriyi adımlı bir süreçle dönüştüren bir veri hazırlama aracıdır. Excel'de Veri → Veri Al ve Dönüştür, Power BI Desktop'ta Verileri dönüştür ile açılır. Kaynak dosyaya hiç dokunmadan sütun seçebilir, tür düzeltebilir, satır filtreleyebilir, tablo birleştirebilir ve sonucu çalışma sayfasına veya veri modeline yükleyebilirsiniz.

Aracın asıl değeri burada: yaptığınız her işlem bir adım olarak kaydedilir. Bir sonraki yenilemede aynı adımlar güncel kaynak veriye tekrar uygulanır. Yani her ay elle yaptığınız "başlığı düzelt, boşlukları sil, iki dosyayı birleştir" işi, bir kez tanımlanıp sonsuza kadar tekrarlanabilir bir akışa dönüşür.

Temel akış: Kaynak → dönüşüm adımları → yükleme. Arka planda bu adımlar M adlı formül diliyle yazılır. Günlük işlerin büyük kısmında M kodunu elle yazmanız gerekmez; menüden yaptığınız seçimler kodu üretir. Ama kodu okumayı öğrenmek, sorun çözerken size çok zaman kazandırır.

Excel ve Power BI'da nereden başlanır?

ÜrünBaşlangıç yoluÇıktı
ExcelVeri → Veri Al (dosya, klasör, web, veritabanı) → Verileri DönüştürÇalışma sayfasına tablo, yalnızca bağlantı veya veri modeli
Power BI DesktopGiriş → Veri al → kaynağı seç → Verileri dönüştürRaporun veri modeline yüklenen sorgular

Her iki üründe de düzenleyicinin sağındaki Uygulanan Adımlar paneli dönüşüm geçmişinizi gösterir. Bir adımı tıklayarak o noktadaki ara sonucu görebilir, adımları yeniden adlandırabilir, silebilir veya sırasını değiştirebilirsiniz. Bu panel, Power Query'nin en güçlü ama en az kullanılan özelliğidir — bir sorgu beklenmedik sonuç verdiğinde adımlar arasında yukarı doğru tıklayarak hangi adımda bozulduğunu kolayca bulursunuz.

Üç aşamalı süreç
  1. Kaynağı
    Seç
  2. Önizle ve
    Dönüştür
  3. Yükle ve
    Yenile

Veri temizleme ve kalite kontrolleri

Dönüştürmeye başlamadan önce veriyi tanıyın. Power Query'nin Görünüm sekmesindeki sütun kalitesi, sütun dağılımı ve sütun profili seçenekleri; boş değer sayısını, hata sayısını ve benzersiz değer sayısını doğrudan gösterir. Bu üç kutucuğu açmak, sonradan saatler kazandırır.

  • Türleri belirleyin. Tarih, tam sayı, ondalık ve metin sütunlarını doğru türe çevirin. Ondalık ayracı veya tarih biçimi bölgeye bağlıysa Yerel ayarı kullanarak türü değiştir seçeneğini kullanın — "1.234" ifadesinin bin ikiyüz otuz dört mü yoksa bir virgül iki üç dört mü olduğu buna bağlıdır.
  • Metinleri standartlaştırın. Baştaki ve sondaki boşlukları temizleyin, görünmez karakterleri kaldırın, büyük-küçük harf varyantlarını birleştirin. "İstanbul " ile "istanbul" birleştirmede eşleşmez.
  • Boş ve hatalı değerleri inceleyin. Boş değer ile sıfır aynı şey değildir. Önce boşluğun "bilinmiyor", "uygulanamaz" veya gerçekten sıfır anlamına gelip gelmediğini belirleyin.
  • Tekrarlıları kontrol edin. Benzersiz anahtarın ne olduğunu belirleyin; yinelenenleri yalnızca iş kuralı gerektiriyorsa kaldırın.
  • Satır ve sütunları düzenleyin. Gereksiz sütunları çıkarın, başlık satırını yükseltin, üstteki boş satırları atlayın.
Dikkat: Boş değerleri 0 ile doldurmak ortalama, toplam ve oranları sessizce değiştirir. 10 kaydın 4'ü boşsa, boşluğu sıfır sayarak hesaplanan ortalama gerçek ortalamadan farklıdır. Bu bir temizlik kararı değil, bir analiz kararıdır.

Örnek bir M adımı

Aşağıdaki kod bir Excel tablosunu alır, sütun türlerini tanımlar, ürün adındaki boşlukları temizler ve tarihi veya tutarı olmayan satırları ayıklar.

Temizlik sorgusu — M
let
    Kaynak = Excel.CurrentWorkbook(){[Name="Satislar"]}[Content],

    Turler = Table.TransformColumnTypes(Kaynak, {
        {"Tarih", type date},
        {"Urun",  type text},
        {"Adet",  Int64.Type},
        {"Tutar", Currency.Type}
    }, "tr-TR"),

    UrunTemiz = Table.TransformColumns(Turler, {
        {"Urun", each Text.Trim(Text.Clean(_)), type text}
    }),

    GecerliSatirlar = Table.SelectRows(UrunTemiz,
        each [Tarih] <> null and [Tutar] <> null)
in
    GecerliSatirlar

Son satırdaki filtreye dikkat edin: geçersiz satırları sessizce atıyoruz. Üretimde bunun yerine bu satırları ayrı bir sorguya yönlendirip saymak daha güvenlidir — kaç kayıt elendiğini bilmeden "veri temiz" diyemezsiniz.

Dönüştürme: sütun, tarih, kategori

Sütun bölme ve birleştirme, özel sütun ekleme, pivot ve unpivot, değer değiştirme, gruplama — bunların hepsi menüden yapılabilir. İki tanesi veri analistinin hayatını en çok değiştirir.

Unpivot: geniş tabloyu uzun tabloya çevirmek

Elinize sütunları "Ocak, Şubat, Mart..." olan bir Excel dosyası geldiğinde, bunu olduğu gibi analize sokamazsınız. Dönüştür → Sütunların Sütunu Kaldır (Unpivot) ile 12 ay sütununu iki sütuna çevirirsiniz: "Ay" ve "Değer". Bu tek işlem, dosyayı pivot tablo ve grafik için kullanılabilir hâle getirir. Yeni bir ay sütunu eklendiğinde de "Diğer sütunları kaldır" seçeneğini kullandıysanız sorgu kendiliğinden uyum sağlar.

Klasördeki aylık dosyaları tek sorguda toplamak

  1. Aynı yapıdaki Excel veya CSV dosyalarını tek bir klasöre koyun.
  2. Excel'de Veri → Veri Al → Dosyadan → Klasörden; Power BI'da Veri al → Klasör seçeneğini kullanın.
  3. Dosyaları birleştirin; örnek dosyada tanımladığınız temizlik adımları diğerlerine de uygulanır.
  4. İzleme için dosya adı veya klasör yolu sütununu koruyun — hangi kaydın hangi dosyadan geldiğini bilmek sorun çözerken çok işe yarar.

Bu yöntemin tek şartı kaynak dosyaların sütun adlarının ve türlerinin tutarlı olmasıdır. Ocak dosyasında "Tutar", Şubat'ta "TUTAR" yazıyorsa birleştirme iki ayrı sütun üretir.

Merge ve Append

İşlemNe yapar?Örnek
Merge (Birleştir)Ortak anahtara göre sütunları yatay ekler — SQL JOIN benzeriSipariş tablosuna müşteri adını MüşteriID ile getir
Append (Ekle)Benzer sütunlu tabloların satırlarını alt alta eklerOcak, Şubat ve Mart satışlarını tek tabloda topla
Merge'ün en sinsi hatası: birleştirmeden sonra satır sayınız artıyorsa, anahtar sütunu tekil değil demektir. 1.000 siparişi müşteri tablosuyla birleştirip 1.240 satır elde ediyorsanız, müşteri tablosunda bazı ID'ler iki kez geçiyor. Merge'den önce ve sonra satır sayısını mutlaka karşılaştırın.

Uygulamalı örnek: satış akışı

Senaryoda satış dosyasında Tarih, Bolge, Urun, Adet ve Tutar alanları var. Hedef: temiz bir satış tablosu ve bölge/ürün bazında özet.

  1. Kaynağı bağlayın. Excel tablosunu seçin veya Power BI'da dosyayı içeri alın.
  2. Kaliteyi inceleyin. Sütun profiliyle boş, hata, tür ve yinelenen anahtar kontrolü yapın.
  3. Dönüştürün. Türleri atayın, metinleri temizleyin, geçersiz satırları iş kuralına göre ele alın.
  4. Gerekirse hesap sütunu ekleyin. Sütun Ekle → Özel Sütun ile [Adet] * [BirimFiyat] gibi satır bazlı bir hesap yapın. Dosyada zaten tutar varsa yeniden hesaplamayın — iki kaynak çeliştiğinde hangisinin doğru olduğunu bilemezsiniz.
  5. Gruplayın. Giriş → Gruplandır ile Bölge ve Ürün'e göre gruplayıp tutar toplamı ve işlem sayısı alın.
  6. Yükleyin. Excel'de tablo olarak çalışma sayfasına, Power BI'da veri modeline aktarın.
Gruplama — M
Ozet = Table.Group(GecerliSatirlar,
    {"Bolge", "Urun"},
    {
        {"ToplamTutar", each List.Sum([Tutar]), Currency.Type},
        {"IslemSayisi", each Table.RowCount(_), Int64.Type}
    })

Bu adımlar her ay tekrarlanmaz. Yeni kaynak dosyayı aynı konuma aynı biçimde koyduktan sonra Tümünü Yenile demek yeterlidir.

Excel ve Power BI farkı: dönüşüm mantığı neredeyse aynıdır, çıktının kullanımı farklıdır. Excel'de tabloyu hücrelerde inceleyip başka formüllerde kullanırsınız. Power BI'da temiz veriyi ilişkilendirip ölçüler ve görsellerle raporlarsınız.

Yenileme ve otomasyon

Power Query adımları kaydeder, ama yenilemenin nerede ve ne zaman çalışacağı ürüne ve kaynağa bağlıdır. Bu ayrım, "yerelde çalışıyordu, yayınlayınca bozuldu" şikâyetinin temelidir.

  • Excel masaüstü: Veri → Tümünü Yenile ile elle yenilersiniz. Bağlantı özelliklerinden açılışta yenileme veya belirli aralıklarla yenileme açılabilir; hangi seçeneğin kullanılabileceği bağlayıcıya göre değişir.
  • Power BI Desktop: Yenile, erişebildiği kaynağı tekrar okur. Raporu Power BI hizmetine yayımladıktan sonra zamanlanmış yenileme; kimlik bilgileri, veri ağ geçidi ve kaynağa erişim yapılandırmasına bağlıdır.
  • Kaynak değişiklikleri: Dosya yolu, tablo adı veya sütun şeması değişirse sorgu hata verir. Kaynak "sözleşmesini" sabit tutmak, otomasyonun en kritik şartıdır.
Sık yaşanan sürpriz: yerel diskinizdeki bir dosyaya bağlı bir rapor, Power BI hizmetine yayımlandığında o dosyaya ulaşamaz. Zamanlanmış yenileme için çoğu senaryoda bir veri ağ geçidi gerekir. Mümkünse kaynağı paylaşılan bir konuma veya bir veritabanına taşıyın.

Performans ve bakım

1

Erken filtreleyin

Gereksiz sütunları ve satırları ilk adımlarda atın. Sonraki her adım daha az veriyle çalışır.

2

Adımları adlandırın

Changed Type1 yerine Tarih türünü düzelt. Altı ay sonra sorguyu okuyan kişi size teşekkür eder.

3

Query folding'i izleyin

Veritabanı kaynaklarında Power Query bazı adımları SQL'e çevirip sunucuya yaptırabilir. Adıma sağ tıklayıp "Yerel sorguyu görüntüle" aktifse katlama çalışıyordur.

4

Sorguyu parçalayın

Uzun sorguları mantıklı parçalara ayırın; ara sorguları yalnızca gerektiğinde yükleyin.

5

Profili tüm veriye alın

Sütun profili varsayılan olarak ilk 1.000 satıra bakar. Alt çubuktan "tüm veri kümesi" seçeneğine geçin.

6

Varsayımları yazın

Boşların anlamı, tekillik anahtarı, para birimi, saat dilimi ve filtre kuralları bir yerde kayıtlı olsun.

Query folding konusu özellikle önemli. Bir SQL veritabanına bağlıysanız ve filtreleriniz katlanıyorsa, milyonlarca satırı indirip Power Query'de filtrelemek yerine sunucu işi yapar ve size yalnızca sonucu gönderir. Katlamayı bozan tipik adımlar: özel M fonksiyonları, bazı metin dönüşümleri ve indeks sütunu ekleme. Bu tür adımları sorgunun sonuna koyun.

Yayın öncesi kontrol listesi

  • Kaynak ve dosya konumu tanımlı, erişim yetkileri çalışıyor.
  • Sütun adları, veri tipleri ve bölgesel biçimler doğru.
  • Boş, hatalı ve yinelenen kayıtların nasıl ele alınacağı kararlaştırıldı.
  • Merge anahtarı doğrulandı; öncesi/sonrası satır sayısı karşılaştırıldı.
  • Append edilen tabloların sütun yapısı uyumlu.
  • Adımlar anlaşılır biçimde adlandırıldı.
  • Yenileme sonrası satır sayısı ve kritik toplamlar kaynakla karşılaştırıldı.
  • Power BI hizmeti kullanılıyorsa kimlik bilgileri, ağ geçidi ve takvim denendi.

Sonuç

Power Query, veri hazırlamayı tek seferlik elle düzenlemelerden izlenebilir ve tekrar çalıştırılabilir sorgulara dönüştürür. Excel'de analiz tablosu hazırlarken de Power BI'da rapor modeline veri sağlarken de yaklaşım aynıdır: kaynağı bağla, kaliteyi denetle, dönüşümleri kaydet, sonucu doğrula, yenileme akışını kur.

Son bir tavsiye: her sorgunun sonunda satır sayısını ve bir ya da iki kritik toplamı kaynakla karşılaştırın. Power Query hata vermeden yanlış sonuç üretebilir — ve bunu yakalamanın en ucuz yolu, beklediğiniz sayıyı önceden bilmektir.

What is Power Query?

Power Query is a data preparation tool that takes data from various sources and transforms it through a sequence of steps. In Excel you open it with Data → Get & Transform Data, in Power BI Desktop with Transform data. Without touching the source file you can select columns, fix types, filter rows, join tables and load the result into a worksheet or the data model.

The real value is here: every operation you perform is recorded as a step. On the next refresh those same steps are reapplied to the current source data. The "fix the header, strip the spaces, merge the two files" routine you do by hand every month becomes a flow defined once and repeatable forever.

The core flow: source → transformation steps → load. Behind the scenes those steps are written in a formula language called M. For most everyday work you never need to write M by hand; your menu choices generate the code. But learning to read it will save you a lot of time when something breaks.

Where to start in Excel and Power BI

ProductEntry pointOutput
ExcelData → Get Data (file, folder, web, database) → Transform DataA table on a worksheet, connection only, or the data model
Power BI DesktopHome → Get data → pick source → Transform dataQueries loaded into the report's data model

In both products the Applied Steps panel on the right of the editor shows your transformation history. Click a step to see the intermediate result at that point; rename, delete or reorder steps. This panel is Power Query's most powerful yet least used feature — when a query gives an unexpected result, clicking back up through the steps quickly shows you where it went wrong.

A three-stage process
  1. Choose the
    Source
  2. Preview and
    Transform
  3. Load and
    Refresh

Cleaning and quality checks

Get to know the data before you start transforming it. The column quality, column distribution and column profile options on Power Query's View tab show you the number of empty values, errors and distinct values directly. Ticking those three boxes saves hours later.

  • Set the types. Convert date, whole number, decimal and text columns to the right type. If the decimal separator or date format is locale-dependent, use Change Type Using Locale — whether "1.234" means one thousand two hundred thirty-four or one point two three four depends on it.
  • Standardise text. Trim leading and trailing spaces, remove invisible characters, unify case variants. "Istanbul " and "istanbul" will not match in a merge.
  • Examine blanks and errors. A blank and a zero are not the same thing. Decide first whether the blank means "unknown", "not applicable" or genuinely zero.
  • Check duplicates. Establish what the unique key is; remove duplicates only when a business rule calls for it.
  • Tidy rows and columns. Remove unneeded columns, promote the header row, skip blank rows at the top.
Careful: filling blanks with 0 silently changes averages, totals and ratios. If 4 of 10 records are blank, an average computed by treating blanks as zero differs from the real one. This is not a cleaning decision — it is an analysis decision.

An example M step

The code below takes an Excel table, defines the column types, trims the product name and filters out rows with no date or no amount.

A cleaning query — M
let
    Kaynak = Excel.CurrentWorkbook(){[Name="Satislar"]}[Content],

    Turler = Table.TransformColumnTypes(Kaynak, {
        {"Tarih", type date},
        {"Urun",  type text},
        {"Adet",  Int64.Type},
        {"Tutar", Currency.Type}
    }, "tr-TR"),

    UrunTemiz = Table.TransformColumns(Turler, {
        {"Urun", each Text.Trim(Text.Clean(_)), type text}
    }),

    GecerliSatirlar = Table.SelectRows(UrunTemiz,
        each [Tarih] <> null and [Tutar] <> null)
in
    GecerliSatirlar

Note the filter on the last step: we are silently dropping invalid rows. In production it is safer to route those rows into a separate query and count them — you cannot call the data clean without knowing how many records were discarded.

Transforming: columns, dates, categories

Splitting and merging columns, adding custom columns, pivot and unpivot, replacing values, grouping — all of these are available from the menu. Two of them change an analyst's life the most.

Unpivot: turning a wide table into a long one

When you receive an Excel file whose columns are "January, February, March…", you cannot feed it into an analysis as is. With Transform → Unpivot Columns you turn those twelve month columns into two: "Month" and "Value". That single operation makes the file usable for pivot tables and charts. And if you used "Unpivot Other Columns", the query adapts on its own when a new month column appears.

Combining monthly files from a folder

  1. Put the Excel or CSV files with the same structure into one folder.
  2. In Excel use Data → Get Data → From File → From Folder; in Power BI use Get data → Folder.
  3. Combine the files; the cleaning steps you define on the sample file are applied to the rest.
  4. Keep the file name or folder path column for traceability — knowing which record came from which file is invaluable when debugging.

The only requirement is that the source files have consistent column names and types. If January's file says "Tutar" and February's says "TUTAR", the combination produces two separate columns.

Merge and Append

OperationWhat it doesExample
MergeAdds columns side by side on a common key — like a SQL JOINBring the customer name into the order table via CustomerID
AppendStacks rows of tables with similar columnsCombine January, February and March sales into one table
Merge's sneakiest failure: if your row count grows after a merge, the key column is not unique. Merge 1,000 orders with a customer table and end up with 1,240 rows, and some IDs appear twice in the customer table. Always compare the row count before and after a merge.

A worked example: the sales flow

In the scenario, the sales file has Tarih, Bolge, Urun, Adet and Tutar. The goal: a clean sales table and a summary by region and product.

  1. Connect the source. Select the Excel table, or import the file in Power BI.
  2. Inspect quality. Use the column profile to check blanks, errors, types and key uniqueness.
  3. Transform. Assign types, clean text, handle invalid rows per the business rule.
  4. Add a calculated column if needed. Use Add Column → Custom Column for a row-level calculation such as [Adet] * [BirimFiyat]. If the file already has an amount, do not recompute it — when two sources disagree you cannot tell which is right.
  5. Group. Use Home → Group By on region and product to get the amount total and transaction count.
  6. Load. Send it to a worksheet in Excel, or to the data model in Power BI.
Grouping — M
Ozet = Table.Group(GecerliSatirlar,
    {"Bolge", "Urun"},
    {
        {"ToplamTutar", each List.Sum([Tutar]), Currency.Type},
        {"IslemSayisi", each Table.RowCount(_), Int64.Type}
    })

These steps are not repeated every month. Once the new source file is in the same location in the same format, Refresh All is enough.

Excel versus Power BI: the transformation logic is nearly identical; what differs is how the output is used. In Excel you inspect the table in cells and use it in other formulas. In Power BI you relate the clean data and report on it with measures and visuals.

Refresh and automation

Power Query records the steps, but where and when the refresh runs depends on the product and the source. That distinction is behind the "it worked locally and broke after publishing" complaint.

  • Excel desktop: refresh manually with Data → Refresh All. Connection properties can enable refresh on open or at intervals; which options are available depends on the connector.
  • Power BI Desktop: Refresh re-reads any source it can reach. After publishing to the Power BI service, scheduled refresh depends on credentials, a data gateway and source access configuration.
  • Source changes: if a file path, table name or column schema changes, the query errors out. Keeping the source "contract" stable is the most critical condition for automation.
A common surprise: a report bound to a file on your local disk cannot reach that file once published to the Power BI service. In most scenarios scheduled refresh requires a data gateway. Where possible, move the source to a shared location or a database.

Performance and maintenance

1

Filter early

Drop unneeded columns and rows in the first steps. Every later step then works on less data.

2

Name your steps

Fix date type rather than Changed Type1. Whoever reads the query in six months will thank you.

3

Watch query folding

With database sources, Power Query can translate some steps into SQL and let the server do the work. If "View Native Query" is enabled on a step, folding is working.

4

Break the query up

Split long queries into sensible parts; load intermediate queries only when needed.

5

Profile the whole dataset

Column profiling looks at the first 1,000 rows by default. Switch to "entire data set" from the status bar.

6

Write the assumptions down

The meaning of blanks, the uniqueness key, currency, time zone and filter rules should be recorded somewhere.

Query folding deserves particular attention. If you are connected to a SQL database and your filters fold, the server does the work and sends you only the result, instead of downloading millions of rows to filter in Power Query. Typical folding breakers: custom M functions, some text transformations, and adding an index column. Put steps like those at the end of the query.

Checklist before publishing

  • Source and file location are defined, and access permissions work.
  • Column names, data types and regional formats are correct.
  • How blanks, errors and duplicates will be handled has been decided.
  • The merge key was validated; row counts before and after were compared.
  • Appended tables have compatible column structures.
  • Steps are named intelligibly.
  • Row count and key totals after refresh were compared against the source.
  • If using the Power BI service, credentials, gateway and schedule were tested.

Conclusion

Power Query turns data preparation from one-off manual edits into traceable, re-runnable queries. Whether you are preparing an analysis table in Excel or feeding a report model in Power BI, the approach is the same: connect the source, audit quality, record the transformations, verify the result, set up the refresh.

One last piece of advice: at the end of every query, compare the row count and one or two key totals against the source. Power Query can produce a wrong result without raising an error — and the cheapest way to catch that is to know the number you expect in advance.