Özellik ikonu

Power Query M Dili

İndirme izni yok

Genel Bakış

Power Query M Dili (Power Query M), Power Query'nin arka planda kullandığı, işlevsel ve büyük/küçük harfe duyarlı sorgu dilidir. Veri Al ve Dönüştür bölümünde arayüzle yaptığınız her işlem (filtreleme, sütun ekleme, gruplama, birleştirme) M kodu olarak kaydedilir. M'yi öğrenirseniz arayüzün sunmadığı dönüşümleri yazabilir, mevcut sorguları düzenleyebilir ve özel işlevler oluşturabilirsiniz.

Nerede bulunur​

M kodunu görmek ve düzenlemek için önce Power Query Düzenleyicisi'ni açın. Bir tablo ya da aralık seçip Veri > Veri Al ve Dönüştür > Tablodan/Aralıktan (Data > Get & Transform Data > From Table/Range) komutunu kullanabilir, ya da Veri > Veri Al > Power Query Düzenleyicisi'ni Başlat (Data > Get Data > Launch Power Query Editor) yolunu izleyebilirsiniz.

Düzenleyicide iki yer önemlidir:
  • Gelişmiş Düzenleyici: Giriş > Sorgu > Gelişmiş Düzenleyici (Home > Query > Advanced Editor) sorgunun tüm M kodunu tek pencerede gösterir.
  • Formül çubuğu: Görünüm > Düzen > Formül Çubuğu (View > Layout > Formula Bar) seçili adımın M ifadesini gösterir ve düzenlemenize izin verir.
  • Uygulanan Adımlar: Sağdaki bölmede her adım, M kodundaki bir satıra karşılık gelir.
Excel 2016 ve sonrasında Power Query yerleşiktir; Excel 2010 ve 2013'te ayrı bir eklenti olarak kurulur. Çalışma kitabındaki sorguları Veri > Sorgular ve Bağlantılar (Data > Queries & Connections) bölmesinden görürsünüz.

let ve in yapısı​

Bir M sorgusu çoğunlukla let ve in anahtar sözcükleriyle kurulur. let bölümünde adım adı ve ifade çiftleri alt alta yazılır, adımlar virgülle ayrılır, son adımdan sonra virgül konmaz. in sözcüğünden sonra sorgunun sonuç olarak döndüreceği adım yazılır.

Bir adım, kendisinden önceki adımların adını kullanabilir. Örneğin Kaynak adlı adımın çıktısı, sonraki Filtre adımına girdi olur. Adım adı boşluk içeriyorsa #"Adım Adı" biçiminde yazılır; Power Query arayüzü boşluklu adları böyle üretir. Açıklama satırı için çift eğik çizgi, çok satırlı açıklama için eğik çizgi ve yıldız çifti kullanılır.

M'de büyük/küçük harf ayrımı vardır: Table.SelectRows doğru, table.selectrows hatalıdır. Anahtar sözcükler (let, in, if, then, else, each, true, false, null) küçük harfle yazılır.

Veri türleri, işlevler ve each​

M'de temel türler number, text, logical, date, time, datetime ve null değeridir. Yapısal türler ise liste, kayıt ve tablodur:
  • Liste: Küme parantezi içinde değerler, örneğin {1, 2, 3}.
  • Kayıt: Köşeli parantez içinde ad ve değer çiftleri; tek bir satırı temsil eder.
  • Tablo: Satır ve sütunlardan oluşan, sorguların asıl çalıştığı yapı.
İşlevler gruplara ayrılmış adlarla gelir: Table. (tablo), List. (liste), Text. (metin), Date. (tarih), Number. (sayı) ve Excel. (Excel kaynakları) gibi. Örneğin Table.SelectRows satır süzer, Table.AddColumn sütun ekler, Table.Group gruplar, Table.Sort sıralar, Date.Month tarihten ay numarasını alır.

each sözcüğü, tek parametreli ve adsız bir işlev yazmak için kısayoldur. Köşeli parantez içinde bir sütun adı yazdığınızda, o anki satırın o sütundaki değeri alınır. Koşul için if ... then ... else kullanılır. Eşitlik denetimi tek eşittir işaretiyle, eşit değil denetimi küçüktür-büyüktür işaretleriyle yapılır; metin birleştirme için ve işareti (&) kullanılır.

Özel işlev tanımlamak için parametreler parantez içinde verilir, ardından ok işareti ve işlev gövdesi yazılır. Bu işlevi aynı sorgudaki bir adım olarak tanımlayıp sonraki adımlarda çağırabilirsiniz; üçüncü örnekte bunu göreceksiniz.

Nasıl kullanılır​

