• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Power Query ile Büyük Klasörlerden Veri Çekerken Eski Ayları Kilitleme ve Artımlı Yenileme (Incremental Refresh)

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

merveik

Yeni Üye
Katılım
31 Ağu 2026
Mesajlar
16
Aldığı beğeni
5
Katkı
%0.00
Excel V
Office 2013 TR
Konu Sahibi
Merhaba arkadaşlar, şirkette ortak bir klasörümüz var ve her ay buraya 500'er bin satırlık büyük satış dataları (CSV/Excel) ekleniyor. Ben bu klasörü Power Query ile tek bir tabloda birleştiriyorum. Şu an içeride 3 yıllık veri birikti. Sıkıntım şu: Her 'Verileri Yenile' dediğimde Excel geçmiş 3 yılın verisini klasörden baştan okuyor ve işlem bazen 20-25 dakika sürüyor, bilgisayar kilitleniyor.Geçmiş ayların verisi zaten değişmiyor, sabit. Power Query üzerinde (Power BI'daki gibi lisans bağımlı olmadan, düz Excel'de) eski aylara ait verileri hafızada kilitli tutacak, sadece klasöre yeni eklenen son ayı/dosyayı okuyup üzerine ekleyecek bir 'Artımlı Yenileme' (Incremental Refresh) kurgusunu M diliyle nasıl yapabiliriz? Örnek şablonumu ekte paylaşıyorum, Power Query uzmanı hocalarımın desteğini bekliyorum.
 
Çözüm
Selamlar, aynı sorunu biz de şirketteki büyük hacimli lojistik datalarında yaşıyorduk ve bilgisayarlar kilitleniyordu. Çözümü Power Query'nin kendi kendini beslediği "Self-Referencing Query" mantığıyla çözdük.
Aşağıdaki adımları takip ederek klasörü baştan taratmadan sadece yeni verileri mevcut tablonun altına ekletebilirsiniz.
Nasıl Yapılır?
  1. Power Query'de mevcut klasör sorgunuzun adını Satis_Master yapın ve Excel sayfasına tablo olarak yükleyin.
  2. Klasöre sadece yeni ayı/dosyayı atın.
  3. Power Query'yi tekrar açıp boş bir sorgu oluşturun ve adını Yeni_Gelenler yapın. Bu sorguda klasör filtresinden sadece son eklenen dosyayı okutun.
  4. Gelişmiş Düzenleyici'yi (Advanced Editor) açıp Satis_Master sorgunuzun...
örnek bir csv verisi eklememişsiniz o nedenle genel bir yorum yapıyorum. Klasördeki dosyaları ekleyerek tek bir tablo haline mi getiriyorsunuz? Yoksa klasördeki her dosyayı ayrı birer tablo halinde tek dosyada mı topluyorsunuz ?
Son soru : sadece SON eklenen dosyayı PQ ya almak yerine NEDEN her defasında komple klasördeki dosyaları ekliyorsunuz ?
 
Konu Sahibi
Galapagos hocam yanıtınız için teşekkürler. Klasördeki tüm dosyaları tek bir ana tabloda birleştiriyorum. Geçmiş dataların kümülatif raporlaması ve yıllık karşılaştırmalar için tüm ayların tek bir havuzda kalması gerekiyor.
Sadece son eklenen dosyayı alırsam geçmiş raporlarımı kaybediyorum. İstediğim şey, Excel'in her yenilemede geçmiş 36 ayı baştan okumayıp hafızada tutması, sadece yeni ayı üzerine eklemesi. Power BI'daki artımlı yenileme (Incremental refresh) mantığını Excel'de kurgulamak mümkün müdür? Değerli yorumlarınızı bekliyorum
 
Power BI kullanmadım, bilmiyorum. PQ
Eski veri SİLİNMEDEN yeni verinin tabloya eklenmesi mümkün .
Sizin pq da oluşan sonuç tablosu kaç satır?
 
