“Rapor_son_son2_GERCEK.pbix”. Tanıdık mı? Power BI Desktop ücretsiz ve Windows üzerinde çalışır; rapor geliştirmenin büyük kısmı burada, kendi bilgisayarında olur. Bu ders, ekibe girmeden önce tek başına bile olsan düzenli yerel çalışma alışkanlığını kurar. Dallar, çekme isteği ve dağıtım gibi ekip süreçleri “Yaşam döngüsü” dersinde.
.pbix mi, .pbip mi?
| .pbix | .pbip (Power BI projesi) | |
|---|---|---|
| Biçim | Tek ikili dosya | Metin dosyalarından oluşan klasör |
| Fark görme | Yok | Satır satır, Git ile |
| Veri | Dosyanın içinde | Yerel önbellekte (.pbi/cache.abf), depoya girmez |
| Dış düzenleyici | Yok | VS Code ile TMDL ve PBIR |
| Duyarlılık etiketi | Var | Desteklenmez |
| OneDrive/SharePoint’e doğrudan | Var | Önerilmez; eşitleme sorunu çıkarır |
Dönüşüm yalnız Desktop’ta Dosya → Farklı kaydet ile yapılır, otomatikleştirilemez. Klasör şöyle olur:
AnadoluMarket/
AnadoluMarket.pbip // kısayol, isteğe bağlı
AnadoluMarket.SemanticModel/
definition/ // TMDL: tablolar, ölçüler, ilişkiler
AnadoluMarket.Report/
definition.pbir // modeli gösterir
definition/ // PBIR: sayfa, görsel, yer işareti
.gitignore // cache.abf ve localSettings.json dışarıda
Windows’un 260 karakter yol sınırına takılmamak için kısa kök klasör seç (C:\bi\). Dosyalar BOM’suz UTF-8, satır sonu CRLF’tir; Git’te autocrlf ayarını ekipçe aynı yap. Elle değişiklik desteklenmeyen dosyalar var (report.json, diyagram düzeni). Yayımdan önce bunlara dokunma.
DAX sorgu görünümü: ölçüyü yazmadan dene
Desktop’ta sol şeritteki DAX sorgu görünümü, modele EVALUATE sorgusu gönderir. Ölçüyü modele eklemeden önce DEFINE MEASURE ile yerel olarak yazıp sınayabilirsin. Doğruysa görünümdeki model güncelleme komutuyla modele eklersin. Bu uygulamadaki DAX Playground aynı mantıkla çalışır:
DEFINE
MEASURE Satislar[Deneme Marj] = DIVIDE([Brüt Kâr], [Net Satış])
EVALUATE
SUMMARIZECOLUMNS(Kategoriler[Kategori], "Net", [Net Satış], "Marj", [Deneme Marj])
Alışkanlık: yeni ölçü yazmadan önce kenar durumları sor. Sıfır bölme var mı, boş kategoride ne dönüyor, toplam satırı anlamlı mı? Sorgu dosyalarını projede saklarsan aynı testi sonra da çalıştırırsın.
TMDL görünümü
Modeli metin olarak düzenleyen görünümdür. Elli ölçünün biçimini tek tek tıklamak yerine betikle değiştirirsin, görüntüleme klasörü toplu verilir. Bir ölçü şöyle görünür (“Yaşam döngüsü” dersinde tam örnek var):
measure 'Net Satış' = CALCULATE([Toplam Satış], Satislar[Durum] <> "İptal")
formatString: #,0 ₺
displayFolder: Temel
Desktop dış değişikliği algılar ve uygulamak için sorar. Açık değişiklik varken dışarıdan düzenleme yaparsan bazı değişiklikler kaybolabilir: önce Desktop’ta kaydet.
Git ile ilk yerel akış
- Projeyi .pbip olarak kaydet, klasörde
git init. - Oluşan
.gitignore’dacache.abfvelocalSettings.jsonolduğunu kontrol et. - İlk işleme:
git add .,git commit -m "İlk sürüm". - Bir ölçüyü değiştir, Desktop’ta kaydet,
git diffile tek satırlık farkı gör. - Beğenmediysen
git restoreile geri dön; Desktop’ı yeniden aç.
Bu kadarı bile “dün neyi bozdum?” sorusunu çözer. Uzak depo, dal ve çekme isteği ekip konusudur.
Harici araçlar
| Araç | Ne için? | Bağlantı |
|---|---|---|
| DAX Studio | Sorgu planı, sunucu zamanlaması | Desktop’ın yerel modeli |
| Tabular Editor | Toplu ölçü, hesaplama grubu, Best Practice Analyzer | Yerel model ya da dosya |
| VS Code | TMDL, PBIR, Git | Proje klasörü |
Bu araçlar Desktop’ın çalıştırdığı yerel Analysis Services örneğine bağlanır. Üretimde kuruluşunun izin verdiği sürümleri kullan. Performans ölçümünde Desktop sonucu Service ile aynı olmaz: veri hacmi, eşzamanlılık, kapasite ve RLS farklıdır.
Yayımla mı, Git mi?
Desktop’ta Yayımla geçici bir .pbix ile yerel önbelleği de gönderir. Fabric Git tümleştirmesi ve REST API yalnız meta veriyi taşır; veri için yenileme gerekir. Tek başına çalışırken Yayımla yeterlidir; ekipte düzenli dağıtıma geç. PBIP’in sınırları: duyarlılık etiketi yok, Report Server sürümünde yok, AAS veya SSAS’a dağıtılamaz.
report.json kullanır.