M kodunu arayüzle birlikte kullanmanın tipik akışı şöyledir:
  • Verinizi bir Excel tablosuna dönüştürün (Ekle > Tablo, Insert > Table) ve tabloya anlamlı bir ad verin.
  • Tabloda bir hücre seçip Veri > Tablodan/Aralıktan komutuyla Power Query Düzenleyicisi'ni açın.
  • Gerekli dönüşümleri arayüzden yapın; her işlemin Uygulanan Adımlar listesine ve M koduna eklendiğini izleyin.
  • Giriş > Gelişmiş Düzenleyici ile kodu açın, adım adlarını anlaşılır hale getirin ve gerekirse ifadeleri elle değiştirin.
  • Giriş > Kapat ve Yükle (Home > Close & Load) ile sonucu sayfaya yükleyin.
  • Kaynak veri değiştiğinde Veri > Tümünü Yenile (Data > Refresh All) komutuyla sorguyu yeniden çalıştırın.
Çalışma kitabındaki bir tabloyu M içinde okumak için Excel.CurrentWorkbook işlevi kullanılır; tablo adı ve içerik alanı seçilerek tablo elde edilir. Aşağıdaki örneklerde bu kalıp kullanılmıştır.

1. Satır süzme ve hesaplanmış sütun ekleme​

A1:C9 aralığındaki personel verisi tabloya dönüştürülür ve tabloya tblPersonel adı verilir. Ardından YuksekMaas adlı bir M sorgusu kurulur: önce Maas sütunu sayı türüne çevrilir, Table.SelectRows ile maaşı 35.000 ve üzeri olan satırlar süzülür, Table.AddColumn ile maaşın 12 katı olarak Yillik Maas sütunu eklenir. Sorgu sonucu F1 hücresinden başlayan yeni bir tabloya yüklenir. Siz Excel'de aynı işlemi Tablodan/Aralıktan komutu ve Gelişmiş Düzenleyici ile yapabilirsiniz.
Power Query M Dili
Formülünü incelemek için bir hücre seçin.
ABCDEFGHI
1PersonelDepartmanMaasPersonelDepartmanMaasYillik Maas
2Ayşe DemirSatış42.000,00Ayşe DemirSatış42000504000
3Mehmet KayaMuhasebe36.500,00Mehmet KayaMuhasebe36500438000
4Fatma YıldızDepo28.000,00Zeynep Aydınİnsan Kaynakları39000468000
5Ali ÇelikSatış31.000,00Elif ArslanMuhasebe45000540000
6Zeynep Aydınİnsan Kaynakları39.000,00
7Hasan ŞahinDepo27.500,00
8Elif ArslanMuhasebe45.000,00
9Murat KoçSatış33.500,00
Maas ListesiExcelDepo v1.0.0
F1 hücresinden başlayan sorgu tablosunda yalnızca maaşı 35.000 ve üzeri olan personel kalır; sağ uçta M kodunun hesapladığı Yillik Maas sütunu görünür. Kaynak tabloda bir maaşı değiştirip Tümünü Yenile komutunu verdiğinizde sonuç tablosu yeniden hesaplanır. Eşik değeri değiştirmek için sorgunun Filtre adımındaki sayıyı düzenlemeniz yeterlidir.

2. Table.Group ile departman özeti​

Bu örnekte A1:C9 aralığı tblKadro adlı tabloya dönüştürülür. KadroOzet sorgusu, Departman sütununa göre gruplar; her grup için List.Sum ile toplam maaşı, Table.RowCount ile kişi sayısını hesaplar. Arayüzde aynı sonuca Dönüştür > Gruplandır (Transform > Group By) komutuyla ulaşırsınız; Gelişmiş Düzenleyici'de Table.Group satırını görürsünüz. Sonuç F1 hücresinden başlayarak sayfaya yüklenir.
Power Query M Dili
Formülünü incelemek için bir hücre seçin.
ABCDEFGH
1PersonelDepartmanMaasDepartmanToplam MaasKisi Sayisi
2Can ÖzkanÜretim30.000,00Üretim915003
3Selin TekinÜretim32.000,00Satış1190003
4Burak AksoySatış41.000,00Muhasebe735002
5Derya PolatSatış38.000,00
6Emre GüneşMuhasebe36.000,00
7Gül ErdemMuhasebe37.500,00
8Okan YalçınÜretim29.500,00
9Pınar DoğanSatış40.000,00
Departman OzetiExcelDepo v1.0.0
F1 hücresinden başlayan sonuç tablosunda her departman tek satırda görünür; yanında Toplam Maas ve Kisi Sayisi sütunları yer alır. Bu özet, formül yazmadan oluşur ve kaynak tablo değiştikçe Tümünü Yenile komutuyla güncellenir. Table.Group işlevinin üçüncü bağımsız değişkeni, her grup için hesaplanacak sütunların listesidir; yeni bir toplama eklemek için bu listeye bir çift daha yazabilirsiniz.

3. Özel işlev ve tarih işlevleri​

A1:C8 aralığı tblSiparis adlı tabloya dönüştürülür. SiparisKdv sorgusunda önce KdvEkle adlı özel bir işlev tanımlanır: tutarı 1,2 ile çarpar. Sonra Tarih ve Tutar sütunlarının türleri ayarlanır, Table.AddColumn ile her satırda bu işlev çağrılarak KDV Dahil sütunu eklenir, Date.Month ile Ay No sütunu üretilir ve Table.Sort ile satırlar KDV dahil tutara göre büyükten küçüğe sıralanır. Sonuç F1 hücresinden başlar.
Power Query M Dili
Formülünü incelemek için bir hücre seçin.
ABCDEFGHIJ
1Siparis NoTarihTutarSiparis NoTarihTutarKDV DahilAy No
2S-100115.01.20241.250,00S-100627.05.2024489058685
3S-100203.02.2024980,50S-100321.02.2024342041042
4S-100321.02.20243.420,00S-100518.04.2024215025804
5S-100409.03.2024760,00S-100711.06.2024167520106
6S-100518.04.20242.150,00S-100115.01.2024125015001
7S-100627.05.20244.890,00S-10023.02.2024980,51176,62
8S-100711.06.20241.675,00S-10049.03.20247609123
Siparis ListesiExcelDepo v1.0.0
Sonuç tablosunda siparişler KDV dahil tutara göre büyükten küçüğe dizilir; her satırda KDV Dahil ve Ay No sütunları M kodu tarafından hesaplanmıştır. KDV oranı değişirse yalnızca KdvEkle işlevinin gövdesini düzenlemeniz yeterlidir, işlevi çağıran tüm adımlar yeni oranı kullanır. Bu yapı, tekrar eden hesapları tek yerde toplamanın M'deki karşılığıdır.

Kullanırken dikkat edin​

  • Büyük/küçük harf duyarlılığı: M'de işlev, adım ve sütun adları büyük/küçük harfe duyarlıdır. Sütun adındaki küçük bir yazım farkı, Expression.Error: The field was not found hatasına yol açar. Adımların adını kopyalarken de aynı dikkati gösterin.
  • Adımlar arasındaki virgül: let bölümündeki her adımın sonuna virgül konur, ancak son adımın sonuna konmaz. Gelişmiş Düzenleyici'de elle adım eklerken en sık yapılan hata budur. in sözcüğünden sonra yazdığınız ad, let içindeki bir adımla birebir aynı olmalıdır.
  • Veri türünü açıkça belirleyin: Excel tablosundan gelen sütunlar çoğu zaman any türündedir. Sayı, tarih ya da metin karşılaştırması yapmadan önce Table.TransformColumnTypes ile türü belirleyin; aksi halde karşılaştırmalar beklenmedik sonuç verebilir ya da hata oluşur.
  • Sorgu otomatik hesaplanmaz: Power Query sonuçları, Excel formülleri gibi anında güncellenmez. Kaynak veriyi değiştirdiğinizde Veri > Tümünü Yenile komutunu kullanmanız ya da sorgu özelliklerinden dosya açılırken yenilemeyi seçmeniz gerekir.
  • Arayüz ve elle yazılan kod: Gelişmiş Düzenleyici'de yaptığınız değişiklikler Uygulanan Adımlar listesine yansır. Ancak bazı elle yazılmış ifadeler arayüzde adım ayarlarını (dişli simgesini) kullanılamaz hale getirebilir. Önemli bir sorguyu değiştirmeden önce sorguyu çoğaltıp kopya üzerinde deneyin.
  • Excel formülleri ile karıştırmayın: M işlevleri Excel işlevlerinden ayrıdır; Table.SelectRows, TOPLA ya da EĞER gibi çalışma sayfası işlevlerinin yerine hücrede kullanılamaz. Ayrıca M'de ondalık ayırıcı her zaman noktadır ve liste ayırıcısı virgüldür; bölgesel ayarlardan etkilenmez.
  • Sürüm ve gizlilik düzeyleri: Excel 2010 ve 2013'te Power Query ayrı eklenti olarak kurulur; Excel 2016 ve sonrasında Veri sekmesinde yerleşiktir. Farklı kaynakları birleştiren sorgularda Formula.Firewall hatası alırsanız, sorgu seçeneklerinden gizlilik düzeylerini kontrol edin.
  • İlgili konular: Power Query, Tablodan/Aralıktan komutu, Sorgular ve Bağlantılar bölmesi, Gelişmiş Düzenleyici, Gruplandır komutu, Sorguları Birleştir ve Ekle komutları, Özet Tablo, Excel Tablosu, DÜŞEYARA, ÇAPRAZARA, EĞER, TOPLA.
Örneklerdeki tabloları indirilebilir Excel dosyasında kendiniz de deneyebilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
6
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst