Menu
CoddyTech

Power BI Kopya Kâğıdı

Son güncelleme

Power BI ücretsiz öğren

Ölçüler, sütunlar ve tablolar

Ölçü, bir görselin her hücresi için hesaplanır; hesaplanmış sütun ise her satır için bir kez hesaplanır ve saklanır.

Ne yaparDAX
Ölçü oluşturmakTotal Sales = SUM ( Sales[Amount] )
Hesaplanmış sütun oluşturmak (satır başına bir değer)Line Total = Sales[Quantity] * Sales[Unit Price]
Hesaplanmış tablo oluşturmakTop Customers = TOPN ( 10, Customer, [Total Sales] )
Bir sütuna başvurmak: tablo adı, ardından köşeli parantez içinde sütunSales[Amount]
Boşluk içeren veya ayrılmış bir sözcük olan tablo adını tırnak içine almak'Date'[Date]
Bir ölçüye başvurmak: yalnızca köşeli parantez[Total Sales]
Bir ölçüyü başka bir ölçünün içinde kullanmakAverage Price = DIVIDE ( [Total Sales], [Total Units] )

Toplama fonksiyonları

Her biri, geçerli filtre bağlamında bir sütunu özetler.

Ne yaparDAX
Bir sütunu toplamakSUM ( Sales[Amount] )
Bir sütunun ortalamasıAVERAGE ( Sales[Amount] )
En küçük değerMIN ( Sales[Order Date] )
En büyük değerMAX ( Sales[Order Date] )
Bir tablonun satırlarını saymakCOUNTROWS ( Sales )
Bir sütundaki boş olmayan değerleri saymakCOUNT ( Sales[Amount] )
Benzersiz değerleri saymakDISTINCTCOUNT ( Sales[Customer Key] )
Güvenli bölme: payda 0 olduğunda hata yerine boş değerDIVIDE ( [Total Sales], [Total Units] )
Payda 0 olduğunda gösterilecek bir değerle bölmekDIVIDE ( [Profit], [Total Sales], 0 )

Yineleyiciler (X fonksiyonları)

Bir tabloyu satır satır dolaşır, her satır için bir ifadeyi hesaplar, ardından sonuçları özetlerler.

Ne yaparDAX
Her satırda çarpmak, sonra toplamakSUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Satır başına hesaplanan sonucun ortalamasıAVERAGEX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Satır başına hesaplanan en büyük sonuçMAXX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Müşteri başına bir ölçünün ortalamasıAVERAGEX ( VALUES ( Customer[Customer Key] ), [Total Sales] )
İfadede ilişkili bir tablonun sütununu kullanmakSUMX ( Sales, Sales[Quantity] * RELATED ( Product[Unit Cost] ) )
Bir koşulu sağlayan satırları saymakCOUNTROWS ( FILTER ( Sales, Sales[Quantity] >= 3 ) )
Her ürünü bir ölçüye göre sıralamakRANKX ( ALL ( Product[Product] ), [Total Sales] )
Eşit değerlerden sonra boşluk bırakmadan sıralamak (1, 1, 2)RANKX ( ALL ( Product[Product] ), [Total Sales], , DESC, DENSE )
Değerleri tek bir metinde birleştirmekCONCATENATEX ( VALUES ( Product[Category] ), Product[Category], ", " )

CALCULATE ve filtre fonksiyonları

CALCULATE bir ifadeyi değiştirilmiş filtrelerle hesaplar. Aynı sütundaki bir filtre eskisinin yerini alır; farklı sütunlardaki filtreler AND ile birleşir.

Ne yaparDAX
Tek bir değere göre filtrelemekCALCULATE ( [Total Sales], Product[Category] = "Bikes" )
Bir değer listesine göre filtrelemekCALCULATE ( [Total Sales], Product[Color] IN { "Red", "Blue" } )
İki filtre (AND)CALCULATE ( [Total Sales], Product[Color] = "Red", Store[Country] = "Spain" )
İki sütun arasında ORCALCULATE ( [Total Sales], FILTER ( ALL ( Product[Color], Product[Brand] ), Product[Color] = "Red" || Product[Brand] = "Contoso" ) )
Bir ölçüye göre filtrelemekCALCULATE ( [Total Sales], FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
Mevcut filtreyi korumak ve onunla kesiştirmekCALCULATE ( [Total Sales], KEEPFILTERS ( Product[Color] IN { "Red", "Blue" } ) )
Bir sütundaki filtreleri kaldırmakCALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) )
Bir tablodaki tüm filtreleri kaldırmakCALCULATE ( [Total Sales], ALL ( Product ) )
Bazı sütunlar dışında bir tablodaki tüm filtreleri kaldırmakCALCULATE ( [Total Sales], ALLEXCEPT ( Store, Store[Country] ) )
Dilimleyici seçimini korumak, görselin kendi satırlarını yok saymakCALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) )
Etkin olmayan bir ilişkiyi kullanmakCALCULATE ( [Total Sales], USERELATIONSHIP ( Sales[Ship Date], 'Date'[Date] ) )
Tek bir ölçü için filtrenin iki yönde de akmasını sağlamakCALCULATE ( COUNTROWS ( Customer ), CROSSFILTER ( Sales[Customer Key], Customer[Customer Key], BOTH ) )
İlişkisi olmayan bir tabloya göre filtrelemekCALCULATE ( [Total Sales], TREATAS ( VALUES ( Budget[Category] ), Product[Category] ) )

Zaman zekâsı

Bunlar bir tarih tablosu gerektirir: her gün için bir satır, eksik gün yok ve tarih tablosu olarak işaretlenmiş.

Ne yaparDAX
Yılbaşından bugüneTOTALYTD ( [Total Sales], 'Date'[Date] )
Yılbaşından bugüne, 30 Haziran'da biten mali yılTOTALYTD ( [Total Sales], 'Date'[Date], "6/30" )
CALCULATE içinde yılbaşından bugüneCALCULATE ( [Total Sales], DATESYTD ( 'Date'[Date] ) )
Çeyrek başından bugüneTOTALQTD ( [Total Sales], 'Date'[Date] )
Ay başından bugüneTOTALMTD ( [Total Sales], 'Date'[Date] )
Geçen yılın aynı dönemiCALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
Tarihleri bir aralık kadar kaydırmak (burada bir ay geri)CALCULATE ( [Total Sales], DATEADD ( 'Date'[Date], -1, MONTH ) )
Önceki ayın tamamıCALCULATE ( [Total Sales], PREVIOUSMONTH ( 'Date'[Date] ) )
Bir yıl önceki dönemin tamamıCALCULATE ( [Total Sales], PARALLELPERIOD ( 'Date'[Date], -1, YEAR ) )
Görünen son tarihe kadar son 12 ayCALCULATE ( [Total Sales], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -12, MONTH ) )
Sabit bir tarih aralığıCALCULATE ( [Total Sales], DATESBETWEEN ( 'Date'[Date], DATE ( 2025, 1, 1 ), DATE ( 2025, 3, 31 ) ) )

Sık kullanılan ölçü kalıpları

Kopyalayın, sonra tabloları ve sütunları kendi modelinize göre yeniden adlandırın.

Ne yaparDAX
Tüm kategorilerin içindeki yüzdeCategory % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) ) )
Dilimleyicilerin bıraktığı kısmın içindeki yüzdeVisible % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) ) )
Yıldan yıla büyümeYoY % = VAR LastYear = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN DIVIDE ( [Total Sales] - LastYear, LastYear )
Tüm zamanlar boyunca kümülatif toplamRunning Total = CALCULATE ( [Total Sales], FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) )
7 günlük hareketli ortalama (satış olan günlere göre)Sales 7 Day Avg = AVERAGEX ( DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -7, DAY ), [Total Sales] )
Değeri yalnızca ilk 5 için göstermekTop 5 Sales = IF ( RANKX ( ALLSELECTED ( Product[Product] ), [Total Sales] ) <= 5, [Total Sales] )
Bir eşiğin üzerindeki müşterileri saymakBig Customers = COUNTROWS ( FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
Toplamın, satırlarının toplamına eşit olmasını sağlamakBonus Total = SUMX ( VALUES ( Product[Category] ), [Bonus] )
Değeri bir matrisin yalnızca tek bir düzeyinde göstermekCategory Rank = IF ( ISINSCOPE ( Product[Category] ), RANKX ( ALL ( Product[Category] ), [Total Sales] ) )
Dönem sonu bakiyesi: değeri olan son tarihClosing Units = CALCULATE ( SUM ( Inventory[Units] ), LASTNONBLANK ( 'Date'[Date], CALCULATE ( SUM ( Inventory[Units] ) ) ) )

Mantıksal ve bilgi fonksiyonları

Koşullar için ve filtre bağlamında ne olduğunu sormak için.

Ne yaparDAX
Tek koşulIF ( [Total Sales] > 1000, "High", "Low" )
Tek bir ifadenin birkaç değeriSWITCH ( Store[Country], "Spain", "ES", "Portugal", "PT", "Other" )
Yukarıdan aşağıya kontrol edilen aralıklarSWITCH ( TRUE (), [Total Sales] >= 10000, "A", [Total Sales] >= 1000, "B", "C" )
AND ve ORIF ( Sales[Quantity] > 2 && Sales[Amount] > 50, "Big", "Small" )
Değer boş mu?ISBLANK ( [Total Sales] )
Boş olmayan ilk değerCOALESCE ( [Total Sales], 0 )
Filtre tam olarak tek bir değer bırakıyor mu?HASONEVALUE ( Product[Category] )
O tek değer ya da bir varsayılanSELECTEDVALUE ( Product[Category], "All categories" )
Görselin bu satırı bu sütuna göre gruplanmış mı?ISINSCOPE ( Product[Category] )
Boş değer döndürmekBLANK ()

Metin fonksiyonları

& operatörü metinleri birleştirir; FORMAT bir sayıyı veya tarihi metne çevirir.

Ne yaparDAX
Metin birleştirmekCustomer[First Name] & " " & Customer[Last Name]
Sayı biçimlendirmekFORMAT ( [Total Sales], "#,0.00" )
Tarih biçimlendirmekFORMAT ( 'Date'[Date], "mmm yyyy" )
İlk karakterlerLEFT ( Product[Code], 3 )
Bir konumdan itibaren karakterlerMID ( Product[Code], 4, 2 )
UzunlukLEN ( Product[Name] )
Büyük harfUPPER ( Store[City] )
Fazla boşlukları kaldırmakTRIM ( Customer[Name] )
Metin değiştirmekSUBSTITUTE ( Customer[Phone], " ", "" )
Büyük ve küçük harfe bakmadan bir metnin konumu (bulunamazsa 0)SEARCH ( "pro", Product[Name], 1, 0 )

Tarih fonksiyonları

Tarihler arka planda sayıdır, bu yüzden gün sayısını bulmak için birbirinden çıkarabilirsiniz.

Ne yaparDAX
Bugünün tarihiTODAY ()
Tarih oluşturmakDATE ( 2025, 12, 31 )
Bir tarihin yılıYEAR ( 'Date'[Date] )
Ay numarasıMONTH ( 'Date'[Date] )
Haftanın günü, pazartesi 1WEEKDAY ( 'Date'[Date], 2 )
Hafta numarası, haftalar pazartesi başlarWEEKNUM ( 'Date'[Date], 2 )
Ayın son günüEOMONTH ( 'Date'[Date], 0 )
Bir ay önceki aynı günEDATE ( 'Date'[Date], -1 )
İki tarih arasındaki gün sayısıDATEDIFF ( Sales[Order Date], Sales[Ship Date], DAY )
Sabit tarihlerden bir tarih tablosuCALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 12, 31 ) )
Modeldeki tarihlerden bir tarih tablosuCALENDARAUTO ()

İlişkiler ve arama

RELATED bir ilişkiyi çok tarafından bir tarafına doğru izler.

Ne yaparDAX
Bir tarafındaki değer (Sales tablosundaki bir sütunda)RELATED ( Product[Category] )
Geçerli satırın çok tarafındaki satırları (Customer tablosundaki bir sütunda)COUNTROWS ( RELATEDTABLE ( Sales ) )
İlişki olmadan bir değer aramakLOOKUPVALUE ( Product[Price], Product[SKU], Sales[SKU] )
Üst ve alt öğe yolu (hiyerarşiler ve satır düzeyi güvenlik için)PATH ( Employee[Employee ID], Employee[Manager ID] )
Oturum açmış kullanıcı, dinamik satır düzeyi güvenlik içinUSERPRINCIPALNAME ()

Tablo fonksiyonları

Tablo döndürürler: bunları hesaplanmış bir tabloda, CALCULATE içinde veya bir yineleyicide kullanın.

Ne yaparDAX
Geçerli filtredeki benzersiz değerlerVALUES ( Product[Category] )
Bir koşulu sağlayan satırlarFILTER ( Product, Product[Price] > 100 )
Bir ölçüye göre ilk N satırTOPN ( 5, ALL ( Product[Product] ), [Total Sales] )
Sütunlara göre gruplamak ve ölçü eklemekSUMMARIZECOLUMNS ( Product[Category], "Sales", [Total Sales] )
Bir tabloya sütun eklemekADDCOLUMNS ( VALUES ( Product[Category] ), "Sales", [Total Sales] )
Sütun seçmek ve yeniden adlandırmakSELECTCOLUMNS ( Customer, "Name", Customer[Name], "City", Customer[City] )
Bir sayı listesiGENERATESERIES ( 1, 10, 1 )
İki tablonun tüm kombinasyonlarıCROSSJOIN ( VALUES ( 'Date'[Year] ), VALUES ( Product[Category] ) )
Aynı sütunlara sahip iki tabloyu alt alta eklemekUNION ( 'Sales 2024', 'Sales 2025' )

Değişkenler

VAR bir adıma ad verir ve onu bir kez hesaplar; RETURN sonucu verir.

Ne yaparDAX
Tek değişkenMargin % = VAR Revenue = [Total Sales] RETURN DIVIDE ( Revenue - [Total Cost], Revenue )
Birkaç değişkenSales vs LY = VAR CY = [Total Sales] VAR PY = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN CY - PY
Değişkende bir tabloTop 5 Total = VAR Top5 = TOPN ( 5, ALL ( Product[Product] ), [Total Sales] ) RETURN CALCULATE ( [Total Sales], Top5 )

Power Query (M) adımları

Power Query verileri yüklenmeden önce düzenler. Bunlar sık kullanılan düğmelerin arkasındaki M formülleridir.

Ne yaparM
Eşleşen satırları tutmakTable.SelectRows(Source, each [Status] = "Paid")
Sütunları kaldırmakTable.RemoveColumns(Source, {"Notes", "Temp"})
Sütun türlerini ayarlamakTable.TransformColumnTypes(Source, {{"Amount", type number}, {"Date", type date}})
Bir sütunu yeniden adlandırmakTable.RenameColumns(Source, {{"amt", "Amount"}})
Sütun eklemekTable.AddColumn(Source, "Total", each [Quantity] * [Price], type number)
İki sorguyu birleştirmek (join)Table.NestedJoin(Sales, {"ProductID"}, Products, {"ProductID"}, "Product", JoinKind.LeftOuter)
Sorguları alt alta eklemekTable.Combine({Sales2024, Sales2025})
Sütunları satırlara dönüştürmek (unpivot)Table.UnpivotOtherColumns(Source, {"Product"}, "Month", "Amount")
Gruplamak ve özetlemekTable.Group(Source, {"Category"}, {{"Sales", each List.Sum([Amount]), type number}})
Hataları bir değerle değiştirmekTable.ReplaceErrorValues(Source, {{"Amount", 0}})

Bu Power BI kopya kâğıdı, en sık yazdığınız DAX'i tek sayfada toplar: toplama fonksiyonları, X yineleyicileri, CALCULATE ve filtreleri değiştiren fonksiyonlar, zaman zekâsı, metin ve tarih fonksiyonları, ayrıca kopyalayabileceğiniz ölçü kalıpları: toplamın yüzdesi, yıldan yıla büyüme ve kümülatif toplam.

Örnekler Sales, Product, Customer ve bir 'Date' tablosu içeren bir satış modeli kullanır; bunları kendi modelinize göre yeniden adlandırın. Buradaki DAX, Coddy'nin Power BI kursunun arkasındaki motorla ayrıştırıldı. O kursta DAX'i tarayıcınızdaki bir Power BI çalışma alanında yazabilir ve kontrol ettirebilirsiniz.

Power BI kopya kâğıdı hakkında sık sorulan sorular

Bu Power BI kopya kâğıdı ücretsiz mi?

Evet. Burada okuyabilir veya yer işaretlerinize ekleyebilirsiniz; kayıt gerekmez.

Ölçü ile hesaplanmış sütun arasındaki fark nedir?

Hesaplanmış sütun, yenileme sırasında her satır için bir kez hesaplanır ve saklanır, böylece ona göre dilimleyebilirsiniz. Ölçü ise bir görselin her hücresi için, o hücrenin filtreleriyle hesaplanır ve hiçbir şey saklamaz. Toplamlar ve oranlar ölçü olarak yazılmalıdır.

CALCULATE ne yapar?

Bir ifadeyi değiştirilmiş filtrelerle hesaplar: filtre ekler, değiştirir veya kaldırır, sonra sonucu hesaplar. Basit toplamların ötesindeki DAX'in çoğu, doğru filtre argümanlarıyla yazılmış bir CALCULATE'tir.

Neden / operatörü yerine DIVIDE kullanılır?
DIVIDE, payda sıfır veya boş olduğunda boş bir değer (ya da seçtiğiniz bir değer) döndürür. / operatörü ise sonsuz veya bir hata değeri döndürür ve bu değer görsellerde görünür.
Zaman zekâsı için tarih tablosu gerekir mi?
Evet. TOTALYTD ve SAMEPERIODLASTYEAR gibi fonksiyonlar her gün için bir satırı olan, eksik günü olmayan ve tam yılları kapsayan, olgu tablolarınızla ilişkili ve tarih tablosu olarak işaretlenmiş bir tablo gerektirir.
Bu DAX, Excel Power Pivot ve Analysis Services'te çalışır mı?

DAX dili ortaktır, bu yüzden neredeyse tamamı orada da çalışır. Bazı yeni fonksiyonlar önce Power BI'a gelir.

DAX alıştırmasını nerede yapabilirim?

Coddy'nin Power BI kursunda: her ders size tarayıcıda bir Power BI çalışma alanı verir ve ölçünüzü dersin verisinde ve onun gizli kopyalarında kontrol eder.

Coddy programlama dilleri çizimi

Coddy ile Power BI öğren

Başla