Konu Sahibi
Valla harika bir yöntemmiş hocam, Excel'de bunu yapabileceğimi hiç bilmiyordum. Şu an master tablomuz 750-800 bin satır civarında dönüyor, yani sınıra çok yaklaştık ve klasörü baştan taratınca bilgisayar kilitleniyor. Bu bahsettiğiniz eski veriyi silmeden yeni veriyi altına ekleme kurgusunu (sorgu adımlarını) nasıl kurabiliriz hocam? Yol gösterebilirseniz çok sevinirim.
 
Bahsettiğim durum webden veri alırken yapılan bir uygulama. Klasörden veri alarak nasıl olur? denerim.Sonuç alırsam paylaşırım.
 
  • Beğen
İfadeler: Admin
Diğer paylaşımcılara da bilgi vermek amacıyla yazıyorum. Sizin de belirttiğiniz gibi BI da olan "Artımlı Yenileme" birebir PQ da yok. Webden veri alırken benzer bir durum en azından görsel olarak yaratılabiliniyor. ( döviz kurlarını alırken eski verilerin tabloda kalması gibi ). Ama klasörden alırken bu olmuyor en azında ben bulamadım, çözüm önerileri hep BI için.
Bu durum için önerilen yol bir master arşiv tablosu yapmak ,ve eklenen yeni dosyaları buna eklemek. Klasördeki tüm dosyaları tekrar tekrar okutmamak için. Ama sanırım zaten sizin de bildiğiniz ama istemediğiniz bir yol bu. Örneğin her ay yeni bir dosya eklendiğinde sadece bu dosyayı Arşiv Master dosyası ile birleştirmek gibi.
 
  • Beğen
İfadeler: Admin
Power Query de bilgim yok ama pratik bir öneride bulunayım.
Son hali ile verilerinizi yeni bir Excel e aktarın
Yeni dosyalar gelince ADO ile yeni verileri bu dosyaya ekleyin.
 
  • Beğen
İfadeler: Admin
Konu Sahibi
Galapagos ve Alicimri Hocam yanıtlarınız için çok teşekkürler.
Aslında ADO veya harici bir arşiv dosyası yapmadan, doğrudan Power Query içinde çözebileceğimiz bir yöntem varmış, yabancı kaynaklarda denk geldim: "Self-Referencing Query" (Kendi Kendine Başvuran Sorgu) mantığı.
Sistem kısaca şöyle çalışıyor: Önce klasörden mevcut veriyi çekip Excel sayfasına yüklüyoruz. Daha sonra Power Query'ye kaynak olarak klasörü değil, Excel'in kendi içine yüklediği bu mevcut tabloyu gösteriyoruz (Excel.CurrentWorkbook). Son olarak sorgu adımlarında bu mevcut tablonun içeriği ile klasöre yeni eklenen son dosyayı Table.Combine ile birleştirip sadece benzersiz satırları tutuyoruz.
Böylece Excel her yenilemede geçmiş 3 yıllık klasörü baştan taramıyor, sayfadaki mevcut veriyi koruyup sadece yeni eklenen ayı üzerine dikiyor. Hem Power Query'den çıkmamış oluyoruz hem de bilgisayar kilitlenmiyor.
Şu an master tablom 750 bin satırda olduğu için bu kurguda eski verilerin mükerrer olmasını engelleyecek o ince "M dili" birleştirme kodunu tam oturtamadım. Bu döngüsel sorgu (Self-Referencing) mantığına uygun bir M kodu paylaşabilecek olan var mıdır?
 
Selamlar, aynı sorunu biz de şirketteki büyük hacimli lojistik datalarında yaşıyorduk ve bilgisayarlar kilitleniyordu. Çözümü Power Query'nin kendi kendini beslediği "Self-Referencing Query" mantığıyla çözdük.
Aşağıdaki adımları takip ederek klasörü baştan taratmadan sadece yeni verileri mevcut tablonun altına ekletebilirsiniz.
Nasıl Yapılır?
  1. Power Query'de mevcut klasör sorgunuzun adını Satis_Master yapın ve Excel sayfasına tablo olarak yükleyin.
  2. Klasöre sadece yeni ayı/dosyayı atın.
  3. Power Query'yi tekrar açıp boş bir sorgu oluşturun ve adını Yeni_Gelenler yapın. Bu sorguda klasör filtresinden sadece son eklenen dosyayı okutun.
  4. Gelişmiş Düzenleyici'yi (Advanced Editor) açıp Satis_Master sorgunuzun içerisine aşağıdaki M kodunu entegre edin.
Gelişmiş Düzenleyici M Kodu:
HTML:
ASP.net:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Kritik Not: Bu kodu ilk kez çalıştırırken Excel "Gizlilik Düzeyleri (Privacy Levels)" uyarısı verebilir. Sorgu ayarlarından gizlilik düzeyini "Ignore/Yoksay" olarak seçerseniz döngüsel veri okuma hatası almazsınız.
Böylece Excel her yenilemede 3 yıllık geçmişi sıfırdan okumaz; sayfadaki datayı korur, sadece yeni gelen 500 bin satırı altına diker ve mükerrerleri temizler. Umarım işinize yarar.


Not : AI' den alınıp düzenlenmiştir. İşinizi görürse çok mutlu olurum.
 
  • Beğen
İfadeler: Admin
Çözüm
Merhaba merveik ,
Sn Akuma nın ilettiği çözümün "2. ve 3. maddeleri" benim ilk yanıtımdaki ya da sorumdaki durumu anlatıyor aslında. Ana tablo oluşturup her yeni veriyi onun altına ekleme ( table.combine ) işlemi. Bu 2 madde sizin iş akışınız açısından sorun değilse o zaman işlem tamam gibi. Sorgu süresinin ne kadar kısalacağı bilgisini de siz paylaşırsınız.
Son 15 yılın günlük kur bilgilerini içeren ve her ay yenilenen bir dosya için uzun süre önce bu yöntem ile bir problem çözülmüştü. Onu bir video ile hazırlayıp paylaşmıştım. Bulabilirsem onu da paylaşırım.
Ama sanırım PQ bilginiz zaten verilen çözümü uygulamak için yeterince var.
Umarım sorun çözülür. Kolay gelsin,
 
Konu Sahibi
Galapagos hocam haklısınız, mantık olarak sizin dediğiniz gibi bir birleştirme (Table.Combine) yapıyor ama iş akışı ve otomasyon açısından arada çok büyük bir fark var.
Sizin ilk önerdiğiniz arşiv yönteminde benim her ay yeni gelen dosyayı alıp, manuel olarak arşiv dosyasının içine taşımam, kopyalamam veya dışarıda başka bir havuz oluşturup oraya bağlamam gerekiyordu. Yani süreci Excel dışında manuel yönetmek zorundaydım.
Akuma'nın paylaştığı kodun güzelliği ise şu: Excel sayfasına basılmış olan mevcut 750 bin satırı arka planda bir "veri kaynağı" gibi hafızaya alıyor. Ben klasöre yeni dosyayı atıp Excel'de "Yenile" dediğimde, Power Query geçmiş 3 yıllık klasöre hiç dokunmuyor, sadece sayfada hazır duran veriyi çekip yeni gelen dosyayla hafızada saniyeler içinde evlendiriyor. Tüm süreç Excel'in içinde otomatik dönüyor.
Akuma Bey çok teşekkürler, paylaştığınız M kodunu kendi tabloma uyarladım ve test ettim. Eskiden 25 dakikada bilgisayarı kilitleyen yenileme işlemi şu an sadece 18 saniye sürdü ve sıfır donmayla tamamlandı. Harika bir yöntem, ellerinize sağlık.
 
18 saniye. Çok iyi süre. Problemin çözülmesini sevindim. Kolay gelsin.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst