/v1 adatait a Power BI-ba. Bemutatja
a Power Query (M) kapcsolódási mintáját, a /v1/activities végpontra épülő csillagséma-alapú szemantikai modellt, a növekményes frissítést, valamint azt, hogy mikor érdemes a személyenkénti phishing-eredményekhez a reporting előzetes adathalmazokat használni.
A példák az amerikai éles hostot használják
(https://api.us-east-1.livingsecurity.ai/v1). EU-s szervezet esetén használja a
https://api.eu-west-1.livingsecurity.ai/v1 címet a Fn_FetchAll és
Fn_GetJson helyén is, majd kösse az adatforrás hitelesítő adatát ehhez a hosthoz. Lásd:
Régiók.
Ez az útmutató API-kulccsal tárolt Basic hitelesítő adatokat használ. OAuth-kliensre nincs szüksége. A hitelesítő adatok lehetőségeiről lásd a Hitelesítés oldalt, a hozzáférésről és a beállításról pedig a Developer Hub oldalt.
Mire való ez a példa
Akkor használja, ha a következőkre van szüksége:- A
/v1lista végpontjainak betöltése egy Power BI adathalmazba helyes kurzoros lapozással és sebességkorlát-újrapróbálkozással. - Olyan szemantikai modell létrehozása, amelyben a mérőszámok („aktív entitások”, „tevékenységek aktív entitásonként”) dimenzionálisak, és nem egy lapos táblából számolt darabszámok.
- Az ütemezett Power BI frissítés visszavezetése a teljes előzmények bejárásáról egy kis napi ablakra növekményes frissítéssel.
- A megfelelő phishing-szemcsézettség kiválasztása: kampányösszesítők (operatív) és személyenkénti eredmények, illetve típusos események (reporting előzetes).
Előfeltételek
- Egy API-kulcs a lekérdezései által igényelt jogosultságokkal:
- Operatív példa:
activity:read,entity:readéssimulation:read. - Személyenkénti phishing a reporting adathalmazokon keresztül:
reporting:read. Lásd: API-kulcsok.
- Operatív példa:
- Power BI Desktop, vagy egy Power BI / Fabric munkaterület, ahol létrehozhat szemantikai modellt és ütemezhet frissítést.
A megfelelő szemcsézettség kiválasztása
A/v1 a phishinghez két kapcsolódó felületet kínál. Ezek nem felcserélhetők.
Az alábbi Power BI példalekérdezések az operatív útvonalakat hívják
(
/v1/simulations, /v1/simulations/{id}/results, /v1/activities,
/v1/entities). A személyenkénti phishing-riportoláshoz inkább az alábbi
reporting előzetes családot használja. Az a kulcs, amely csak reporting:read jogosultságot kapott, nem hívhatja
az operatív /v1/simulation_results végpontot (az API 403 választ ad).
Nehézségi skála
A szimuláció nehézsége 1–5 közötti egész szám a következőkön:/v1/simulations (difficulty_level),
/v1/simulation_results (difficulty_level), /v1/activities tulajdonságok
(difficulty_tier), valamint /v1/reporting/simulation_events (difficulty_tier).
1 a legkönnyebb, 5 a legnehezebb. Az adaptív és a progresszív szimulációknak nincs
egyetlen kampányszintű értéke, ezért a /v1/simulations.difficulty_level értéke null,
míg az eredményeken a címzettenkénti difficulty_level továbbra is beállítható. A korábbi
alacsony/közepes/magas exportokra való leképezéshez a 1–2 értéket tekintse alacsonynak, a 3 értéket közepesnek, a 4–5 értéket pedig
magasnak.
Kapcsolódási minta (Power Query)
A példa minden lekérdezése négy szabályra épül. Mindegyiket a Power BI Service érvényesíti, nem stilisztikai preferenciák.A Web.Contents alap URL-je legyen statikus, és /v1-re végződjön
A Web.Contents alap URL-je legyen statikus, és /v1-re végződjön
Minden dinamikus elemet a
RelativePath és Query paraméterbe tegyen. A
Web.Contents első argumentuma literális karakterlánc kell legyen, amely a szervezet
regionális /v1 gyökerénél ér véget:- US:
https://api.us-east-1.livingsecurity.ai/v1 - EU:
https://api.eu-west-1.livingsecurity.ai/v1
"simulations", nem
"v1/simulations"). Ne illesszen be amerikai hostot EU-s szervezethez.Ha az első argumentumot karakterlánc-összefűzéssel állítja elő, a Power BI Service
nem tudja statikusan azonosítani az adatforrást, és az ütemezett frissítés „dynamic data source” hibával meghiúsul, még ha a lekérdezés a Power BI Desktopban működik is.Az API-kulcsot tárolt Basic hitelesítő adatként adja meg, ne a lekérdezés szövegében
Az API-kulcsot tárolt Basic hitelesítő adatként adja meg, ne a lekérdezés szövegében
Amikor a Power BI hitelesítő adatokat kér a
/v1 adatforráshoz, válassza a
Basic lehetőséget, és az API-kulcsot adja meg felhasználónévként. A jelszó mezőbe írjon egy helyőrzőt, például
x. A Power BI Service üres jelszót elutasít, bár az API ezt a mezőt figyelmen kívül hagyja. A kulcs jelszóként, helyőrző felhasználónévvel szintén működik.Ne adjon hozzá Authorization fejlécet M-ben. Az asztali gépén működik, de
beleégeti a kulcsot a lekérdezésfájlba, és ütközik az ütemezett frissítéssel.Hagyja lefutni a hitelesítő adatok párbeszédpanelének kapcsolatteszt-jét
Hagyja lefutni a hitelesítő adatok párbeszédpanelének kapcsolatteszt-jét
A
GET /v1 hitelesített végpont: érvényes kulccsal 200 választ ad, kulcs nélkül
401 választ. Az adatforrást a …/v1 címre irányítsa, és ne hagyja ki a tesztet —
egy jó kulcs mentésre kerül, egy visszavont vagy hibás kulcs azonnal hibát ad.A régebbi példák a puszta hostot használták adatforrásként, és azt mondták, hogy hagyja ki
a tesztet, mert a GET / mindig 404. Irányítsa át ezeket a modelleket a …/v1 címre.Minden lista-lekérdezésben állítsa be explicit módon a limit=500 értéket
Minden lista-lekérdezésben állítsa be explicit módon a limit=500 értéket
Az oldalméret alapértéke minden
/v1 lista végponton 25. Az alapértelmezés meghagyása
ugyanannyi adathoz megsokszorozza a kérések számát. A lekérdezési értékek szövegek kell legyenek —
limit = "500" M-ben, nem limit = 500.Közös lapozófüggvény
A példa minden lekérdezése egyetlenFn_FetchAll függvényt hív, amely addig járja be a
next_page_token értéket, amíg az null nem lesz (lásd a
lapozást). Jellemző tulajdonságai:
- Statikus
/v1alap URL, dinamikusRelativePathésQuery. Az ütemezett frissítéshez és a hitelesítő adatok teszteléséhez szükséges. ManualStatusHandling = {429}korlátozott újrapróbálkozással. A függvény beolvassa aRetry-Afterértéket, ha a Power Query elérhetővé teszi, egyébként 30 másodpercet vár, és 5 egymást követő429válasz után kifejezett hibával feladja, ahelyett hogy addig ismételne, amíg a frissítés időtúllépéssel le nem áll. A5xxhibát szándékosan nem próbálja újra — a kiszolgálóhibának felszínre kell kerülnie, nem pedig csendben részleges adathalmazt eredményeznie.- 60 másodperces
Timeout. Az oldalak jellemzően egy másodpercnél jóval rövidebb idő alatt válaszolnak, így egy perc hallgatás azt jelenti, hogy a kérés elveszett. Binary.BufferaJson.Documentelőtt. Pufferelés nélkül a mashup motor újra lekérheti a válaszfolyamot, ha azt egynél többször olvassa.- A
baseQueryminden iterációban változtatás nélkül kerül átadásra. A lapozótokenek átlátszatlan, aláírt kurzorok, amelyek a szervezethez, a hitelesítő adathoz, a szerződésverzióhoz, valamint a szűrők és a rendezés ujjlenyomatához kötöttek. A szűrő menet közbeni módosítását a rendszer érvénytelen tokenként utasítja el, és nem indul újra az első oldaltól.
Fn_FetchAll.pq — base and call shape
Típusos lekérdezések végpontonként
AFn_FetchAll minden fogyasztója ugyanazt a mintát követi: meghívja a végpontot,
rögzített oszloplistát vetít, elhagyja a object megkülönböztetőt, és az időbélyegeket
datetimezone típusúra állítja, hogy a dátummérőszámok ne csússanak el észrevétlenül a
frissítési kapacitás időzónája miatt.
Excel
Ugyanez a Power Query (M) fut az Excel Get & Transform szolgáltatásában is — ugyanaz a motor, mint a Power BI Desktopban. Akkor használja, ha szemantikai modell helyett munkalap-táblára van szüksége. Excel for Windows esetén (Microsoft 365, Excel 2024, 2021, 2019 vagy 2016):- Data → Get Data → From Other Sources → Blank Query.
- A Power Query Editorban Home → Advanced Editor. Először illessze be a
Fn_FetchAlllekérdezést, majd nevezze átFn_FetchAllnévre (Query Settings → Name, vagy kattintson jobb gombbal a Queries panelen → Rename). - Ismételje meg a
Fn_GetJsonesetében, majd minden riportlekérdezésnél. - A Home → Close & Load → Close & Load To… megnyitja az Import Data
párbeszédpanelt. A
Fn_FetchAllésFn_GetJsonesetében válassza az Only Create Connection lehetőséget (ezek függvények, nem táblák). Minden olyan riportlekérdezésnél, amelyet munkalapon szeretne látni, válassza a Table lehetőséget. - Az első frissítéskor válassza a Basic lehetőséget: az API-kulcs legyen a User name, egy
helyőrző, például
xpedig a Password. Az Excel adatforrás-URL-enként egy hitelesítő adatot tárol; a később ugyanarra a/v1hostra hivatkozó lekérdezések ezt újrahasználják.
A Close & Load To… elszürkülhet, amikor először hoz létre lekérdezést egy
munkafüzetben. Használja a Close & Load lehetőséget, majd az Excelben válassza a Data →
Queries & Connections elemet, kattintson jobb gombbal a lekérdezésre, és válassza a Load To lehetőséget.
Ezt az utat a Microsoft erre az esetre dokumentálja.
Living-Security-Version — ugyanez a korlátozás érvényes a Power BI-ra is. Rögzítse a szolgáltatásfiókot, vagy adja át a api_version értéket a lekérdezés rekordjában. Lásd:
Szerződésverziók és tárolt hitelesítő adatok.
Kész riportlekérdezések (oszlopleképezések és eltérések egy korábbi szolgáltató exportjától):
Személyenkénti megfelelés
Képzési beiratkozások személy × hozzárendelés szemcsézettséggel.
E-mail phishing napló
Eseményszintű phishing-interakciók, az elmúlt 12 hónapra.
Legérzékenyebb felhasználók
Személyenkénti 12 havi kattintási, hitelesítőadat- és jelentési összesítés.
Reporting előzetes adathalmazok (személyenkénti phishing)
A reporting előzetes család adathalmazokat biztosít a személyenkénti phishinghez. Szükséges hozzá areporting:read, valamint a szervezet reporting hozzáférése.
Az alábbi adathalmaz-katalógussal megtekintheti a sémákat és az adatkezelési szabályokat.
Az élő katalógus lekérdezése:
simulation_results
- Útvonal:
GET /v1/reporting/simulation_results - Szemcsézettség: entitás × szimuláció
- Szűrők:
simulation,entity,updated_after, valamintlimit/page_token - Wire objektum:
reporting.simulation_result - Illesztési kulcsok:
entity_id,simulation_id
ReportingSimulationResults.pq (sketch)
updated_after értéket zárt alsó vízjelként a friss partíciók frissítésekor. A változtatható eredménydimenziók helyben, ugyanazon id alatt íródnak felül.
simulation_events
- Útvonal:
GET /v1/reporting/simulation_events - Szemcsézettség: egy típusos tény megfigyelt interakciónként
- Szűrők:
simulation,entity,event_type,occurred_after, valamintlimit/page_token - Wire objektum:
reporting.simulation_event - Eseménytípusok: zárt készletű nyilvános tokenek, például
simulation.delivered,simulation.opened,simulation.link_clicked,simulation.credentials_submitted,simulation.reported— nem a nyers ClickHousephishing.simulation.*tevékenységtípusok - Eszköz: a
device_typea származtatott osztály (a megfigyelt tokenek közé tartozik adesktop,mobile,tablet,unknown). A nyersuser_agentnem szerepel a/v1objektumon. A nyers IP soha nem szerepel a/v1objektumon (soha nem kerül tartós tárolásra; csak sózottip_hash).
ReportingSimulationEvents.pq (sketch)
occurred_after értéket növekményes eseménybetöltéshez. A tények csak hozzáfűzhetők;
a késve érkező adatok új sorok.
entities
- Útvonal:
GET /v1/reporting/entities - Szemcsézettség: egy aktuális sor entitásonként
- Szűrők:
type,updated_after, valamintlimit/page_token - Wire objektum:
reporting.entity - Illesztési kulcs:
id/entity_id(azonos érték)
reporting.simulation_results.entity_id = reporting.entities.id.
Az operatív GET /v1/entities a entity:read végponton marad, és más
jogosultságot igényel.
ReportingEntities.pq
entity_versions és cohort_memberships
Ez a két adathalmaz egy névvel jelölt, csak az aktuális állapotot tartalmazó kivételt tartalmaz:Nem létezik hiteles verzió- vagy tagságtörténeti tábla. Ez az adathalmaz az aktuális sort egyetlen nyitott végű intervallumként vetíti ki (avalid_toértéke null, ais_currentértéke true). Avalid_fromértékecreated_at, ennek hiányábanupdated_ataz entitásverzióknál, a kohorsz-tagságoknál pedig a kérés megfigyelési ideje. Lezárt történeti intervallumokat nem hoz létre.
- entity_versions:
GET /v1/reporting/entity_versions. Ugyanazok a szűrők, mint az entities esetén. Avalid_fromértékecreated_at, ennek hiányábanupdated_at. Az az entitás, amelynek mindkét időbélyege null, kimarad. - cohort_memberships:
GET /v1/reporting/cohort_memberships. Szűrők:cohort,entity,updated_after. Aupdated_ata kohorsz utolsó frissítése, így a növekményes frissítés pontos marad. Avalid_froma kérés megfigyelési ideje. Illessze aentity_idmezőt areporting.entities.idmezőhöz.
ReportingEntityVersions.pq
ReportingCohortMemberships.pq
Csillagséma-alapú szemantikai modell a /v1/activities végponton
A/v1/activities a szervezet időbélyegzett eseményfolyama. Nincsenek numerikus mérőszámai — a riportok minden mennyisége sorszám —, ezért a csillagséma természetes választás.
- A
Activitiesaz eseménytény a valódi szemcsézettséggel. Egy sor tevékenységenként. A résztvevők itt elhagyásra kerülnek, és külön táblaként épülnek újra. - A
ActivityParticipantsazért létezik, mert a résztvevők valóban egy-a-többhöz kapcsolatban állnak, olyan szerepekkel, mint aactorés atarget. AActivitiestáblára való ellapítás vagy megkettőzné a tevékenységsorokat (minden számot felfújva), vagy elveszítené a további résztvevőket. AActivitiesfelé mutató kapcsolat a modell egyetlen kétirányú kapcsolata, így egy entitás-szeletelő eléri a ténytáblát. - A
Entitiesa résztvevőket megnevező dimenzió. Egy tevékenység résztvevősoraientity_idértéket és szerepet hordoznak, de megjelenített nevet nem. - A
DatesM-ben jön létre (nulla API-hívással), és a modell dátumtáblájaként van megjelölve. Ez teszi szabályossá a DAX időintelligencia-függvényeket (DATESINPERIOD,DATEADD). A hónap- és hétköznapnév-oszlopok a számot tartalmazó párjaikon deklarálják asortByColumnbeállítást, hogy a vizualizációk ne ábécésorrendben rendezzék a hónapokat.
discourageImplicitMeasures): összes
tevékenység, aktív entitások, tevékenységek aktív entitásonként, tevékenységgel rendelkező napok,
valamint egy 7 napos mozgó napi átlag.
A hídtábla felépítése
AActivityParticipants bejárja a /v1/activities végpontot, és a participants
tömböt résztvevőnként egy sorra bontja:
ActivityParticipants.pq
ActivityParticipants a /v1/activities végpontot önállóan járja be, ahelyett hogy a Activities lekérdezésre hivatkozna. A Power BI-ban két táblaként betöltött két lekérdezés frissítéskor egymástól függetlenül kérdez le adatot. A függetlenség lehetővé teszi, hogy a szolgáltatás mindkét tábla partícióit párhuzamosan frissítse.
Növekményes frissítés
Mindkét tényszintű tábla (Activities és ActivityParticipants) Power BI növekményes frissítési szabályzatot deklarál: 5 évnyi éves partíciót tart meg, és minden frissítéskor újraimportálja az utolsó 14 napot.
A mechanizmus egy DateTime paraméterpár, a RangeStart és a RangeEnd,
amelyeket a Power BI szolgáltatás frissítéskor partíciónként újrakötöz. Minden ténylekérdezés ezeket a paramétereket beépíti az API start_date és end_date
szűrőibe, így a partíciószintű kérésmennyiség a partícióval arányos, nem a teljes előzményekkel. A lekérdezés mindkét oldalon egy perccel kiszélesíti az API ablakát, és a pontos félig nyitott [RangeStart, RangeEnd) határt helyben alkalmazza újra, így a partíció helyessége nem függ attól, hogy a kiszolgáló a határait zártként vagy nyíltként kezeli.
Activities.pq — the fold that makes incremental refresh work
A 14 napos ablak szándékosan bőkezű. A tevékenységek betöltése nem csupán a jelen időponthoz fűz hozzá: az összekötők visszatöltései múltbeli időbélyegű eseményeket hoznak. Egy 1–2 napos ablak ezeket véglegesen elmulasztaná.
A frissítési ablak kiterjesztése az API-ba
AGET /v1/activities elfogadja a start_date és end_date szűrőket, amelyekbe a
Power BI paraméterei beépülnek, és a event_ts értéket a két határ között szűri.
A Entities dimenzió, ezért ez a példa minden alkalommal teljesen frissíti, nem növekményesen.
A reporting adathalmazok saját vízjeleket használnak (updated_after,
occurred_after) a tevékenységek dátumablaka helyett.
Sebességkorlátok frissítés közben
A/v1 külön kulcsonkénti és IP-címenkénti keretet érvényesít (lásd a
sebességkorlátokat). Vegye figyelembe a 429 + Retry-After értékeit; ne
égessen be kérési keretet a modellbe. A Power BI frissítések két tulajdonsága számít:
- Egyetlen tábla bejárása szekvenciális. Minden oldalkérés az előző oldal tokenjét igényli, így egy tábla az oldalmérettől függetlenül késleltetésfüggő.
- A párhuzamos táblafrissítések szorzódnak. Az a helyzet éri el a korlátot, amikor több nagy tábla frissül párhuzamosan, ezért számít a 429-es újrapróbálkozási út a
Fn_FetchAllfüggvényben. Inkább kevesebb párhuzamos táblát használjon, mintsem korlátlan párhuzamosságot feltételezzen.
Szerződésverziók és tárolt hitelesítő adatok
A/v1 elfogad egy Living-Security-Version kérésfejlécet egy publikált szerződésverzió rögzítéséhez (lásd az API gyorsindítót). A Power Query nem tudja elküldeni ezt a fejlécet, ha az adatforrás tárolt hitelesítő adatokat használ — csak az anonim adatforrások engedélyeznek egyedi fejléceket. Ennek hozzáadása a frissítést a következő hibával meghiúsítja:
contract_version verzióját használja, rögzítés hiányában pedig a legújabb publikált verziót.
A frissítés publikálása előtt egyeztesse a fiók szerződésverzióját az API-adminisztrátorral. A támogatott verziókat lásd az API változásnaplóban.
Ha a frissítés váratlanul kezd viselkedni, ellenőrizze az API
Living-Security-Version válaszfejlécét, hogy melyik szerződés szolgálta ki ténylegesen a kérést.
A modell frissítése és ellenőrzése
Tegye közzé a szemantikai modellt a Power BI munkaterületén, kösse a tárolt hitelesítő adatát a regionális/v1 forráshoz, és az ütemezés engedélyezése előtt futtasson egy frissítést. Nézze át a frissítési előzményeket hibák vagy hiányos olvasások szempontjából.
Vesse össze a sorszámokat egy független, azonos szűrőkkel végzett API-olvasással.
A lapozási útmutató Python- és cURL-példákat tartalmaz a teljes eredményhalmaz olvasásához. Az a frissítés, amely csak az első oldalt olvassa, kis adathalmazon sikeresnek tűnhet; a riportra támaszkodás előtt hasonlítsa össze a darabszámokat.
Modellezési döntések
- A kampányösszesítők és a személyenkénti eredmények szemcsézettsége eltér.
A
SimulationResultsaGET /v1/simulations/{id}/resultsvégpontot hívja (egy GET futtatásonként). A személyenkénti phishinghez adjon hozzá lekérdezéseket aGET /v1/reporting/simulation_resultsés aGET /v1/reporting/simulation_eventsvégponthoz (vagy az operatívGET /v1/simulation_resultsvégponthoz, ha már rendelkeziksimulation:readjogosultsággal). - A
vectorsa/v1/simulationsobjektumon vesszővel elválasztott karakterlánccá van lapítva. Egy lista típusú oszlop nem szeletelhető valódi dimenzióként. Ha egy riportoldalnak vektor szerint kell szűrnie, adjon hozzá egy szimuláció–vektor hídtáblát.
Következő lépések
Developer Hub
Hozzon létre szolgáltatásfiókot és API-kulcsot a Power BI-hoz.
API gyorsindító
A
/v1 kérések hitelesítése Basic hitelesítéssel.Lapozás
A listaboríték, a kurzortokenek és a szűrők stabilitása egy bejáráson belül.
Sebességkorlátok
Kulcsonkénti és IP-címenkénti keretek, a 429-es szerződés és az újrapróbálkozási útmutató.

