Kullanıcı tanımlı toplamalar
Power BI'daki toplamalar, büyük DirectQuery anlam modellerine göre sorgu performansını geliştirebilir. Toplamaları kullanarak verileri toplanan bellek düzeyinde önbelleğe alırsınız. Power BI'daki toplamalar, bu makalede açıklandığı gibi veri modelinde el ile yapılandırılabilir. Premium abonelikler için, model Ayarlar Otomatik toplamalar özelliğini etkinleştirerek otomatik olarak.
Toplama tabloları oluşturma
Veri kaynağı türüne bağlı olarak, veri kaynağında tablo veya görünüm, yerel sorgu olarak bir toplamalar tablosu oluşturulabilir. En yüksek performans için, Power Query'de oluşturulan içeri aktarma tablosu olarak bir toplamalar tablosu oluşturun. Ardından, özetleme, ayrıntı tablosu ve ayrıntı sütunu özellikleri içeren toplama sütunları için toplamalar tanımlamak üzere Power BI Desktop'taki Toplamaları yönet iletişim kutusunu kullanırsınız.
Veri ambarları ve veri reyonları gibi boyutlu veri kaynakları ilişki tabanlı toplamaları kullanabilir. Hadoop tabanlı büyük veri kaynakları genellikle GroupBy sütunlarında toplamaları temel alır. Bu makalede, her veri kaynağı türü için tipik Power BI veri modelleme farklılıkları açıklanmaktadır.
Toplamaları yönetme
Herhangi bir Power BI Desktop görünümünün Veri bölmesinde toplamalar tablosuna sağ tıklayın ve ardından Toplamaları yönet'i seçin.
Toplamaları yönet iletişim kutusunda, tablodaki her sütun için toplama davranışını belirtebileceğiniz bir satır gösterilir. Aşağıdaki örnekte, Sales ayrıntı tablosuna yapılan sorgular dahili olarak Sales Agg toplama tablosuna yönlendirilir.
bu ilişki tabanlı toplama örneğinde GroupBy girişleri isteğe bağlıdır. DISTINCTCOUNT dışında bunlar toplama davranışını etkilemez ve öncelikli olarak okunabilirlik içindir. GroupBy girişleri olmadan, ilişkilere bağlı olarak toplamalar yine de isabet alır. Bu, bu makalenin devamında GroupBy girdilerinin gerekli olduğu büyük veri örneğinden farklıdır.
Doğrulamalar
Toplamaları yönet iletişim kutusu doğrulamaları zorlar:
- Tablo satırlarını say ve say Özetleme işlevleri dışında Ayrıntı Sütunu, Toplama Sütunu ile aynı veri türüne sahip olmalıdır. Tablo satırlarını say ve say yalnızca tamsayı toplama sütunları için kullanılabilir ve eşleşen bir veri türü gerektirmez.
- Üç veya daha fazla tabloyu kapsayan zincirleme toplamalara izin verilmez. Örneğin, A Tablosundaki toplamalar, C Tablosuna başvuran toplamaları olan B Tablosuna başvuramaz.
- İki girdinin aynı Özetleme işlevini kullandığı ve aynı Ayrıntı Tablosu ile Ayrıntı Sütununa başvurduğu yinelenen toplamalara izin verilmez.
- Ayrıntı Tablosu İçeri Aktarma'yı değil DirectQuery depolama modunu kullanmalıdır.
- Etkin olmayan bir ilişki tarafından kullanılan yabancı anahtar sütununa göre gruplandırma ve toplama isabetleri için USERELATIONSHIP işlevinin kullanılması desteklenmez.
- GroupBy sütunlarını temel alan toplamalar toplama tabloları arasındaki ilişkileri kullanabilir, ancak toplama tabloları arasında ilişki yazma Power BI Desktop'ta desteklenmez. Gerekirse, çözümleme (XMLA) uç noktaları için XML aracılığıyla bir üçüncü taraf aracı veya betik çözümü kullanarak toplama tabloları arasında ilişkiler oluşturabilirsiniz.
Çoğu doğrulama, açılan menü değerleri devre dışı bırakılarak ve araç ipucunda açıklayıcı metin gösterilerek uygulanır.
Toplama tabloları gizli
Modele salt okunur erişimi olan kullanıcılar toplama tablolarını sorgulayamaz. Salt okunur erişim, satır düzeyi güvenlik (RLS) ile kullanıldığında güvenlikle ilgili endişeleri önler. Tüketiciler ve sorgular toplama tablosuna değil ayrıntı tablosuna başvurur ve toplama tablosu hakkında bilgi sahibi olması gerekmez.
Bu nedenle toplama tabloları Rapor görünümünden gizlenir. Tablo henüz gizli değilse, Tümünü uygula'yı seçtiğinizde Toplamaları yönet iletişim kutusu tabloyu gizli olarak ayarlar.
Depolama modları
Toplama özelliği, tablo düzeyinde depolama modlarıyla etkileşim kurar. Power BI tabloları DirectQuery, İçeri Aktarma veya İkili depolama modlarını kullanabilir. DirectQuery arka ucu doğrudan sorgularken İçeri Aktar, verileri bellekte önbelleğe alır ve önbelleğe alınan verilere sorgular gönderir. Tüm Power BI İçeri Aktarma ve çok boyutlu olmayan DirectQuery veri kaynakları toplamalarla çalışabilir.
Sorguları hızlandırmak için toplanan tablonun depolama modunu İçeri Aktar olarak ayarlamak için Power BI Desktop Model görünümünde toplanan tabloyu seçin. Özellikler bölmesinde Gelişmiş'i genişletin, Depolama modu altındaki seçimi açın ve İçeri Aktar'ı seçin. İçeri Aktarma'nın değiştirilmesi geri alınamaz.
Tablo depolama modları hakkında daha fazla bilgi edinmek için bkz . Power BI Desktop'ta depolama modunu yönetme.
Toplamalar için RLS
Toplamalar için doğru şekilde çalışmak için RLS ifadelerinin toplama tablosunu ve ayrıntı tablosunu filtrelemesi gerekir.
Aşağıdaki örnekte Geography tablosundaki RLS ifadesi toplamalar için çalışır çünkü Geography, Sales tablosu ve Sales Agg tablosuyla ilişkilerin filtreleme tarafındadır. Toplama tablosuna isabet eden sorgular ve RLS'nin başarıyla uygulanmamış olduğu sorgular.
Product tablosundaki bir RLS ifadesi, toplanmış Sales Agg tablosunu değil yalnızca ayrıntılı Sales tablosunu filtreler. Toplama tablosu, ayrıntı tablosundaki verilerin başka bir gösterimi olduğundan, RLS filtresi uygulanamıyorsa toplama tablosundaki sorguları yanıtlamak güvenli olmaz. Bu roldeki kullanıcı sorguları toplama isabetlerinden yararlanamadığından yalnızca ayrıntı tablosunu filtrelemek önerilmez.
Yalnızca Sales Agg toplama tablosunu filtreleyen ve Sales ayrıntı tablosunu filtreleyen bir RLS ifadesine izin verilmez.
GroupBy sütunlarını temel alan toplamalar için, toplama tablosundaki tüm GroupBy sütunları ayrıntı tablosunun kapsamına alındığından, ayrıntı tablosuna uygulanan bir RLS ifadesi toplama tablosunu filtrelemek için kullanılabilir. Öte yandan, toplama tablosundaki bir RLS filtresi ayrıntı tablosuna uygulanamaz, bu nedenle izin verilmez.
İlişkilere dayalı toplama
Boyutsal modeller genellikle ilişkileri temel alan toplamalar kullanır. Veri ambarlarından ve veri reyonlarından alınan Power BI modelleri, boyut tabloları ve olgu tabloları arasındaki ilişkilerle yıldız/kar tanesi şemalarına benzer.
Aşağıdaki örnekte, model tek bir veri kaynağından veri alır. Tablolar DirectQuery depolama modunu kullanıyor. Satış olgu tablosu milyarlarca satır içerir. Önbelleğe alma için Sales'in depolama modunu İçeri Aktarma olarak ayarlamak, önemli miktarda bellek ve kaynak yükü tüketir.
Bunun yerine Sales Agg toplama tablosunu oluşturun. Sales Agg tablosunda satır sayısı CustomerKey, DateKey ve ProductSubcategoryKey'e göre gruplandırılmış SalesAmount toplamına eşittir. Sales Agg tablosu Sales tablosundan daha yüksek bir ayrıntı düzeyinde olduğundan, milyarlarca satır yerine yönetilebilir milyonlarca satır içerebilir.
Aşağıdaki boyut tabloları en yaygın olarak yüksek iş değerine sahip sorgular için kullanılıyorsa, bire çok veya çoka bir ilişkileri kullanarak Sales Agg'yi filtreleyebilirler.
- Coğrafi Bölge
- Customer
- Tarih
- Ürün Alt Kategorisi
- Ürün Kategorisi
Aşağıdaki görüntüde bu model gösterilmektedir.
Aşağıdaki tabloda Sales Agg tablosunun toplamaları gösterilmektedir.
Not
Sales Agg tablosu, herhangi bir tablo gibi çeşitli yollarla yüklenme esnekliğine sahiptir. Toplama etl/ELT işlemleri kullanılarak kaynak veritabanında veya tablonun M ifadesi tarafından gerçekleştirilebilir. Toplanan tablo, anlam modelleri için Artımlı yenileme ile veya olmadan İçeri Aktarma depolama modunu kullanabilir veya DirectQuery'yi kullanabilir ve columnstore dizinlerini kullanan hızlı sorgular için iyileştirilebilir. Bu esneklik, performans sorunlarını önlemek için sorgu yükünü yayabilen dengeli mimarilere olanak tanır.
Toplanan Sales Agg tablosunun depolama modunu İçeri Aktar olarak değiştirmek, ilgili boyut tablolarının depolama moduna İkili olarak ayarlanabileceğini belirten bir iletişim kutusu açar.
İlgili boyut tablolarının İkili olarak ayarlanması, alt sorguya bağlı olarak İçeri Aktarma veya DirectQuery gibi davranmalarına olanak tanır. Örnekte:
- İçeri Aktarma modu Sales Agg tablosundan ölçümleri toplayan ve ilgili İkili tablolardaki özniteliklere göre gruplandıran sorgular bellek içi önbellekten döndürülebilir.
- DirectQuery Sales tablosundan ölçümleri toplayan ve ilgili İkili tablolardaki özniteliklere göre gruplandıran sorgular DirectQuery modunda döndürülebilir. GroupBy işlemi de dahil olmak üzere sorgu mantığı kaynak veritabanına geçirilir.
İkili depolama modu hakkında daha fazla bilgi için bkz . Power BI Desktop'ta depolama modunu yönetme.
Normal ve sınırlı ilişkiler
İlişkileri temel alan toplama isabetleri normal ilişkiler gerektirir.
Normal ilişkiler, her iki tablonun da tek bir kaynaktan geldiği aşağıdaki depolama modu bileşimlerini içerir:
Çok taraflı tablo | 1 tarafındaki tablo |
---|---|
Çift | Çift |
İçeri Aktar | İçeri aktarma veya İkili |
DirectQuery | DirectQuery veya İkili |
Kaynaklar arası ilişkinin normal olarak kabul edildiği tek durum, her iki tablonun da İçeri Aktar olarak ayarlanmasıdır. Çoka çok ilişkiler her zaman sınırlı kabul edilir.
İlişkilere bağlı olmayan kaynaklar arası toplama isabetleri için bkz . GroupBy sütunlarını temel alan toplamalar.
İlişki tabanlı toplama sorgusu örnekleri
Date tablosundaki sütunlar toplamaya isabet eden ayrıntı düzeyinde olduğundan aşağıdaki sorgu toplamaya isabet eder. SalesAmount sütunu Toplam toplamasını kullanır.
Aşağıdaki sorgu toplamaya isabet etmez. SalesAmount toplamını istemesine rağmen, sorgu Product tablosundaki bir sütunda bir GroupBy işlemi gerçekleştiriyor ve bu işlem toplamaya isabet eden ayrıntı düzeyinde değil. Modeldeki ilişkileri gözlemlerseniz, bir ürün alt kategorisi birden çok Ürün satırına sahip olabilir. Sorgu, hangi ürünün topleneceğini belirleyemez. Bu durumda sorgu DirectQuery'ye geri döner ve veri kaynağına bir SQL sorgusu gönderir.
Toplamalar yalnızca basit bir toplam gerçekleştiren basit hesaplamalar için değildir. Karmaşık hesaplamalar da yararlı olabilir. Kavramsal olarak, karmaşık bir hesaplama her SUM, MIN, MAX ve COUNT için alt sorgulara ayrılır. Her alt sorgu toplamaya isabet edebilir olup olmadığını belirlemek için değerlendirilir. Sorgu planı iyileştirmesi nedeniyle bu mantık her durumda true tutmaz, ancak genel olarak geçerli olmalıdır. Aşağıdaki örnek toplamaya isabet eder:
COUNTROWS işlevi toplamalardan yararlanabilir. Sales tablosu için tanımlanmış bir Tablo satırlarını say toplaması olduğundan aşağıdaki sorgu toplamaya isabet eder.
AVERAGE işlevi toplamalardan yararlanabilir. AŞAĞıDAKI sorgu toplamaya isabet eder çünkü AVERAGE dahili olarak COUNT ile bölünmüş bir TOPLA'ya katlanır. UnitPrice sütununda hem TOPLA hem de BAĞ_DEĞ_SAY için tanımlanmış toplamalar olduğundan toplamaya isabet edilir.
Bazı durumlarda DISTINCTCOUNT işlevi toplamalardan yararlanabilir. Aşağıdaki sorgu toplamaya isabet eder çünkü CustomerKey için toplama tablosunda CustomerKey'in benzersizliğini koruyan bir GroupBy girdisi vardır. Bu teknik yine de iki ile beş milyondan fazla farklı değerin sorgu performansını etkileyebileceği performans eşiğine gelebilir. Bununla birlikte, ayrıntı tablosunda milyarlarca satırın bulunduğu ancak sütunda iki ile beş milyon ayrı değerin bulunduğu senaryolarda yararlı olabilir. Bu durumda DISTINCTCOUNT, bellekte önbelleğe alınmış olsa bile tabloyu milyarlarca satırla taramaktan daha hızlı bir performans sergileyebilir.
Veri Çözümleme İfadeleri (DAX) akıllı zaman gösterimi işlevleri toplamaya duyarlıdır. DATESYTD işlevi Bir CalendarDay değerleri tablosu oluşturduğundan ve toplama tablosu Date tablosundaki gruplandırma ölçütü sütunları için kapsanan ayrıntı düzeyinde olduğundan aşağıdaki sorgu toplamaya isabet eder. Bu, toplamalarla çalışabilen CALCULATE işlevine tablo değerli bir filtre örneğidir.
GroupBy sütunlarını temel alan toplama
Hadoop tabanlı büyük veri modelleri, boyutsal modellerden farklı özelliklere sahiptir. Büyük tablolar arasında birleştirmeleri önlemek için, büyük veri modelleri genellikle ilişkileri kullanmaz, ancak olgu tablolarında boyut özniteliklerini normal dışı bırakır. GroupBy sütunlarını temel alan toplamaları kullanarak etkileşimli analiz için bu tür büyük veri modellerinin kilidini açabilirsiniz.
Aşağıdaki tabloda toplanacak Taşıma sayısal sütunu yer alır. Diğer tüm sütunlar gruplandırma ölçütü öznitelikleridir. Tabloda IoT verileri ve çok sayıda satır bulunur. Depolama modu DirectQuery'dir. Veri kaynağındaki sorgular, tam hacim nedeniyle modelin tamamının yavaş bir şekilde toplandığını gösterir.
Bu modelde etkileşimli analizi etkinleştirmek için, özniteliklerin çoğuna göre gruplandıran ancak boylam ve enlem gibi yüksek kardinalite özniteliklerini dışlayan bir toplama tablosu ekleyebilirsiniz. Bu, satır sayısını önemli ölçüde azaltır ve bellek içi önbelleğe rahatça sığacak kadar küçüktür.
Toplamaları yönet iletişim kutusunda Driver Activity Agg tablosu için toplama eşlemelerini tanımlarsınız.
GroupBy sütunlarını temel alan toplamalarda GroupBy girişleri isteğe bağlı değildir. Bunlar olmadan toplamalar isabet alamaz. Bu, GroupBy girdilerinin isteğe bağlı olduğu ilişkileri temel alan toplamaları kullanmaktan farklıdır.
Aşağıdaki tabloda Driver Activity Agg tablosunun toplamaları gösterilmektedir.
Toplanan Driver Activity Agg tablosunun depolama modunu İçeri Aktar olarak ayarlayabilirsiniz.
GroupBy toplama sorgusu örneği
Etkinlik Tarihi sütunu toplama tablosunun kapsamına eklendiğinden aşağıdaki sorgu toplamaya isabet eder. COUNTROWS işlevi, Sayılan tablo satırları toplamasını kullanır.
Özellikle olgu tablolarında filtre öznitelikleri içeren modeller için Tablo satırlarını say toplamalarını kullanmak iyi bir fikirdir. Power BI, kullanıcı tarafından açıkça istenmeyen durumlarda COUNTROWS kullanarak modele sorgu gönderebilir. Örneğin, filtre iletişim kutusunda her değer için satır sayısı gösterilir.
Birleşik toplama teknikleri
Toplamalar için ilişkileri ve GroupBy sütun tekniklerini birleştirebilirsiniz. İlişkilere dayalı toplamalar, normalleştirilmiş boyut tablolarının birden çok tabloya bölünmesini gerektirebilir. Bu, belirli boyut tabloları için maliyetli veya pratik değilse, bu boyutlar için toplama tablosundaki gerekli öznitelikleri çoğaltabilir ve diğerleri için ilişkileri kullanabilirsiniz.
Örneğin, aşağıdaki model Sales Agg tablosunda Month, Quarter, Semester ve Yearöğelerini çoğaltır. Sales Agg ile Date tablosu arasında ilişki yoktur, ancak Müşteri ve Ürün Alt Kategorisi ile ilişkiler vardır. Sales Agg'nin depolama modu İçeri Aktar'dır.
Aşağıdaki tabloda Sales Agg tablosunun Toplamaları yönet iletişim kutusunda ayarlanan girişler gösterilmektedir. Date'in ayrıntı tablosu olduğu GroupBy girişleri, Date özniteliklerine göre gruplandırılan sorgular için toplamalara isabet etmek için zorunludur. Önceki örnekte olduğu gibi CustomerKey ve ProductSubcategoryKey için GroupBy girişleri, ilişkilerin mevcut olması nedeniyle DISTINCTCOUNT dışında toplama isabetlerini etkilemez.
Birleştirilmiş toplama sorgusu örnekleri
Toplama tablosu CalendarMonth'u kapsadığından ve CategoryName'e bire çok ilişkiler aracılığıyla erişilebildiğinden aşağıdaki sorgu toplamaya isabet eder. SalesAmount, SUM toplamasını kullanır.
Toplama tablosu CalendarDay'i kapsamadığından aşağıdaki sorgu toplamaya isabet etmez.
DATESYTD işlevi CalendarDay değerlerinin bir tablosunu oluşturduğundan ve toplama tablosu CalendarDay'i kapsamadığından aşağıdaki akıllı zaman gösterimi sorgusu toplamaya isabet etmez.
Toplama önceliği
Toplama önceliği, birden çok toplama tablosunun tek bir alt sorgu tarafından dikkate alınmasını sağlar.
Aşağıdaki örnek, birden çok kaynak içeren bileşik bir modeldir :
- Driver Activity DirectQuery tablosu, büyük veri sisteminden alınan trilyonlarca IoT veri satırı içerir. Denetimli filtre bağlamlarında tek tek IoT okumalarını görüntülemek için detaylandırma sorguları sağlar.
- Driver Activity Agg tablosu, DirectQuery modunda bir ara toplama tablosudur. Azure Synapse Analytics'te (eski adı SQL Veri Ambarı) bir milyardan fazla satır içerir ve columnstore dizinleri kullanılarak kaynakta iyileştirilir.
- Driver Activity Agg2 İçeri Aktarma tablosu yüksek ayrıntı düzeyindedir, çünkü gruplandırma ölçütü öznitelikleri az ve düşük kardinaliteye sahiptir. Satır sayısı binler kadar düşük olabileceğinden bellek içi önbelleğe kolayca sığabilir. Bu öznitelikler yüksek profilli bir yönetici panosu tarafından kullanıldığından, bunlara başvuran sorgular mümkün olduğunca hızlı olmalıdır.
Not
Ayrıntı tablosundan farklı bir veri kaynağı kullanan DirectQuery toplama tabloları yalnızca toplama tablosu bir SQL Server, Azure SQL veya Azure Synapse Analytics (eski adı SQL Veri Ambarı) kaynağından geliyorsa desteklenir.
Bu modelin bellek ayak izi nispeten küçüktür, ancak büyük bir modelin kilidini açar. Sorgu yükünü mimarinin bileşenlerine yaydığı ve güçlü yanlarına göre kullanan dengeli bir mimariyi temsil eder.
Driver Activity Agg2 için Yönetilen toplamalar iletişim kutusu Öncelik alanını 10 olarak ayarlar ve bu değer Driver Activity Agg değerinden daha yüksektir. Daha yüksek öncelik ayarı, toplamaları kullanan sorguların önce Driver Activity Agg2'yi dikkate almaları anlamına gelir. Driver Activity Agg2 tarafından yanıtlanabilecek ayrıntı düzeyinde olmayan alt sorgular bunun yerine Driver Activity Agg'yi dikkate alabilir. Toplama tablosundan herhangi biri tarafından yanıtlanamaz ayrıntılı sorgular Sürücü Etkinliği'ne yönlendirebilir.
Zincirleme toplamalara izin verilmediğinden, Ayrıntı Tablosu sütununda belirtilen tablo Driver Activity Agg değil Driver Activity 'dir.
Aşağıdaki tabloda Driver Activity Agg2 tablosunun toplamaları gösterilmektedir.
Sorguların toplamalara isabet edip etmediğini algılama
SQL Profiler, sorguların bellek içi önbellek depolama altyapısından mı döndürüldiğini yoksa DirectQuery tarafından veri kaynağına gönderilip gönderilmediğini algılayabilir. Toplamaların isabet alıp almadığını algılamak için aynı işlemi kullanabilirsiniz. Daha fazla bilgi için bkz . Önbelleğe isabet eden veya önbelleği kaçıran sorgular.
SQL Profiler genişletilmiş olayı da sağlar Query Processing\Aggregate Table Rewrite Query
.
Aşağıdaki JSON kod parçacığı, toplama kullanıldığında olayın çıktısının bir örneğini gösterir.
- matchingResult , alt sorgunun bir toplama kullandığını gösterir.
- dataRequest , groupBy sütunlarını ve kullanılan alt sorguyu toplanmış sütunları gösterir.
- eşlemesi , toplama tablosundaki eşlenmiş sütunları gösterir.
Önbellekleri eşitlenmiş durumda tutma
DirectQuery, İçeri Aktarma ve/veya İkili depolama modlarını birleştiren toplamalar, bellek içi önbellek kaynak verilerle eşitlenmiş durumda tutulmadığı sürece farklı veriler döndürebilir. Örneğin sorgu yürütme, DirectQuery sonuçlarını önbelleğe alınmış değerlerle eşleşecek şekilde filtreleyerek veri sorunlarını maskeleme girişiminde bulunur. Gerekirse, bu tür sorunları kaynakta ele almak için belirlenmiş teknikler vardır. Performans iyileştirmeleri yalnızca iş gereksinimlerini karşılama becerinizi tehlikeye atacak şekilde kullanılmalıdır. Veri akışlarınızı bilmek ve buna göre tasarım yapmak sizin sorumluluğunuzdadır.
Dikkat edilecekler ve sınırlamalar
İşlevsellik değişiklikleri nedeniyle Ağustos 2022'den itibaren Power BI, olası güvenlik riskleri nedeniyle çoklu oturum açma (SSO) özellikli veri kaynaklarına sahip içeri aktarma modu toplama tablolarını yoksayar. Toplamalarla en iyi sorgu performansını sağlamak için bu veri kaynakları için SSO'yu devre dışı bırakmanız önerilir.
Topluluk
Power BI, MVP'lerin, BI uzmanlarının ve iş ortaklarının tartışma grupları, videolar, bloglar ve daha fazlası konusunda uzmanlık paylaştığı canlı bir topluluğa sahiptir. Toplamalar hakkında bilgi edinirken şu ek kaynaklara göz attığınızdan emin olun: