Power Query nedir?
Power Query, veriyi modele yüklemeden önce temizlediğin ETL (çıkar, dönüştür, yükle) aracıdır. Giriş → Verileri dönüştür ile açılır. Yaptığın her tıklama sağdaki Uygulanan Adımlar listesine bir satır olarak eklenir ve arka planda M dilinde kod üretir. Yenilemede bu adımlar sırayla yeniden çalışır; yani temizliği bir kez tasarlarsın.
Kirli veri örneği
Anadolu Market'in web formundan gelen kayıt verisi şöyle görünüyor (Kesit SQL’deki raw_signups tablosu):
| id | full_name | city | signup_date | |
|---|---|---|---|---|
| 3 | " Elif Kaya " | ELIF.KAYA@GMAIL.COM | istanbul | 2024-03-05 |
| 3 | " Elif Kaya " | elif.kaya@gmail.com | istanbul | 2024-03-05 |
| 7 | MEHMET DEMİR | mehmet.demir@gmail.com | " Ankara" | 14.07.2024 |
Temizlik adımları
- Veri türlerini belirle: Sütun başlığındaki simgeye tıkla. Tarih, Tam Sayı, Ondalık Sayı, Metin. Yanlış tür, ileride en çok hata çıkaran şeydir.
- Kırp ve temizle: Dönüştür → Biçim → Kırp (baştaki ve sondaki boşlukları siler) ve Temizle (yazdırılamayan karakterleri siler).
- Büyük/küçük harf: Biçim → Her Sözcüğün İlk Harfi Büyük (ad soyad için), küçük harf (e-posta için).
- Değerleri değiştir: “istanbul” → “İstanbul”. Türkçe büyük İ/ı harflerine dikkat.
- Yinelenenleri kaldır: Anahtar sütunu (id ya da e-posta) seçip Giriş → Satırları Kaldır → Yinelenenleri Kaldır.
- Karışık tarih biçimi: Sütun türünü Yerel ayarı kullanarak Tarih'e çevir (Türkçe, gg.aa.yyyy) ya da önce metni ayrıştır.
- Sütunu böl: “Ad Soyad” sütununu Sınırlayıcıya göre böl → en sağdaki boşluk: Ad ve Soyad.
Arka plandaki M kodu
let
Kaynak = Csv.Document(File.Contents("kayitlar.csv"), [Delimiter=",", Encoding=65001]),
Basliklar = Table.PromoteHeaders(Kaynak),
Kirpilmis = Table.TransformColumns(Basliklar, {{"full_name", Text.Trim}, {"city", Text.Trim}}),
BuyukHarf = Table.TransformColumns(Kirpilmis, {{"full_name", Text.Proper}, {"email", Text.Lower}}),
Tekil = Table.Distinct(BuyukHarf, {"email"}),
Turler = Table.TransformColumnTypes(Tekil, {{"id", Int64.Type}, {"signup_date", type date}}, "tr-TR")
in
Turler
Her satır bir adımdır; bir adım bir önceki adımın adını girdi olarak alır. let … in bloğunun sonundaki ad, sorgunun çıktısıdır.