Aracılığıyla paylaş


Tablo sütunlarını genişletirken Power Query'yi iyileştirme

Power BI kullanıcılarının hızlı bir şekilde veri toplamasına ve akıllı iş kararları almak için ilginç ve güçlü raporlar oluşturmasına olanak tanıyan basitlik ve kullanım kolaylığı, kullanıcıların kolayca kötü performans gösteren sorgular oluşturmasına da olanak tanır. Bu durum genellikle yabancı anahtarın SQL tablolarını veya SharePoint listelerini ilişkilendirme biçiminde ilişkili iki tablo olduğunda oluşur. (Kayıt için bu sorun SQL veya SharePoint'e özgü değildir ve özellikle şemanın akıcı ve özelleştirilebilir olduğu birçok arka uç veri ayıklama senaryosunda ortaya çıkar.) Ayrıca, verileri ortak bir anahtarı paylaşan ayrı tablolarda depolamanın doğal olarak yanlış bir yanı yoktur; aslında bu, veritabanı tasarımı ve normalleştirmenin temel bir ağıdır. Ancak bu ilişkiyi genişletmek için daha iyi bir yol anlamına geliyor.

SharePoint müşteri listesinin aşağıdaki örneğini göz önünde bulundurun.

Birincil SharePoint müşteri listesi.

Ve başvuruda bulunduğu aşağıdaki konum listesi.

İkincil SharePoint müşteri listesi.

Listeye ilk kez bağlanırken, konum bir kayıt olarak gösterilir.

Birincil konum kayıtları.

Bu üst düzey veriler, herhangi bir web hata ayıklayıcısında görebileceğiniz SharePoint API'sine tek bir HTTP çağrısı (meta veri çağrısını yoksayarak) aracılığıyla toplanır.

Web hata ayıklayıcısında tek HTTP çağrısı.

Kaydı genişlettiğiniz zaman, ikincil tablodan birleştirilen alanları görürsünüz.

İkincil tablodan birleştirilen alanlar.

İlgili satırları bir tablodan diğerine genişletirken, Power BI'ın varsayılan davranışı öğesine Table.ExpandTableColumnbir çağrı oluşturmaktır. Bunu oluşturulan formül alanında görebilirsiniz. Ne yazık ki, bu yöntem ilk tablodaki her satır için ikinci tabloya tek bir çağrı oluşturur.

İkinci tabloya tek tek çağrılar.

Bu, birincil listedeki her satır için HTTP çağrılarının sayısını bir artırır. Bu, yukarıdaki beş veya altı satır örneğinde çok fazla görünmeyebilir, ancak SharePoint listelerinin yüz binlerce satıra ulaştığı üretim sistemlerinde bu, önemli bir deneyim düşüşüne neden olabilir.

Sorgular bu performans sorununa ulaştığında en iyi azaltma, klasik tablo birleştirme kullanarak satır başına çağrı davranışından kaçınmaktır. Bu, ikinci tabloyu almak için yalnızca bir çağrı olmasını sağlar ve genişletmenin geri kalanı iki tablo arasındaki ortak anahtar kullanılarak bellekte gerçekleşebilir. Bazı durumlarda performans farkı çok büyük olabilir.

İlk olarak, özgün tabloyla başlayın, genişletmek istediğiniz sütunu not edin ve öğeyi eşleştirebilmeniz için öğenin kimliğine sahip olduğunuzdan emin olun. Genellikle yabancı anahtar, kimliği eklenmiş sütunun görünen adına benzer şekilde adlandırılır. Bu örnekte LocationId değeridir.

Yabancı anahtar adı.

İkinci olarak, yabancı anahtar olan kimliği eklediğinizden emin olarak ikincil tabloyu yükleyin. Yeni bir sorgu oluşturmak için Sorgular paneline sağ tıklayın.

Kimlik yabancı anahtarıyla ikincil tabloyu yükleyin.

Son olarak, eşleşen ilgili sütun adlarını kullanarak iki tabloyu birleştirin. Bu alanı genellikle önce sütunu genişletip ardından önizlemede eşleşen sütunları arayarak bulabilirsiniz.

Önizlemede eşleşen sütunlar.

Bu örnekte, birincil listedeki LocationId değerinin ikincil listedeki Kimlik ile eşleşdiğini görebilirsiniz. Kullanıcı arabirimi, sütun adını benzersiz hale getirmek için bunu Location.Id olarak yeniden adlandırır. Şimdi tabloları birleştirmek için bu bilgileri kullanalım.

Sorgu paneline sağ tıklayıp Yeni Sorgu>Birleştirme Sorgularını Yeni Olarak Birleştir'i>seçerek, bu iki sorguyu birleştirmenize yardımcı olacak kolay bir kullanıcı arabirimi görürsünüz.

Sorguları birleştirmek için birleştirme sorgularını yeni olarak kullanın.

Sorgunun önizlemesini görmek için açılan listeden her tabloyu seçin.

Birleştirilmiş sorguları önizleme.

Her iki tabloyu da seçtikten sonra, tabloları mantıksal olarak birleştiren sütunu seçin (bu örnekte, birincil tablodan LocationId ve ikincil tablodan Kimlik ). İletişim kutusu, bu yabancı anahtarı kullanarak satırlardan kaçının eşleşeceğini size iletir. Bu tür veriler için varsayılan birleştirme türünü (sol dış) kullanmak isteyebilirsiniz.

Sol dış birleştirme türünü birleştirin.

Tamam'ı seçtiğinizde birleştirmenin sonucu olan yeni bir sorgu görürsünüz. Kaydın şimdi genişletilmesi arka uç için ek çağrılar anlamına gelmez.

Sol dış birleştirme sonucu.

Bu verilerin yenilenmesi, biri birincil liste, diğeri ikincil liste için olmak üzere yalnızca iki SharePoint çağrısına neden olur. Birleştirme bellekte gerçekleştirilerek SharePoint'e yapılan çağrı sayısı önemli ölçüde azaltılır.

Bu yaklaşım, PowerQuery'de eşleşen yabancı anahtara sahip iki tablo için kullanılabilir.

Not

SharePoint kullanıcı listeleri ve taksonomisi de tablo olarak erişilebilir ve kullanıcının bu listelere erişmek için yeterli ayrıcalıklara sahip olması koşuluyla yukarıda açıklandığı şekilde birleştirilebilir.