Seçili Rapor Filtreleri

Power BI 'da kullanıcı ihtiyaçları arasında zaman zaman karşılaştığım bir durum var: Seçilen filtreleri raporun bir yerinde göstermek ve seçilen filtrelerin tamamını bir anda sıfırlamak.

Rapor filtrelerini genelde "slicer" olarak ekliyoruz ve çoğunlukla da bir rapor tasarım unsuru olarak kullanıyoruz.

Rapora eklediğimiz filtreleri zaten sayfada görüyoruz diyeceksiniz -ki benzer talepler geldiğinde benim de ilk tepkim bu yönde olmuştu- fakat Nisan ayı itibariyle gelen yeni Filter panosu ile birlikte bu düşüncem biraz değişti. Çok fazla sayıda slicer ya da kırılım için rapor sayfasının kendisini kullanmak bariz şekilde yer işgal ediyor. Birkaç slicer tamam belki ama 4-5 ve üstü için bu kıymetli alanı harcamamakta fayda var. Rapor dönemi gibi çok temel kırılımlar için sayfayı kullanmaya devam edebiliriz ama fazla sayıda kırılım varsa bu özelliği kullanmayı düşünmelisiniz.

Yeni filtre panosunu kullanmak için önizleme ayarlarından bunu açmak gerekiyor,: File –> Options –> Preview Features –> New Filter Experience.


Dosyanızın durumuna göre gene opsiyonlardan Current File –> Filtering Experience seçimi işaretlenmeli.


Bu opsiyonları işaretlediğimizde tüm filtreleri – kırılımları ekleyebileceğimiz, gizlenebilir, yer işgal etmeyen bir filtre panosu ortaya çıkıyor.


Bu filtre panosunun görünümünü rapor sayfamızın tasarımıyla uyumlu hale getirmek de mümkün. "Viz" panosundaki "Filter Pane" ve "Filter Cards" bölümleri tam da bunun için var.


Kullanıcı seçimlerini yakalamanın yollarından biri SELECTEDVALUE fonksiyonunu kullanmak.

Tek Seçimli Kategori := 
SELECTEDVALUE('Ürün Kategorileri'[Kategori] ;"Çoklu Seçim ya da Herşey Seçili" )
Tek Seçimli AltKategori := 
SELECTEDVALUE('Ürün Alt Kategorileri'[Alt Kategori] ; "Çoklu Seçim ya da Herşey Seçili")
Tek Seçimli Şehir := 
SELECTEDVALUE('Mağaza'[Şehir] ; "Çoklu Seçim ya da Herşey Seçili")

Hepsini bir multi-row card görseline düşürüyorum.


Tek bir seçimin yapıldığı durumlar için istediğimiz gibi çalışıyor. SELECTEDVALUE fonksiyonun iki parametresi var:

:= SELECTEDVALUE ( Tablo[Sütun Adı] ; Alternatif Sonuç )

Verdiğimiz sütunda  gördüğü filter context'te  eğer sadece tek bir değer varsa bu değeri döndürüyor. Eğer gördüğü context'te birden fazla değer varsa veya bir seçim yapılmamışsa  ve ikinci parametreye bir şey yazmadıysak  "boş" (blank) döndürüyor.  Boş değer yerine başka bir şey dönmesini istiyorsak ikinci parametreyi kullanabiliriz. Yukarıdaki örneklerde alteranatif olarak text bir  değer döndürdük.

Sabit bir text yerine, seçili şehirlerin değerlerini birleştirmek üzere CONCATENATEX fonksiyonunu kullanacağım.

** CONCATENATEX ile ilgili daha önceki örneklere bakmak isterseniz buradan.

Şehir Seçimi := 
SELECTEDVALUE('Mağaza'[Şehir] ; CONCATENATEX(ALLSELECTED('Mağaza'[Şehir]) ; 'Mağaza'[Şehir] ;",") )


Bu örnekten sonra yapabileceğimiz varyasyonlar ihtiyacın ne olduğuna göre değişebilir. Örneğin Şehir kırılımında hiçbir şey seçilmediyse (bir diğer deyişle tüm şehirler varsa) "Seçim yok" diyebiliriz.  Bir sütun üzerinde filtreler var mı yok mu anlamak için ISFILTERED fonksiyonunu kullanabiliriz.

Şehir Seçimi := 
IF( ISFILTERED('Mağaza'[Şehir]) ; 
    SELECTEDVALUE('Mağaza'[Şehir] ; CONCATENATEX(ALLSELECTED('Mağaza'[Şehir]) ; 'Mağaza'[Şehir] ;",") ) ;
    "Seçim yok"
)


Ya da örneğin kategorilerden çok fazla seçim yapıldıysa "Çok Fazla Seçim Var", makul sayıda seçim varsa seçili kategorileri göster diyebiliriz.

Kategori Seçimi := 
IF (
    ISFILTERED ( 'Ürün Kategorileri'[Kategori] );
    IF ( COUNTROWS ( ALLSELECTED ( 'Ürün Kategorileri'[Kategori] ) ) > 4;
         "Çok Fazla Seçim Var";
        SELECTEDVALUE ('Ürün Kategorileri'[Kategori] ; 
            CONCATENATEX (ALLSELECTED ( 'Ürün Kategorileri'[Kategori] ) ; 'Ürün Kategorileri'[Kategori];",")
        )
    );
    "Seçim yok"
)


Formülleri yazmanın alternatif yolları da var, ALLSELECTED yerine VALUES fonksiyonunu kullanalım. VALUES verdiğimiz sütunda gördüğü değerleri döndüren -çok işlevsel ve yaratıcılığa açık- bir fonksyion.

Kategori Seçimi_VALUES := 
VAR SeciliKategoriler =
    CONCATENATEX( VALUES( 'Ürün Kategorileri'[Kategori]) ; 'Ürün Kategorileri'[Kategori] ; "," )
VAR KategorideFiltreVarmi = 
    IF( ISFILTERED('Ürün Kategorileri'[Kategori] ) ;
    SeciliKategoriler ;
    "Seçim Yok"
    )
RETURN
 KategorideFiltreVarmi


Bir örnek de FILTERS (sonunda S var, sık kullandığımız diğer FILTER değil yani) fonksiyonu ile yapalım.

Kategori Seçimi_FILTERS := 
IF( ISFILTERED( 'Ürün Kategorileri'[Kategori] ) ;
    CONCATENATEX( FILTERS( 'Ürün Kategorileri'[Kategori] ) ; 'Ürün Kategorileri'[Kategori] ; "," ) ;
    "Seçim Yok"
)


FILTERS ile VALUES birbirine benziyor fakat arada ufak bir nüans var. VALUES 'un gördüğü filter context'teki değerler, hem doğrudan hem de dolaylı (cross filter) filtrelerden etkileniyor. FILTERS 'ın gördüğü context'te ise sadece doğrudan filtreler var. Dolayısıyla her ikisi de her zaman aynı sonucu vermeyebilir.

** Bu arada yeni filter panosunu kullanırsanız, rapora koyduğumuz görsellerin  üst bandına bir de filtre ikonu ekleniyor  ve görseli etkileyen filtrelerin listesini görebiliyorsunuz.


Seçili tüm filtreleri bir anda sıfırlamak için bookmark'ları kullanabiliriz. Bookmark'lar okuduğumuz bir kitaptaki önemli yerleri işaretlemek için sayfalara koyduğumuz ayraçlar gibi, görünümü kaydedip işaretliyoruz.

View tabından Bookmark'ı işaretliyorum ve panosunu açıyorum.

Sayfadaki  tüm filtreleri kaldırdıktan sonra  Bookmark panosundan "Add" diyerek yeni bir bookmark ekliyorum ve ismini değiştiriyorum.


Sayfaya bu bookmark'ı tetiklemek üzere Home tabındaki "İmage" menüsünü kullanarak bir ikon ekliyorum.


İkon seçili iken "Format Image" tabındaki "Action" kısmını açıyorum, Type ve Bookmark seçimlerini de aşağıdaki gibi yapıyorum.


Filtre seçimlerini artık tek tuşla sıfırlayabiliriz. İkonun çalışması için Power BI Desktop'tayken tıklamadan önce "CTRL" tuşuna basmanız lazım. Buluta çıktığınızda buna gerek kalmayacaktır.


Yazıdaki modeli indirebilirsiniz.

Sadece kayıtlı üyeler görebilir. Giriş veya Üyelik için login.