/v1 verilerinin Power BI’a okunmasına yönelik uçtan uca bir örnektir. Power Query (M) bağlantı modelini, /v1/activities üzerinde oluşturulmuş yıldız şemalı bir anlamsal modeli, artımlı yenilemeyi ve kişi başına kimlik avı sonuçları için raporlama önizleme veri kümelerinin ne zaman kullanılacağını kapsar.
Örneklerde ABD üretim ana bilgisayarı (https://api.us-east-1.livingsecurity.ai/v1) kullanılır. Bir AB kuruluşu için hem Fn_FetchAll hem de Fn_GetJson içinde https://api.eu-west-1.livingsecurity.ai/v1 kullanın, ardından veri kaynağı kimlik bilgisini bu ana bilgisayara bağlayın. Bkz. Bölgeler.
Bu kılavuzda API anahtarıyla saklanan Basic kimlik bilgileri kullanılır. Bir OAuth istemcisine ihtiyacınız yoktur. Kimlik bilgisi seçenekleri için Kimlik doğrulama bölümüne, erişim ve kurulum için Developer Hub sayfasına bakın.
Bu örneğin amacı
Aşağıdaki durumlarda kullanın:/v1liste uç noktalarını doğru imleç sayfalaması ve hız sınırı yeniden denemesiyle bir Power BI veri kümesine yüklemek.- Ölçülerin (“etkin varlıklar”, “etkin varlık başına etkinlikler”) düz bir tablo üzerinden sayılmak yerine boyutsal olduğu bir anlamsal model oluşturmak.
- Zamanlanmış bir Power BI yenilemesini, artımlı yenileme kullanarak geçmişin tamamının taranmasından küçük bir günlük pencereye indirmek.
- Doğru kimlik avı ayrıntı düzeyini seçmek: kampanya toplamları (operasyonel) veya kişi başına sonuçlar ve türlendirilmiş olaylar (raporlama önizlemesi).
Ön koşullar
- Sorgularınızın gerektirdiği izinlere sahip bir API anahtarı:
- Operasyonel örnek:
activity:read,entity:readvesimulation:read. - Raporlama veri kümeleri üzerinden kişi başına kimlik avı:
reporting:read. Bkz. API anahtarları.
- Operasyonel örnek:
- Power BI Desktop veya bir anlamsal model oluşturabileceğiniz ve yenileme zamanlayabileceğiniz bir Power BI / Fabric çalışma alanı.
Doğru ayrıntı düzeyini seçin
/v1, kimlik avı için birbiriyle ilişkili iki yüzey sunar. Bunlar birbirinin yerine kullanılamaz.
Aşağıdaki Power BI örnek sorguları operasyonel rotaları (
/v1/simulations, /v1/simulations/{id}/results, /v1/activities, /v1/entities) çağırır. Kişi başına kimlik avı raporlaması için aşağıdaki raporlama önizleme ailesini tercih edin. Yalnızca reporting:read izni verilmiş bir anahtar operasyonel /v1/simulation_results uç noktasını çağıramaz (API 403 döndürür).
Zorluk ölçeği
Simülasyon zorluğu;/v1/simulations (difficulty_level), /v1/simulation_results (difficulty_level), /v1/activities özellikleri (difficulty_tier) ve /v1/reporting/simulation_events (difficulty_tier) üzerinde 1–5 arasında bir tam sayıdır. 1 en kolay, 5 ise en zor düzeydir. Uyarlanabilir ve aşamalı simülasyonların kampanya düzeyinde tek bir değeri yoktur; bu nedenle /v1/simulations.difficulty_level değeri null olurken sonuçlardaki alıcı başına difficulty_level yine de ayarlanabilir. Eski düşük/orta/yüksek dışa aktarımlarla eşlemek için 1–2 değerini düşük, 3 değerini orta ve 4–5 değerini yüksek olarak değerlendirin.
Bağlantı modeli (Power Query)
Örnekteki her sorgunun temelinde dört kural vardır. Her biri, tarz tercihleriyle değil Power BI Hizmeti tarafından zorunlu kılınır.Web.Contents temel URL'sini statik tutun ve /v1 ile bitirin
Web.Contents temel URL'sini statik tutun ve /v1 ile bitirin
Dinamik olan her şeyi
RelativePath ve Query içine koyun. Web.Contents işlevinin ilk bağımsız değişkeni, kuruluşun bölgesel /v1 köküne kadar olan sabit bir metin dizesi olmalıdır:- ABD:
https://api.us-east-1.livingsecurity.ai/v1 - AB:
https://api.eu-west-1.livingsecurity.ai/v1
"v1/simulations" değil, "simulations"). Bir AB kuruluşu için ABD ana bilgisayarını yapıştırmayın.İlk bağımsız değişken dize birleştirmesiyle oluşturulursa Power BI Hizmeti veri kaynağını statik olarak tanımlayamaz ve sorgu Power BI Desktop’ta çalışsa bile zamanlanmış yenileme “dynamic data source” hatasıyla başarısız olur.API anahtarını sorgu metninde değil, saklanan Basic kimlik bilgisi olarak sağlayın
API anahtarını sorgu metninde değil, saklanan Basic kimlik bilgisi olarak sağlayın
Power BI,
/v1 veri kaynağı için kimlik bilgisi istediğinde Basic seçeneğini seçin ve API anahtarını username olarak yapıştırın. password alanına x gibi bir yer tutucu girin. API bu alanı yok saysa da Power BI Hizmeti boş bir şifreyi reddeder. Anahtarın şifre, yer tutucunun kullanıcı adı olarak girilmesi de çalışır.M içinde bir Authorization üst bilgisi eklemeyin. Masaüstünüzde çalışır, ancak anahtarı sorgu dosyasına gömer ve zamanlanmış yenilemeyle çakışır.Kimlik bilgisi iletişim kutusunun bağlantı testinin çalışmasına izin verin
Kimlik bilgisi iletişim kutusunun bağlantı testinin çalışmasına izin verin
GET /v1 kimlik doğrulamalıdır: geçerli bir anahtarla 200, anahtarsız 401 döndürür. Veri kaynağını …/v1 adresine yönlendirin ve testi atlamayın — geçerli bir anahtar kaydedilir, iptal edilmiş veya hatalı biçimlendirilmiş bir anahtar ise hemen başarısız olur.Eski örneklerde veri kaynağı olarak yalın ana bilgisayar kullanılıyor ve GET / her zaman 404 döndürdüğü için testin atlanması söyleniyordu. Bu modelleri …/v1 adresine yeniden yönlendirin.Her liste sorgusunda limit=500 değerini açıkça ayarlayın
Her liste sorgusunda limit=500 değerini açıkça ayarlayın
Her
/v1 liste uç noktasındaki varsayılan sayfa boyutu 25’tir. Varsayılanın bırakılması, aynı veri için istek sayısını katlar. Sorgu değerleri metin olmalıdır — M içinde limit = 500 değil, limit = "500".Ortak sayfalama işlevi
Örnekteki her sorgu,next_page_token değeri null olana kadar ilerleyen tek bir Fn_FetchAll işlevini çağırır (bkz. sayfalama). Dikkat çeken özellikleri:
- Statik
/v1temel URL’si, dinamikRelativePathveQuery. Zamanlanmış yenileme ve kimlik bilgisi testi için gereklidir. - Sınırlı yeniden denemeli
ManualStatusHandling = {429}. İşlev, Power Query sunduğundaRetry-Afterdeğerini okur, aksi halde 30 saniye bekler ve yenileme zaman aşımına uğrayana kadar döngüde kalmak yerine art arda 5429yanıtından sonra açık bir hatayla vazgeçer.5xxkasıtlı olarak yeniden denenmez — bir sunucu hatası sessizce kısmi bir veri kümesi üretmek yerine görünür olmalıdır. - 60 saniyelik
Timeout. Sayfalar genellikle bir saniyenin çok altında yanıt verir; bu nedenle bir dakikalık sessizlik isteğin öldüğü anlamına gelir. Json.DocumentöncesindeBinary.Buffer. Arabelleğe alma olmadan, mashup altyapısı yanıt akışını birden fazla kez okuyorsa isteği yeniden yapabilir.baseQueryher yinelemede değiştirilmeden iletilir. Sayfa belirteçleri; kuruluşa, kimlik bilgisine, sözleşme sürümüne ve filtre ile sıralama parmak izine bağlı, opak ve imzalı imleçlerdir. Dolaşım sırasında bir filtreyi değiştirmek, ilk sayfadan yeniden başlatılmak yerine geçersiz belirteç olarak reddedilir.
Fn_FetchAll.pq — base and call shape
Uç nokta başına türlendirilmiş sorgular
Fn_FetchAll işlevinin her tüketicisi aynı yapıyı izler: uç noktayı çağırın, sabit bir sütun listesi yansıtın, object ayırt edicisini kaldırın ve zaman damgalarını datetimezone olarak türlendirin; böylece tarih ölçüleri yenileme kapasitesinin saat dilimine göre sessizce kaymaz.
Excel
Aynı Power Query (M), Excel’in Get & Transform özelliğinde de çalışır — Power BI Desktop ile aynı altyapıdır. Anlamsal model yerine bir çalışma sayfası tablosu istediğinizde bunu kullanın. Windows için Excel’de (Microsoft 365, Excel 2024, 2021, 2019 veya 2016):- Data → Get Data → From Other Sources → Blank Query.
- Power Query Editor’da Home → Gelişmiş Düzenleyici seçeneğine gidin. Önce
Fn_FetchAllkodunu yapıştırın, ardından bu sorguyuFn_FetchAllolarak yeniden adlandırın (Query Settings → Name veya Queries bölmesinde sağ tıklayıp Rename). Fn_GetJsoniçin ve ardından her rapor sorgusu için tekrarlayın.- Home → Close & Load → Close & Load To… seçeneği Import Data iletişim kutusunu açar.
Fn_FetchAllveFn_GetJsoniçin Only Create Connection seçeneğini belirleyin (bunlar tablo değil, işlevdir). Çalışma sayfasında görmek istediğiniz her rapor sorgusu için Table seçeneğini belirleyin. - İlk yenilemede Basic seçeneğini belirleyin: API anahtarını User name olarak,
xgibi bir yer tutucuyu Password olarak girin. Excel, veri kaynağı URL’si başına bir kimlik bilgisi saklar; aynı/v1ana bilgisayarına erişen sonraki sorgular bu kimlik bilgisini yeniden kullanır.
Bir çalışma kitabında ilk sorguyu oluşturduğunuzda Close & Load To… seçeneği soluk görünebilir. Close & Load seçeneğini kullanın, ardından Excel’de Data → Queries & Connections yolunu izleyin, sorguya sağ tıklayın ve Load To seçeneğini belirleyin. Bu yol, bu durum için Microsoft tarafından belgelenmiştir.
Living-Security-Version gönderemezsiniz — Power BI ile aynı kısıtlamadır. Hizmet hesabını sabitleyin veya sorgu kaydında api_version iletin. Bkz. Sözleşme sürümleri ve saklanan kimlik bilgileri.
Hazır rapor sorguları (sütun eşlemeleri ve önceki bir sağlayıcının dışa aktarımından farklılıklar):
Kişi başına uyumluluk
Kişi × atama ayrıntı düzeyinde Eğitim kayıtları.
E-posta kimlik avı günlüğü
Olay düzeyinde kimlik avı etkileşimleri, son 12 ay.
Saldırıya en açık kullanıcılar
Kişi başına 12 aylık tıklama, kimlik bilgisi ve bildirim özeti.
Raporlama önizleme veri kümeleri (kişi başına kimlik avı)
Raporlama önizleme ailesi, kişi başına kimlik avı için veri kümeleri sağlar.reporting:read ve kuruluşunuz için raporlama erişimi gerektirir. Şemalarını ve veri politikalarını incelemek için aşağıdaki veri kümesi kataloğunu kullanın.
Canlı kataloğu keşfedin:
simulation_results
- Yol:
GET /v1/reporting/simulation_results - Ayrıntı düzeyi: varlık × simülasyon
- Filtreler:
simulation,entity,updated_after, ayrıcalimit/page_token - Ağ nesnesi:
reporting.simulation_result - Birleştirme anahtarları:
entity_id,simulation_id
ReportingSimulationResults.pq (sketch)
updated_after değerini dahil alt filigran olarak kullanın. Değişebilir sonuç boyutları aynı id altında yerinde yeniden belirtilir.
simulation_events
- Yol:
GET /v1/reporting/simulation_events - Ayrıntı düzeyi: gözlemlenen her etkileşim için türlendirilmiş bir olgu
- Filtreler:
simulation,entity,event_type,occurred_after, ayrıcalimit/page_token - Ağ nesnesi:
reporting.simulation_event - Olay türleri:
simulation.delivered,simulation.opened,simulation.link_clicked,simulation.credentials_submitted,simulation.reportedgibi kapalı genel belirteçler — ham ClickHousephishing.simulation.*etkinlik türleri değil - Cihazı:
device_typetüretilmiş sınıftır (gözlemlenen belirteçler arasındadesktop,mobile,tablet,unknownbulunur). Hamuser_agentdeğeri/v1üzerinde yer almaz. Ham IP hiçbir zaman/v1üzerinde yer almaz (asla kalıcı olarak saklanmaz; yalnızca tuzlanmışip_hash).
ReportingSimulationEvents.pq (sketch)
occurred_after kullanın. Olgular yalnızca eklenir; geç gelen kayıtlar yeni satırlardır.
entities
- Yol:
GET /v1/reporting/entities - Ayrıntı düzeyi: varlık başına bir güncel satır
- Filtreler:
type,updated_after, ayrıcalimit/page_token - Ağ nesnesi:
reporting.entity - Birleştirme anahtarı:
id/entity_id(aynı değer)
reporting.simulation_results.entity_id = reporting.entities.id ile birleştirin. Operasyonel GET /v1/entities entity:read üzerinde kalır ve farklı bir izindir.
ReportingEntities.pq
entity_versions ve cohort_memberships
Bu iki veri kümesi, yalnızca güncel durumu içeren adlandırılmış bir istisna taşır:Yetkili bir sürüm veya üyelik geçmişi tablosu mevcut değildir. Bu veri kümesi geçerli satırı tek bir açık uçlu aralık olarak yansıtır (valid_tonull,is_currenttrue).valid_from, varlık sürümlerindecreated_atveya aksi haldeupdated_atdeğeridir; Grup üyeliklerinde ise istek gözlem zamanıdır. Kapalı geçmiş aralıklar uydurulmaz.
- entity_versions:
GET /v1/reporting/entity_versions. Filtreler entities ile aynıdır.valid_from,created_atveya aksi haldeupdated_atdeğeridir. Her iki zaman damgası da null olan bir varlık dışarıda bırakılır. - cohort_memberships:
GET /v1/reporting/cohort_memberships. Filtreler:cohort,entity,updated_after.updated_at, artımlı yenilemenin doğru kalması için Grubun son güncelleme zamanıdır.valid_fromistek gözlem zamanıdır.entity_iddeğerinireporting.entities.idile birleştirin.
ReportingEntityVersions.pq
ReportingCohortMemberships.pq
/v1/activities üzerinde yıldız şemalı anlamsal model
/v1/activities, kuruluşun zaman damgalı olay akışıdır. Sayısal ölçüleri yoktur — bir raporlardaki her nicelik satır sayısıdır — bu da yıldız şemayı doğal bir seçim yapar.
Activities, gerçek ayrıntı düzeyindeki olay olgusudur. Etkinlik başına bir satır. Katılımcılar burada çıkarılır ve kendi tablosu olarak yeniden oluşturulur.ActivityParticipants, katılımcılar gerçekten bire-çok olduğu için vardır;actorvetargetgibi rolleri bulunur.Activitiesüzerine düzleştirmek ya etkinlik satırlarını çoğaltır (her sayımı şişirir) ya da ek katılımcıları atar.Activitiesile ilişki, modeldeki tek çift yönlü ilişkidir; böylece bir varlık dilimleyicisi olgu tablosuna ulaşır.Entities, katılımcıları adlandıran boyuttur. Bir etkinlikteki katılımcı satırlarıentity_idve bir rol taşır, ancak görünen ad taşımaz.DatesM içinde üretilir (sıfır API çağrısı) ve modelin tarih tablosu olarak işaretlenir. DAX zaman istihbaratının (DATESINPERIOD,DATEADD) geçerli olmasını sağlayan budur. Ay ve haftanın günü adı sütunları, görsellerin ayları alfabetik sıralamaması için sayı eşlerindesortByColumnbildirir.
discourageImplicitMeasures ayarını yapar): toplam etkinlikler, etkin varlıklar, etkin varlık başına etkinlikler, etkinlik olan günler ve 7 günlük geriye dönük günlük ortalama.
Köprü tablosu yapısı
ActivityParticipants, /v1/activities uç noktasını tarar ve participants dizisini katılımcı başına bir satıra açar:
ActivityParticipants.pq
ActivityParticipants, /v1/activities uç noktasını Activities sorgusuna başvurmak yerine bağımsız olarak tarar. Power BI’da iki tablo olarak yüklenen iki sorgu, yenileme sırasında ayrı ayrı veri çeker. Bunları bağımsız tutmak, hizmetin her iki tablonun bölümlerini paralel yenilemesine olanak tanır.
Artımlı yenileme
Her iki olgu ayrıntı düzeyli tablo (Activities ve ActivityParticipants) da bir Power BI artımlı yenileme politikası bildirir: 5 yıllık yıllık bölümleri tutun, her yenilemede son 14 günü yeniden içe aktarın.
Mekanizma, Power BI hizmetinin yenileme sırasında bölüm başına yeniden bağladığı bir çift DateTime parametresidir: RangeStart ve RangeEnd. Her olgu sorgusu bu parametreleri API’nin start_date ve end_date filtrelerine yansıtır; böylece bölüm düzeyindeki istek hacmi toplam geçmişle değil, bölümle orantılı olur. Sorgu, API penceresini her iki yanda bir dakika genişletir ve tam yarı açık [RangeStart, RangeEnd) sınırını yerel olarak yeniden uygular; böylece bölüm doğruluğu, sunucunun sınırlarını dahil mi yoksa hariç mi değerlendirdiğine bağlı olmaz.
Activities.pq — the fold that makes incremental refresh work
14 günlük pencere kasıtlı olarak geniş tutulmuştur. Etkinlik alımı, yalnızca o anda eklenen türde değildir: bağlayıcı geri doldurmaları olayları geçmiş zaman damgalarıyla getirir. 1-2 günlük bir pencere bunları kalıcı olarak kaçırır.
Yenileme penceresinin API’ye genişletilmesi
GET /v1/activities, Power BI parametrelerinin yansıtıldığı start_date ve end_date filtrelerini kabul eder ve event_ts değerini sınırlar arasında filtreler. Entities bir boyuttur; bu nedenle bu örnek onu artımlı olarak değil, her seferinde tam olarak yeniler.
Raporlama veri kümeleri, etkinlikler tarih penceresi yerine kendi filigranlarını (updated_after, occurred_after) kullanır.
Yenileme sırasındaki hız sınırları
/v1, anahtar başına ve IP başına ayrı bütçeler uygular (bkz. hız sınırları). 429 + Retry-After değerlerine uyun; modelinize sabit bir istek bütçesi kodlamayın. Power BI yenilemelerinin iki özelliği önemlidir:
- Tek bir tablo taraması ardışıktır. Her sayfa isteği bir önceki sayfanın belirtecine ihtiyaç duyar; dolayısıyla sayfa boyutundan bağımsız olarak tek bir tablo gecikmeyle sınırlıdır.
- Eşzamanlı tablo yenilemeleri katlanır. Birkaç büyük tablonun paralel yenilenmesi tavana ulaşılan durumdur;
Fn_FetchAlliçindeki 429 yeniden deneme yolunun önemi bu yüzdendir. Sınırsız eşzamanlılık varsaymak yerine daha az paralel tabloyu tercih edin.
Sözleşme sürümleri ve saklanan kimlik bilgileri
/v1, yayımlanmış bir sözleşme sürümünü sabitlemek için bir Living-Security-Version istek üst bilgisi kabul eder (bkz. API hızlı başlangıç). Veri kaynağı saklanan kimlik bilgilerini kullandığında Power Query bu üst bilgiyi gönderemez — yalnızca anonim veri kaynakları özel üst bilgilere izin verir. Eklenmesi, yenilemenin şu hatayla başarısız olmasına neden olur:
contract_version sürümünü, sabitleme ayarlanmamışsa yayımlanmış en son sürümü kullanır. Bir yenileme yayımlamadan önce hesabın sözleşme sürümünü API yöneticinizle doğrulayın. Desteklenen sürümler için API değişiklik günlüğüne bakın.
Bir yenileme beklenmedik şekilde davranmaya başlarsa, isteğe hangi sözleşmenin hizmet verdiğini görmek için API’nin Living-Security-Version yanıt üst bilgisini inceleyin.
Modelinizi yenileyin ve doğrulayın
Anlamsal modeli Power BI çalışma alanınıza yayımlayın, saklanan kimlik bilgisini bölgesel/v1 kaynağına bağlayın ve bir zamanlamayı etkinleştirmeden önce bir yenileme çalıştırın. Hatalar veya eksik okumalar için yenileme geçmişini inceleyin.
Satır sayılarını, aynı filtreleri kullanan bağımsız bir API okumasıyla karşılaştırın. Sayfalama kılavuzu, eksiksiz bir sonuç kümesini okumak için Python ve cURL örnekleri içerir. Yalnızca ilk sayfayı okuyan bir yenileme, küçük bir veri kümesinde başarılı görünebilir; rapora güvenmeden önce sayıları karşılaştırın.
Model seçimleri
- Kampanya toplamları ve kişi başına sonuçların ayrıntı düzeyleri farklıdır.
SimulationResults,GET /v1/simulations/{id}/resultsuç noktasını çağırır (çalıştırma başına bir GET). Kişi başına kimlik avı içinGET /v1/reporting/simulation_resultsveGET /v1/reporting/simulation_events(veya zatensimulation:readiznine sahipseniz operasyonelGET /v1/simulation_results) için sorgular ekleyin. /v1/simulationsüzerindekivectors, virgülle birleştirilmiş bir dizeye düzleştirilir. Liste türündeki bir sütun gerçek bir boyut olarak dilimlenemez. Bir rapor sayfasının vektöre göre filtreleme yapması gerekiyorsa bir simülasyon-vektör köprü tablosu ekleyin.
Sonraki adımlar
Developer Hub
Power BI için bir hizmet hesabı ve API anahtarı oluşturun.
API hızlı başlangıç
/v1 isteklerinin kimliğini Basic kimlik doğrulamasıyla doğrulayın.Sayfalama
Liste zarfı, imleç belirteçleri ve bir tarama boyunca filtre kararlılığı.
Hız sınırları
Anahtar başına ve IP başına bütçeler, 429 sözleşmesi ve yeniden deneme yönergeleri.

