Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
sentinel_graph luokan avulla voit käsitellä Microsoft Sentinel kaaviota, jolloin voit määrittää kaavion rakenteen, muuntaa tietoja Microsoft Sentinel Data Lake -tallennustilasta solmuiksi ja reuneiksi, julkaista kaavion, kyselykaavion ja suorittaa kehittyneitä kaavioalgoritmeja. Tämä luokka on suunniteltu toimimaan Jupyter-muistikirjojen Spark-istuntojen kanssa, jotka suoritetaan Microsoft Sentinel spark-käsittelyssä.
GraphSpecBuilder
GraphSpecBuilder-luokka tarjoaa sujuvan muodostimen kaaviomääritysten luomiseen tietoputkilla ja rakenteen integroinnilla.
Tärkeää
Tämän GraphBuilder luokan alias on vanhentunut, ja se poistetaan tulevassa versiossa. Käytä GraphSpecBuilder uudessa koodissa.
# Deprecated — emits DeprecationWarning
from sentinel_graph.builders.graph_builder import GraphBuilder
# Recommended
from sentinel_graph import GraphSpecBuilder
Rakentaja
GraphSpecBuilder(context: ExecutionContext)
Parametrit:
-
context(ExecutionContext): Suorituskonteksti, joka sisältää Spark-istunnon ja -määritykset
Herättää:
-
ValueError: Jos konteksti on Ei mitään tai kaavion nimeä ei voida määrittää
Staattiset menetelmät
start
GraphSpecBuilder.start(context: Optional[ExecutionContext] = None) -> GraphSpecBuilder
Määritä uusi sujuva kaavion muodostin.
Parametrit:
-
context(ExecutionContext, valinnainen): ExecutionContext-esiintymä. Jos ei mitään, käyttää oletuskontekstia.
Palauttaa:
-
GraphSpecBuilder: Uusi muodostimen esiintymä
Esimerkki:
builder = GraphSpecBuilder.start(context=context)
Esiintymämenetelmät
add_node
def add_node(alias: str) -> NodeBuilderInitial
Aloita solmumäärityksen luominen.
Parametrit:
-
alias(str): Tämän solmun yksilöllinen tunniste kaaviossa
Palauttaa:
-
NodeBuilderInitial: Solmun muodostin alkutilassa
Esimerkki:
builder.add_node("user")
add_edge
def add_edge(alias: str) -> EdgeBuilderInitial
Aloita reunamäärityksen luominen.
Parametrit:
-
alias(str): Tämän reunan tunnus kaavion sisällä (voidaan jakaa useille reunuksille)
Palauttaa:
-
EdgeBuilderInitial: Edgen muodostin alkutilassa
Esimerkki:
builder.add_edge("accessed")
done
def done() -> GraphSpec
Viimeistele kaavion määritys ja palauta GraphSpec-esiintymä.
Palauttaa:
-
GraphSpec: Täydennä kaavion määritys tietoputkella ja rakenteella
Herättää:
-
ValueError: Jos kaaviossa ei ole solmuja tai reunoja tai jos vahvistus epäonnistuu
Esimerkki:
graph_spec = builder.done()
GraphSpec
Kaaviomääritys, jossa on tietoputki, rakenne ja näyttöominaisuudet.
Rakentaja
GraphSpec(
name: str,
context: ExecutionContext,
graph_schema: GraphSchema,
etl_pipeline: Optional[ETLPipeline] = None
)
Parametrit:
-
name(str): Kaavion nimi -
context(ExecutionContext): Suorituskonteksti -
graph_schema(GraphSchema): Graph-rakenteen määritys -
etl_pipeline(ETLPipeline, valinnainen): Kaavion valmistelun tietoputki
Ominaisuudet
nodes
def nodes() -> DataFrame
Nouda solmut DataFrame (lazy, cached). Määrittää lähteen automaattisesti tietoputkesta tai lake-taulukosta.
Palauttaa:
-
DataFrame: Spark DataFrame, joka sisältää kaikki solmut
Herättää:
-
ValueError: Jos kontekstia puuttuu tai DataFrame-kehyksia ei voi ladata
edges
def edges() -> DataFrame
Hae reunat DataFrame (lazy, cached). Määrittää lähteen automaattisesti tietoputkesta tai lake-taulukosta.
Palauttaa:
-
DataFrame: Spark DataFrame sisältää kaikki reunat
Herättää:
-
ValueError: Jos kontekstia puuttuu tai DataFrame-kehyksia ei voi ladata
Menetelmiä
build_graph_with_data
Huomautus
build_graph_with_data on vanhentunut, ja se poistetaan tulevassa versiossa.
Käytä Graph.build(spec) sen sijaan.
def build_graph_with_data() -> Dict[str, Any]
Suorita tietoputki ja julkaise kaavio.
Kutsuu Graph.build(self)sisäisesti palautettua Graph, ja palauttaa taaksepäin yhteensopivan sanaston.
Palauttaa:
-
Dict[str, Any]: Sanasto, joka sisältää:-
etl_result: Tietojen valmistelun tulokset -
api_result: Julkaise tulokset (jos onnistut) -
api_error: Virhemerkkijono (jos julkaiseminen epäonnistui) -
instance_name: Kaavioesiintymän nimi -
status:"published"tai"prepared"
-
Esimerkki:
graph = Graph.build(spec)
print(f"Status: {graph.build_status.status}")
get_schema
def get_schema() -> GraphSchema
Hae kaavion rakenne.
Palauttaa:
-
GraphSchema: Kaavion rakenteen määritys
get_pipeline
Huomautus
Tämä menetelmä on vanhentunut, ja se poistetaan tulevassa versiossa. Tietoputki on sisäinen toteutustieto, eikä sitä tule käyttää suoraan.
def get_pipeline() -> Optional[ETLPipeline]
Nouda tietoputki (ei mitään aiemmin luoduissa kaavioissa).
Palauttaa:
-
ETLPipelinetaiNone: Tietoputki, jos se on käytettävissä
to_graphframe
def to_graphframe(column_mapping: Optional[Dict[str, str]] = None) -> GraphFrame
Muunna koko kaavio GraphFrameksi kaavioalgoritmien suorittamista varten. Toimii vain paikallisissa tiedoissa (tietoputkesta tai järven taulukosta).
Parametrit:
-
column_mapping(Dict[str, str], valinnainen): Mukautettujen sarakkeiden yhdistämismääritys avaimilla:-
"id": Kärkipisteen tunnussarakkeen nimi -
"source_id": Edge-lähdetunnussarakkeen nimi -
"target_id": Edgen kohdetunnussarakkeen nimi
-
Palauttaa:
-
GraphFrame: GraphFrame-objekti, jossa on kaikki kärkipisteet ja reunat
Herättää:
-
ValueError: Jos ExecutionContext ei ole käytettävissä
Esimerkki:
gf = graph_spec.to_graphframe()
pagerank = gf.pageRank(resetProbability=0.15, maxIter=10)
show
def show(limit: int = 100, viz_format: str = "visual") -> None
Näytä kaavion tiedot eri muodoissa.
Parametrit:
-
limit(kokonaislukema= 100): Näytettäviä solmuja/reunoja enintään -
viz_format(str, default="visual"): Tulostemuoto-
"table": Täydet DataFrame-taulukot (kaikki sarakkeet) -
"visual": Vuorovaikutteinen kaaviovisualisointi -
"all": Näytä kaikki muodot
-
Herättää:
-
ValueError: Jos muoto ei ole yksi tuetuista arvoista
Esimerkki:
graph_spec.show(limit=50, viz_format="table")
show_schema
def show_schema() -> None
Näytä kaavion rakenne vuorovaikutteisena kaaviovisualisointina.
Esimerkki:
spec.show_schema()
Kaavio
Kyselettävä kaavioesiintymä. Luotu käyttämällä Graph.get() (aiemmin luotua kaaviota) tai Graph.build() (kohteesta GraphSpec).
Rakentaja
Graph(
name: str,
context: ExecutionContext,
spec: Optional[GraphSpec] = None,
build_status: Optional[BuildStatus] = None,
)
Parametrit:
-
name(str): Kaavion nimi -
context(ExecutionContext): Suorituskonteksti -
spec(GraphSpec, valinnainen): Liitetty kaaviomääritys (määrittänytGraph.build()) -
build_status(BuildStatus, valinnainen): Koontiversion tuloksen metatiedot (määrittänytGraph.build())
Herättää:
-
ValueError: Jos ExecutionContext on Ei mitään
Staattiset menetelmät
get
Graph.get(name: str, context: Optional[ExecutionContext] = None) -> Graph
Hae kaavioesiintymä olemassa olevasta kaaviosta.
Palautetut Graph -mittarit ovat spec=None ja build_status=None.
Parametrit:
-
name(str): Kaavioesiintymän nimi -
context(ExecutionContext, valinnainen): Suorituskonteksti (oletusarvo on ExecutionContext.default())
Palauttaa:
-
Graph: Kaavioesiintymä
Herättää:
-
ValueError: Jos kaavion nimi on tyhjä tai kaavioesiintymää ei ole olemassa
Esimerkki:
graph = Graph.get("my_graph", context=context)
graph.query("MATCH (n) RETURN n")
prepare
Graph.prepare(spec: GraphSpec) -> Graph
Suorita tietojen valmisteluvaihe toiminnolle ilmanGraphSpec julkaisemista. Tämän jälkeen voit publish() rekisteröidä kaavion ja tehdä siitä kyselevän.
Parametrit:
-
spec(GraphSpec): Graph-määritys, joka valmistellaan
Palauttaa:
-
Graph: Kaavioesiintymä, johon onspecliitetty jabuild_status.status == "prepared"
Herättää:
-
ValueError: Jos määrityksellä ei ole tietoputkea tai suorituskontekstia -
RuntimeError: Jos tietoputken suorittaminen epäonnistuu
Esimerkki:
spec = GraphSpecBuilder.start(context=ctx).add_node(...).done()
graph = Graph.prepare(spec)
# Inspect results before publishing
graph.nodes.show()
graph.publish()
graph.query("MATCH (n) RETURN n")
build
Graph.build(spec: GraphSpec) -> Graph
Luo kaavio kohteesta GraphSpec valmistelemalla tiedot ja julkaisemalla. Kutsuu Graph.prepare(spec) sisäisesti ja yrittää graph.publish()sitten . Toisin kuin kutsumalla näitä kahta menetelmää erikseen, julkaisuvirheet jäävät kiinni – palautetussa kaaviossa on ja build_status.api_error se on build_status.status == "prepared" määritetty nostamisen sijaan.
Parametrit:
-
spec(GraphSpec): Graph-määritys, josta muodostettava
Palauttaa:
-
Graph: Kaavioesiintymä, johon onspecliitetty jabuild_statustäytetty
Herättää:
-
ValueError: Jos määrityksellä ei ole tietoputkea tai suorituskontekstia -
RuntimeError: Jos tietoputken suorittaminen epäonnistuu
Esimerkki:
spec = GraphSpecBuilder.start(context=ctx).add_node(...).done()
graph = Graph.build(spec)
print(graph.build_status.status) # "published" or "prepared" (None if neither ran)
graph.query("MATCH (n) RETURN n")
Ominaisuudet
nodes
def nodes() -> Optional[DataFrame]
Nouda solmut DataFrame. Edustajat kohteeseen self.spec.nodes , kun määritys on liitetty; palauttaa muussa tapauksessa arvon None .
edges
def edges() -> Optional[DataFrame]
Hae reunat DataFrame. Edustajat kohteeseen self.spec.edges , kun määritys on liitetty; palauttaa muussa tapauksessa arvon None .
schema
def schema() -> Optional[GraphSchema]
Hae kaaviorakenne. Edustajat kohteeseen self.spec.get_schema() , kun määritys on liitetty; palauttaa muussa tapauksessa arvon None .
Menetelmiä
query
def query(query_string: str, query_language: str = "GQL") -> QueryResult
Suorita kysely kaavioesiintymälle GQL:n avulla.
Parametrit:
-
query_string(str): Graph-kyselymerkkijono (GQL-kieli) -
query_language(str, default="GQL"): Kyselyn kieli
Palauttaa:
-
QueryResult: Objekti, joka sisältää solmuja, reunoja ja metatietoja
Herättää:
-
ValueError: Jos ExecutionContext- tai Spark-istunto puuttuu -
RuntimeError: Jos asiakkaan alustus tai kyselyn suorittaminen epäonnistuu
Esimerkki:
result = graph.query("MATCH (u:user) WHERE u.age > 30 RETURN u")
result.show()
reachability
def reachability(
*,
source_property_value: str = None,
target_property_value: str = None,
source_property: Optional[str] = None,
participating_source_node_labels: Optional[List[str]] = None,
target_property: Optional[str] = None,
participating_target_node_labels: Optional[List[str]] = None,
participating_edge_labels: Optional[List[str]] = None,
is_directional: bool = True,
min_hop_count: int = 1,
max_hop_count: int = 4,
shortest_path: bool = False,
max_results: int = 500
) -> QueryResult
[! HUOMAUTUS]
reachability(query_input=ReachabilityQueryInput(...))hyväksytään edelleen, mutta se lähetetäänDeprecationWarning, ja se poistetaan tulevassa versiossa.
Suorita tavoitettavuusanalyysi lähde- ja kohdesolmujen välillä.
Parametrit:
-
source_property_value(str): Lähdeominaisuuden vastaava arvo (vahvistettu suorituksen aikana. On annettava, kun käytössä ei olequery_input) -
target_property_value(str): Kohdeominaisuuden vastaava arvo (vahvistettu suorituksen aikana. On annettava, kun käytössä ei olequery_input) -
source_property(Valinnainen[str]): Lähdesolmujen suodattamiseen käytetyn ominaisuuden nimi -
participating_source_node_labels(Valinnainen[Luettelo[str]]): Lähteinä otettavat solmun selitteet -
target_property(Valinnainen[str]): Kohdesolmujen suodattamiseen käytetyn ominaisuuden nimi -
participating_target_node_labels(Valinnainen[Luettelo[str]]): Tavoitteina otettavat solmun selitteet -
participating_edge_labels(Valinnainen[Luettelo[str]]): Läpikäytävät reunaotsikot -
is_directional(totuusarvo): Ovatko reunat suuntaisia (oletus:True) -
min_hop_count(kokonaisluku): Vähimmäissiirtymät (oletus:1) -
max_hop_count(kokonaisluku): Suurin sallittu siirtymä (oletus:4) -
shortest_path(totuusarvo): Palauta vain lyhyimmät polut (oletus:False) -
max_results(kokonaisluku): Tulosten enimmäismäärä (oletus:500)
Herättää:
-
ValueError: Jossource_property_valuetaitarget_property_valuepuuttuu, ,min_hop_count < 1,max_hop_count < min_hop_counttaimax_results < 1 -
RuntimeError: Jos asiakkaan alustus tai kyselyn suorittaminen epäonnistuu
Palauttaa:
-
QueryResult: Sisältää tavoitettavuuspolut
Esimerkki:
result = graph.reachability(
source_property_value="user-001",
target_property_value="device-003")
result.show()
k_hop
def k_hop(
*,
source_property: Optional[str] = None,
source_property_value: Optional[str] = None,
participating_source_node_labels: Optional[List[str]] = None,
target_property: Optional[str] = None,
target_property_value: Optional[str] = None,
participating_target_node_labels: Optional[List[str]] = None,
participating_edge_labels: Optional[List[str]] = None,
is_directional: bool = True,
min_hop_count: int = 1,
max_hop_count: int = 4,
shortest_path: bool = False,
max_results: int = 500
) -> QueryResult
Huomautus
k_hop(query_input=K_HopQueryInput(...)) hyväksytään edelleen, mutta lähetetään DeprecationWarning , ja se poistetaan tulevassa versiossa.
Suorita k-hop-analyysi annetusta lähdesolmusta.
Parametrit:
- Sama kuin
reachability
Validation:
- Vähintään yksi tai
source_property_valuetarget_property_valueon annettava
Herättää:
-
ValueError: Jos ei annetasource_property_valuetaitarget_property_valuejos numeerisia rajoituksia ei rikota (sama kuinreachability) -
RuntimeError: Jos asiakkaan alustus tai kyselyn suorittaminen epäonnistuu
Palauttaa:
-
QueryResult: Sisältää k-hop-tulokset
Esimerkki:
result = graph.k_hop(source_property_value="user-001")
result.show()
blast_radius
def blast_radius(
*,
source_property_value: str = None,
target_property_value: str = None,
source_property: Optional[str] = None,
participating_source_node_labels: Optional[List[str]] = None,
target_property: Optional[str] = None,
participating_target_node_labels: Optional[List[str]] = None,
participating_edge_labels: Optional[List[str]] = None,
is_directional: bool = True,
min_hop_count: int = 1,
max_hop_count: int = 4,
shortest_path: bool = False,
max_results: int = 500
) -> QueryResult
Huomautus
blast_radius(query_input=BlastRadiusQueryInput(...)) hyväksytään edelleen, mutta lähetetään DeprecationWarning , ja se poistetaan tulevassa versiossa.
Suorita räjähdyssädeanalyysi lähdesolmusta kohdesolmuun.
Parametrit:
-
source_property_value(str): Lähdesolmun tunnistava arvo (vahvistettu suorituksen aikana). On annettava, kun käytössä ei olequery_input) -
target_property_value(str): Kohdesolmun määrittävä arvo (vahvistettu suorituksen aikana). On annettava, kun käytössä ei olequery_input) - Muut parametrit: sama kuin
reachability
Herättää:
-
ValueError: Jossource_property_valuetaitarget_property_valuepuuttuu tai jos numeerisia rajoituksia rikotaan (sama kuinreachability) -
RuntimeError: Jos asiakkaan alustus tai kyselyn suorittaminen epäonnistuu
Palauttaa:
-
QueryResult: Sisältää räjähdyssädetulokset
Esimerkki:
result = graph.blast_radius(
source_property_value="user-003",
target_property_value="device-003",
min_hop_count=1)
result.show()
centrality
def centrality(
*,
participating_source_node_labels: Optional[List[str]] = None,
participating_target_node_labels: Optional[List[str]] = None,
participating_edge_labels: Optional[List[str]] = None,
threshold: int = 3,
centrality_type: CentralityType = None,
max_paths: int = 1000000,
is_directional: bool = True,
min_hop_count: int = 1,
max_hop_count: int = 4,
shortest_path: bool = False,
max_results: int = 500
) -> QueryResult
Huomautus
centrality(query_input=CentralityQueryInput(...)) hyväksytään edelleen, mutta lähetetään DeprecationWarning , ja se poistetaan tulevassa versiossa.
Suorita keskitetty analyysi kaaviolle.
Parametrit:
-
participating_source_node_labels(Valinnainen[Luettelo[str]]): Lähdesolmun otsikot -
participating_target_node_labels(Valinnainen[Luettelo[str]]): Kohdesolmun otsikot -
participating_edge_labels(Valinnainen[Luettelo[str]]): Läpikäytävät reunaotsikot -
threshold(kokonaisluku): Keskisen vähimmäistuloksen (oletus:3); on oltava ei-negatiivinen -
centrality_type(CentralityType):CentralityType.NodetaiCentralityType.Edge(oletus:None, palauttaa kohteenCentralityType.Node) -
max_paths(kokonaisluku): Harkinnan enimmäispolut (oletus:1000000;0= kaikki polut); ei saa olla negatiivinen -
is_directional(totuusarvo): Ovatko reunat suuntaisia (oletus:True) -
min_hop_count(kokonaisluku): Vähimmäissiirtymät (oletus:1); on oltava ≥ 1 -
max_hop_count(kokonaisluku): Suurin sallittu siirtymä (oletus:4); on oltava ≥min_hop_count -
shortest_path(totuusarvo): Palauta vain lyhyimmät polut (oletus:False) -
max_results(kokonaisluku): Tulosten enimmäismäärä (oletus:500); on oltava ≥ 1
Herättää:
-
ValueError: ,threshold < 0,max_paths < 0,min_hop_count < 1,max_hop_count < min_hop_counttaimax_results < 1 -
RuntimeError: Jos asiakkaan alustus tai kyselyn suorittaminen epäonnistuu
Palauttaa:
-
QueryResult: Sisältää keskisyysarvot
Esimerkki:
result = graph.centrality(
participating_source_node_labels=["user", "device"],
participating_target_node_labels=["device", "user"],
participating_edge_labels=["sign_in"],
is_directional=False)
result.show()
ranked
def ranked(
*,
rank_property_name: str = None,
threshold: int = 0,
max_paths: int = 1000000,
decay_factor: float = 1,
is_directional: bool = True,
min_hop_count: int = 1,
max_hop_count: int = 4,
shortest_path: bool = False,
max_results: int = 500
) -> QueryResult
Huomautus
ranked(query_input=RankedQueryInput(...)) hyväksytään edelleen, mutta lähetetään DeprecationWarning , ja se poistetaan tulevassa versiossa.
Suorita luokiteltu analyysi kaaviolle.
Parametrit:
-
rank_property_name(str): Sijoituksessa käytettävän ominaisuuden nimi (vahvistettu suorituksen aikana). On annettava, kun käytössä ei olequery_input) -
threshold(kokonaisluku): Vain tätä painoa suuremmat paluupolut (oletus:0); eivät saa olla negatiivisia -
max_paths(kokonaisluku): Harkinnan enimmäispolut (oletus:1000000;0= kaikki polut); ei saa olla negatiivinen -
decay_factor(liukuluku): Sijoitus hajoaa askelta kohti; 2 tarkoittaa puolitusta (oletus:1); ei saa olla negatiivinen -
is_directional(totuusarvo): Ovatko reunat suuntaisia (oletus:True) -
min_hop_count(kokonaisluku): Vähimmäissiirtymät (oletus:1); on oltava ≥ 1 -
max_hop_count(kokonaisluku): Suurin sallittu siirtymä (oletus:4); on oltava ≥min_hop_count -
shortest_path(totuusarvo): Palauta vain lyhyimmät polut (oletus:False) -
max_results(kokonaisluku): Tulosten enimmäismäärä (oletus:500); on oltava ≥ 1
Herättää:
-
ValueError: Josrank_property_namepuuttuu, ,threshold < 0,max_paths < 0,decay_factor < 0,min_hop_count < 1,max_hop_count < min_hop_counttaimax_results < 1 -
RuntimeError: Jos asiakkaan alustus tai kyselyn suorittaminen epäonnistuu
Palauttaa:
-
QueryResult: Sisältää luokitellut solmut/reunat
Esimerkki:
result = graph.ranked(
rank_property_name="risk_score",
threshold=5,
decay_factor=2)
result.show()
to_graphframe
def to_graphframe(column_mapping: Optional[Dict[str, str]] = None) -> GraphFrame
Muunna koko kaavio GraphFrameksi. Käyttää määritystietoja, kun ne ovat käytettävissä. muussa tapauksessa lukee järvien pöydistä.
Parametrit:
-
column_mapping(Dict[str, str], optional): Mukautetun sarakkeen yhdistämismääritys
Palauttaa:
-
GraphFrame: GraphFrame-objekti, jossa on kaikki kärkipisteet ja reunat
Esimerkki:
gf = graph.to_graphframe()
show
def show() -> None
Näytä kaavion tiedot. Edustajat monipuoliseen spec.show() näyttöön, kun määritys on liitetty; muussa tapauksessa tulostaa vain vähän tietoja.
show_schema
def show_schema() -> None
Näytä kaavion rakenne. Edustajat kohteeseen spec.show_schema() , kun määritys on liitetty; tulostaa viestin, joka ilmoittaa, että rakennetta ei muutoin ole käytettävissä.
publish
(uusi versiossa v0.3.3)
def publish() -> Graph
Rekisteröi kaavio ohjelmointirajapinnalla, jolloin siitä voidaan tehdä kysely. Julkaise kaavioesiintymä kutsulla tämä myöhemmin Graph.prepare() (tai missä tahansa Graph , johon on liitetty määritys).
Palauttaa:
-
Graph: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos määritettä ei ole liitetty tai konteksti puuttuu -
RuntimeError: Jos julkaiseminen epäonnistuu
Esimerkki:
graph = Graph.prepare(spec)
graph.publish()
# Now the graph is queryable
graph.query("MATCH (n) RETURN n")
Koontiversion tila
Dataclass, joka sisältää metatietoja toiminnosta Graph.build() .
Kentät
| Kenttä | Kirjoita | Kuvaus |
|---|---|---|
etl_result |
Any |
Vaiheen tulos (tietoputken suorittaminen prepare ) |
api_result |
Optional[Dict] |
Julkaisuvaiheen tulos (None jos julkaiseminen epäonnistui) |
api_error |
Optional[str] |
Virhesanoma, jos julkaiseminen epäonnistui (None jos julkaiseminen onnistui) |
instance_name |
str |
Kaavioesiintymän nimi |
status |
Optional[BuildStatusKind] |
None, "published"tai "prepared" |
Rakennepolut
GraphSpecBuilder.start(...).done() → GraphSpec (spec only, no graph yet)
Graph.get(name, context) → Graph (spec=None, build_status=None)
Graph.prepare(spec) → Graph (spec=spec, build_status.status="prepared")
graph.publish() → Graph (build_status.status="published")
Graph.build(spec) → Graph (prepare + publish in one step)
Esimerkki:
graph = Graph.build(spec)
if graph.build_status.status == "published":
print("Graph prepared and published successfully")
elif graph.build_status.status == "prepared":
print(f"Prepare succeeded but publish failed: {graph.build_status.api_error}")
elif graph.build_status.status is None:
print("Neither prepare nor publish has run")
Solmun muodostajat
NodeBuilderInitial
Solmun muodostimen alkutila: vain käytettävissä olevat tietolähdemenetelmät.
Rakentaja
NodeBuilderInitial(alias: str, graph_builder: GraphSpecBuilder)
Huomautus: Luodaan yleensä -esiintymän kautta GraphSpecBuilder.add_node(), ei suoraan .
Menetelmiä
Huomautus
Alaviivoja _ käytettäessä mukautetun kaavion solmujen, reunojen tai ominaisuuksien nimeämistä ei tueta. Virheellinen pyyntövirhe palautetaan, kun käytetään alaviivoja.
from_table
def from_table(table_name: str, database: Optional[str] = None) -> NodeBuilderSourceSet
Määritä taulukko tietolähteeksi älykkäällä tietokannan tarkkuudella.
Parametrit:
-
table_name(str): Taulukon nimi (pakollinen) -
database(str, valinnainen): Eksplisiittinen tietokannan nimi (on etusijalla kontekstin oletusarvoon nähden)
Palauttaa:
-
NodeBuilderSourceSet: Muodostin lisämäärityksiä varten
Herättää:
-
ValueError: Jos taulukkoa ei löydy tai löytyi useita ristiriitaisia taulukoita
Tietokannan ratkaisujärjestys:
- Eksplisiittinen
databaseparametri (korkein käsittelyjärjestys) - ExecutionContext.default_database
- Hae kaikista tietokannoista (ristiriitojen tunnistukseen liittyvät)
Esimerkki:
builder.add_node("user").from_table("SigninLogs", database="security_db")
from_dataframe
def from_dataframe(dataframe: DataFrame) -> NodeBuilderSourceSet
Määritä Spark DataFrame tietolähteeksi.
Parametrit:
-
dataframe(DataFrame): Spark DataFrame
Palauttaa:
-
NodeBuilderSourceSet: Muodostin lisämäärityksiä varten
Esimerkki:
df = spark.read.table("users")
builder.add_node("user").from_dataframe(df)
NodeBuilderSourceSet
Solmun muodostin tietolähteen määrittämisen jälkeen: käytettävissä olevat määritysmenetelmät.
Rakentaja
NodeBuilderSourceSet(alias: str, graph_builder: GraphSpecBuilder, source_step: DataInputETLStep)
Huomautus: Luotu sisäisesti NodeBuilderInitial-lähdemenetelmillä.
Menetelmiä
with_time_range
def with_time_range(
time_column: str,
start_time: Optional[Union[str, datetime]] = None,
end_time: Optional[Union[str, datetime]] = None,
lookback_hours: Optional[float] = None
) -> NodeBuilderSourceSet
Käytä aikavälin suodatusta solmun tietolähteessä.
Parametrit:
-
time_column(str): Aikaleimatietoja sisältävä sarakkeen nimi (pakollinen) -
start_time(str tai datetime, optional): Aloituspäivämäärä ('10/20/25', '2025-10-20', tai datetime-objekti) -
end_time(str tai datetime, optional): Päättymispäivä (samat muodot kuin start_time) -
lookback_hours(liukuluku, valinnainen): Taaksepäin katsomiseen tunnit tästä alkaen
Palauttaa:
-
NodeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos aikasaraketta ei löydy lähderakenteesta
Aika-alueen logiikka:
- Jos start_time ja end_time annettu, käytä niitä suoraan
- Jos vain lookback_hours annettu: end=now, start=now-lookback_hours
- Jos mitään ei ole annettu: ei ajan suodatusta
- Jos aloitus-/lopetus- JA-lookback_hours: aloitus ja lopetus ovat etusijalla
Esimerkki:
# Explicit date range
builder.add_node("user").from_table("SigninLogs") \
.with_time_range(time_column="TimeGenerated", start_time="2025-01-01", end_time="2025-01-31")
# Lookback window
builder.add_node("user").from_table("SigninLogs") \
.with_time_range(time_column="TimeGenerated", lookback_hours=24)
with_label
def with_label(label: str) -> NodeBuilderSourceSet
Aseta solmun otsikko (oletusarvo on alias, jos sitä ei kutsuta).
Parametrit:
-
label(str): solmun otsikko
Palauttaa:
-
NodeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos selite on jo määritetty
Esimerkki:
builder.add_node("u").from_table("Users").with_label("user")
with_columns
def with_columns(
*columns: str,
key: str,
display: str
) -> NodeBuilderSourceSet
Määritä sarakkeet vaaditulla avaimella ja näyttömäärityksellä.
Parametrit:
-
*columns(str): Sisällytettävät sarakkeiden nimet (vähintään yksi pakollinen) -
key(str): Avaimeksi merkittävän sarakkeen nimi (pakollinen, on oltava sarakkeissa) -
display(str): Sarakkeen nimi, joka merkitään näyttöarvoksi (pakollinen, on oltava sarakkeissa, voi olla sama kuin avain)
Palauttaa:
-
NodeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos vahvistus epäonnistuu (sarakkeiden kaksoiskappaleet, puuttuva avain/näyttö jne.)
Huomautuksia:
Ominaisuudet luodaan automaattisesti saraketyypeistä
Aikasuodatinsarake lisätään automaattisesti, jos se on määritetty
Ominaisuustyypit johdetaan automaattisesti lähderakenteesta
Näytä rajoitukset
Esimerkki:
builder.add_node("user").from_table("Users") \
.with_columns("id", "name", "email", "created_at", key="id", display="name")
add_node
def add_node(alias: str) -> NodeBuilderInitial
Viimeistele tämä solmu ja ala rakentaa toista solmua.
Parametrit:
-
alias(str): Uuden solmun tunnus
Palauttaa:
-
NodeBuilderInitial: Uusi solmun muodostin
Esimerkki:
builder.add_node("user").from_table("Users") \
.with_columns("id", "name", key="id", display="name") \
.add_node("device")
add_edge
def add_edge(alias: str) -> EdgeBuilderInitial
Viimeistele tämä solmu ja ala rakentaa reunaa.
Parametrit:
-
alias(str): Reunan alias
Palauttaa:
-
EdgeBuilderInitial: Uusi reunan muodostin
Esimerkki:
builder.add_node("user").from_table("Users") \
.with_columns("id", "name", key="id", display="name") \
.add_edge("accessed")
done
def done() -> GraphSpec
Viimeistele tämä solmu ja viimeistele kaaviomääritys.
Palauttaa:
-
GraphSpec: Koko kaavion määritys
Esimerkki:
graph_spec = builder.add_node("user").from_table("Users") \
.with_columns("id", "name", key="id", display="name") \
.done()
Reunan muodostajat
EdgeBuilderInitial
Reunan muodostimen alkutila: vain käytettävissä olevat tietolähdemenetelmät.
Rakentaja
EdgeBuilderInitial(alias: str, graph_builder: GraphSpecBuilder)
Huomautus: Luodaan yleensä -esiintymän kautta GraphSpecBuilder.add_edge(), ei suoraan .
Menetelmiä
Huomautus
Alaviivoja _ käytettäessä mukautetun kaavion solmujen, reunojen tai ominaisuuksien nimeämistä ei tueta. Virheellinen pyyntövirhe palautetaan, kun käytetään alaviivoja.
from_table
def from_table(table_name: str, database: Optional[str] = None) -> EdgeBuilderSourceSet
Määritä taulukko tietolähteeksi älykkäällä tietokannan tarkkuudella.
Parametrit:
-
table_name(str): Taulukon nimi (pakollinen) -
database(str, valinnainen): Eksplisiittinen tietokannan nimi
Palauttaa:
-
EdgeBuilderSourceSet: Muodostin lisämäärityksiä varten
Herättää:
-
ValueError: Jos taulukkoa ei löydy tai löytyi useita ristiriitaisia taulukoita
Esimerkki:
builder.add_edge("accessed").from_table("AccessLogs")
from_dataframe
def from_dataframe(dataframe: DataFrame) -> EdgeBuilderSourceSet
Määritä Spark DataFrame tietolähteeksi.
Parametrit:
-
dataframe(DataFrame): Spark DataFrame
Palauttaa:
-
EdgeBuilderSourceSet: Muodostin lisämäärityksiä varten
Esimerkki:
df = spark.read.table("access_logs")
builder.add_edge("accessed").from_dataframe(df)
EdgeBuilderSourceSet
Edgen muodostin tietolähteen määrittämisen jälkeen: käytettävissä olevat määritysmenetelmät.
Rakentaja
EdgeBuilderSourceSet(alias: str, graph_builder: GraphSpecBuilder, source_step: DataInputETLStep)
Huomautus: Luotu sisäisesti EdgeBuilderInitial-lähdemenetelmillä.
Menetelmiä
with_label
def with_label(label: str) -> EdgeBuilderSourceSet
Määritä reunan suhteen tyyppi/selite (oletusarvo on alias, jos sitä ei kutsuta).
Parametrit:
-
label(str): Reunan selite
Palauttaa:
-
EdgeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos selite on jo määritetty
Esimerkki:
builder.add_edge("rel").from_table("AccessLogs").with_label("ACCESSED")
edge_label
Huomautus
Käytä with_label() sen sijaan. Tämä menetelmä poistetaan tulevassa versiossa.
def edge_label(label: str) -> EdgeBuilderSourceSet
Määritä reunan suhteen tyyppi/selite (oletusarvo on alias, jos sitä ei kutsuta).
Parametrit:
-
label(str): Reunan selite
Palauttaa:
-
EdgeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos selite on jo määritetty
Esimerkki:
builder.add_edge("acc").from_table("AccessLogs").edge_label("accessed")
source
def source(id_column: str, node_type: str) -> EdgeBuilderSourceSet
Määritä lähdesolmu, jossa on tunnussarake ja -otsikko.
Parametrit:
-
id_column(str): Lähdesolmun sisältävän sarakkeen nimi -
node_type(str): Lähdesolmun otsikko
Palauttaa:
-
EdgeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos lähde on jo määritetty
Esimerkki:
builder.add_edge("accessed").from_table("AccessLogs") \
.source(id_column="user_id", node_type="user")
target
def target(id_column: str, node_type: str) -> EdgeBuilderSourceSet
Määritä kohdesolmu tunnussarakkeella ja -selitteellä.
Parametrit:
-
id_column(str): Kohdesolmun sisältävän sarakkeen nimi -
node_type(str): Kohdesolmun otsikko
Palauttaa:
-
EdgeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos tavoite on jo määritetty
Esimerkki:
builder.add_edge("accessed").from_table("AccessLogs") \
.source(id_column="user_id", node_type="user") \
.target(id_column="device_id", node_type="device")
with_time_range
def with_time_range(
time_column: str,
start_time: Optional[Union[str, datetime]] = None,
end_time: Optional[Union[str, datetime]] = None,
lookback_hours: Optional[float] = None
) -> EdgeBuilderSourceSet
Käytä aika-alueen suodatusta Edgen tietolähteessä.
Parametrit:
-
time_column(str): Aikaleimatietoja sisältävä sarakkeen nimi (pakollinen) -
start_time(str tai datetime, optional): Aloituspäivämäärä -
end_time(str tai datetime, optional): lopetuspäivämäärä -
lookback_hours(liukuluku, valinnainen): Taaksepäin katsomiseen tunnit tästä alkaen
Palauttaa:
-
EdgeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos aikasaraketta ei löydy lähderakenteesta
Esimerkki:
builder.add_edge("accessed").from_table("AccessLogs") \
.with_time_range(time_column="TimeGenerated", lookback_hours=48)
with_columns
def with_columns(
*columns: str,
key: str,
display: str
) -> EdgeBuilderSourceSet
Määritä sarakkeet vaaditulla avaimella ja näyttömäärityksellä.
Parametrit:
-
*columns(str): Sisällytettävät sarakkeiden nimet (vähintään yksi pakollinen) -
key(str): Avaimeksi merkittävän sarakkeen nimi (pakollinen, on oltava sarakkeissa) -
display(str): Sarakkeen nimi, joka merkitään näyttöarvoksi (pakollinen, on oltava sarakkeissa)
Palauttaa:
-
EdgeBuilderSourceSet: Itse menetelmän ketjuttamiseen
Herättää:
-
ValueError: Jos vahvistus epäonnistuu
Esimerkki:
builder.add_edge("accessed").from_table("AccessLogs") \
.source(id_column="user_id", node_type="user") \
.target(id_column="device_id", node_type="device") \
.with_columns("id", "location", "status", key="id", display="location")
add_node
def add_node(alias: str) -> NodeBuilderInitial
Viimeistele tämä reuna ja ala rakentaa solmua.
Parametrit:
-
alias(str): Uuden solmun tunnus
Palauttaa:
-
NodeBuilderInitial: Uusi solmun muodostin
add_edge
def add_edge(alias: str) -> EdgeBuilderInitial
Viimeistele tämä reuna ja ala rakentaa toista reunaa.
Parametrit:
-
alias(str): Uuden reunan alias
Palauttaa:
-
EdgeBuilderInitial: Uusi reunan muodostin
Esimerkki:
builder.add_edge("accessed").from_table("AccessLogs") \
.source(id_column="user_id", node_type="user") \
.target(id_column="device_id", node_type="device") \
.with_columns("id", "location", key="id", display="location") \
.add_edge("connected_to")
done
def done() -> GraphSpec
Viimeistele tämä reuna ja viimeistele kaavion määritys.
Palauttaa:
-
GraphSpec: Koko kaavion määritys
Rakenneluokat
GraphDefinitionReference
Viittaus kaavion määritelmään, jossa on nimi ja versio.
Rakentaja
GraphDefinitionReference(
fully_qualified_name: str,
version: str
)
Parametrit:
-
fully_qualified_name(str): Viitatun kaavion täydellinen nimi -
version(str): Viitatun kaavion versio
Herättää:
-
ValueError: Jos fully_qualified_name tai versio on tyhjä
Menetelmiä
to_dict
def to_dict() -> Dict[str, Any]
Sarjoitetaan sanastoon.
Palauttaa:
-
Dict[str, Any]: Sarjoitettu viittaus
Ominaisuus
Ominaisuusmääritelmä ja tyypin turvallinen liittymä.
Rakentaja
Property(
name: str,
property_type: PropertyType,
is_non_null: bool = False,
description: str = "",
is_key: bool = False,
is_display_value: bool = False,
is_internal: bool = False
)
Parametrit:
-
name(str): Ominaisuuden nimi -
property_type(PropertyType): Ominaisuuden tietotyyppi -
is_non_null(totuusarvo, oletus=Epätosi): Onko ominaisuus pakollinen -
description(str, default=""): Ominaisuuden kuvaus -
is_key(totuusarvo, oletus=Epätosi): Onko ominaisuus avain -
is_display_value(totuusarvo, oletusarvo=Epätosi): Onko ominaisuus näyttöarvo -
is_internal(totuusarvo, oletus=Epätosi): Onko ominaisuus sisäinen
Herättää:
-
ValueError: Jos nimi on tyhjä tai vahvistus epäonnistuu
Luokan menetelmät
key
@classmethod
Property.key(
name: str,
property_type: PropertyType,
description: str = "",
is_non_null: bool = False
) -> Property
Luo avainominaisuus yleisillä asetuksilla (is_key=Tosi, is_display_value=Tosi).
display
@classmethod
Property.display(
name: str,
property_type: PropertyType,
description: str = "",
is_non_null: bool = False
) -> Property
Luo näyttöarvo-ominaisuus (is_display_value=Tosi).
Menetelmiä
describe
def describe(text: str) -> Property
Lisää kuvaus sujuvasti.
Parametrit:
-
text(str): Kuvausteksti
Palauttaa:
-
Property: Itse menetelmän ketjuttamiseen
to_dict
def to_dict() -> Dict[str, Any]
Sarjoita ominaisuus sanastoon @-etuliitteillä varustettujen huomautusavaimien avulla.
Palauttaa:
-
Dict[str, Any]: Sarjoitettu ominaisuus
to_gql
def to_gql() -> str
Luo GQL-ominaisuusmääritys.
Palauttaa:
-
str: GQL-merkkijonoesitys
EdgeNode
Reunamäärityksissä käytettävä solmuviittaus.
Rakentaja
EdgeNode(
alias: Optional[str] = None,
labels: List[str] = []
)
Parametrit:
-
alias(str, valinnainen): Solmun alias (aseta ensimmäiseksi selitteeksi, jos ei mitään tai tyhjä) -
labels(Luettelo[str]): solmun selitteet (vähintään yksi pakollinen)
Herättää:
-
ValueError: Jos otsikkoluettelo on tyhjä -
TypeError: Jos otsikot eivät ole merkkijonoja
Automaattinen mutaatio:
- Jos alias on Ei mitään tai tyhjä, se on määritetty ensimmäiseksi selitteeksi
Menetelmiä
to_dict
def to_dict() -> Dict[str, Any]
Sarjoitetaan sanastoon.
Palauttaa:
-
Dict[str, Any]: Sarjoitetun reunan solmuviittaus
Solmu
Solmun määritys tyypin kanssa turvallinen -käyttöliittymä.
Rakentaja
Node(
alias: str = "",
labels: List[str] = [],
implies_labels: List[str] = [],
properties: List[Property] = [],
description: str = "",
entity_group: str = "",
dynamic_labels: bool = False,
abstract_edge_aliases: bool = False
)
Parametrit:
-
alias(str, default=""): Solmun alias (määritä automaattisesti ensimmäiseksi selitteeksi, jos se on tyhjä) -
labels(Luettelo[str]): solmun selitteet (vähintään yksi pakollinen) -
implies_labels(List[str], default=[]): Implisiittiset selitteet -
properties(List[Property], default=[]): Solmun ominaisuudet -
description(str, default=""): solmun kuvaus -
entity_group(str, default=""): Entiteettiryhmän nimi -
dynamic_labels(totuusarvo, oletus=Epätosi): Onko solmussa dynaamisia otsikoita -
abstract_edge_aliases(totuusarvo, oletus=epätosi): Käyttääkö solmu abstrakteja reuna-aliaksia
Herättää:
-
ValueError: Jos vahvistus epäonnistuu (ei otsikoita, ei avainominaisuutta, ei näyttöominaisuutta jne.)
Automaattinen mutaatio:
- Jos alias on tyhjä, sen arvoksi määritetään ensimmäinen selite
- Jos entity_group on tyhjä, se on määritetty ensisijaiseksi selitteeksi
Menetelmiä
get_primary_label
def get_primary_label() -> Optional[str]
Hae ensisijainen (ensimmäinen) otsikko.
Palauttaa:
-
strtaiNone: Ensisijainen selite tai Ei mitään, jos selitteitä ei ole
get_entity_group_name
def get_entity_group_name() -> str
Hae entiteettiryhmän nimi tai varatieto ensisijaiseen selitteeseen.
Palauttaa:
-
str: Entiteettiryhmän nimi
get_primary_key_property_name
def get_primary_key_property_name() -> Optional[str]
Hanki perusavainominaisuuden nimi.
Palauttaa:
-
strtaiNone: Perusavaimen ominaisuuden nimi
get_properties
def get_properties() -> Dict[str, Property]
Hanki ominaisuudet sanastona, jonka käyttö on helppoa.
Palauttaa:
-
Dict[str, Property]: Nimen mukaan avaimiavat ominaisuudet
get_property
def get_property(name: str) -> Optional[Property]
Hae tietty ominaisuus nimen mukaan.
Parametrit:
-
name(str): Ominaisuuden nimi
Palauttaa:
-
PropertytaiNone: Ominaisuus, jos löytyy
add_property
def add_property(prop: Property) -> None
Lisää ominaisuus tähän solmuun.
Parametrit:
-
prop(Ominaisuus): Lisättävä ominaisuus
Herättää:
-
ValueError: Jos ominaisuuden nimi on jo olemassa
is_dynamically_labeled
def is_dynamically_labeled() -> bool
Tarkista, onko solmussa dynaamisia otsikoita.
Palauttaa:
-
bool: Tosi, jos dynaamiset selitteet ovat käytössä
is_abstract_edge_node_aliases
def is_abstract_edge_node_aliases() -> bool
Tarkista, käyttääkö solmu abstraktia reunasolmun aliaksia.
Palauttaa:
-
bool: Tosi, jos abstraktit reuna-aliakset ovat käytössä
describe
def describe(text: str) -> Node
Lisää kuvaus sujuvasti.
Parametrit:
-
text(str): Kuvausteksti
Palauttaa:
-
Node: Itse menetelmän ketjuttamiseen
to_dict
def to_dict() -> Dict[str, Any]
Sarjoita solmu sanastoon.
Palauttaa:
-
Dict[str, Any]: Sarjoitettu solmu
to_gql
def to_gql() -> str
Luo GQL-solmun määritys.
Palauttaa:
-
str: GQL-merkkijonoesitys
Herättää:
-
ValueError: Jos solmussa ei ole GQL:n pakollisia kenttiä
Luokan menetelmät
create
@classmethod
Node.create(
alias: str,
labels: List[str],
properties: List[Property],
description: str = "",
entity_group: str = "",
**kwargs
) -> Node
Luo solmu, joka sisältää kaikki pakolliset kentät.
Parametrit:
-
alias(str): solmun tunnus -
labels(Luettelo[str]): solmun selitteet -
properties(Luettelo[Ominaisuus]): solmun ominaisuudet -
description(str, default=""): solmun kuvaus -
entity_group(str, default=""): Entiteettiryhmän nimi
Palauttaa:
-
Node: Uusi solmuesiintymä
Reuna
Edge-määritys ja tyypin turvallinen käyttöliittymä.
Rakentaja
Edge(
relationship_type: str,
source_node_label: str,
target_node_label: str,
direction: EdgeDirection = EdgeDirection.DIRECTED_RIGHT,
properties: List[Property] = [],
description: str = "",
entity_group: str = "",
dynamic_type: bool = False
)
Parametrit:
-
relationship_type(str): Reunan suhdetyyppi (esimerkiksi "SEURAA", "OWNS") -
source_node_label(str): Lähdesolmun otsikko -
target_node_label(str): Kohdesolmun otsikko -
direction(EdgeDirection, default=DIRECTED_RIGHT): Reunan suunta -
properties(Luettelo[Ominaisuus], oletus=[]): Edgen ominaisuudet -
description(str, default=""): Edgen kuvaus -
entity_group(str, default=""): Entiteettiryhmän nimi -
dynamic_type(totuusarvo, oletus=Epätosi): Onko Edgessä dynaaminen tyyppi
Herättää:
-
ValueError: Jos vahvistus epäonnistuu
Automaattinen mutaatio:
-
labelsluettelo täytetään automaattisesti[relationship_type] - Jos entity_group on tyhjä, sen arvoksi määritetään relationship_type
Ominaisuudet
edge_type
def edge_type() -> str
relationship_type yhteensopivuuden aiempi tunnus.
Palauttaa:
-
str: Suhdetyyppi
Menetelmiä
get_entity_group_name
def get_entity_group_name() -> str
Hae entiteettiryhmän nimi tai varayhteys suhdetyyppiin.
Palauttaa:
-
str: Entiteettiryhmän nimi
is_dynamic_type
def is_dynamic_type() -> bool
Tarkista, onko Edgessä dynaaminen tyyppi.
Palauttaa:
-
bool: Tosi, jos dynaaminen tyyppi
add_property
def add_property(edge_property: Property) -> None
Lisää ominaisuus tähän reunaan.
Parametrit:
-
edge_property(Ominaisuus): Lisättävä ominaisuus
describe
def describe(text: str) -> Edge
Lisää kuvaus sujuvasti.
Parametrit:
-
text(str): Kuvausteksti
Palauttaa:
-
Edge: Itse menetelmän ketjuttamiseen
to_dict
def to_dict() -> Dict[str, Any]
Sarjoittaa reuna sanastoon.
Palauttaa:
-
Dict[str, Any]: Sarjoitettu reuna
to_gql
def to_gql() -> str
Luo GQL-reunamääritys.
Palauttaa:
-
str: GQL-merkkijonoesitys
Luokan menetelmät
create
Edge.create(
relationship_type: str,
source_node_label: str,
target_node_label: str,
properties: List[Property] = None,
description: str = "",
entity_group: str = "",
**kwargs
) -> Edge
Luo reuna, joka sisältää kaikki pakolliset kentät.
Parametrit:
-
relationship_type(str): Edge-suhdetyyppi -
source_node_label(str): Lähdesolmun otsikko -
target_node_label(str): Kohdesolmun otsikko -
properties(List[Property], optional): Edge-ominaisuudet -
description(str, default=""): Edgen kuvaus -
entity_group(str, default=""): Entiteettiryhmän nimi
Palauttaa:
-
Edge: Uusi Edge-esiintymä
GraphSchema
Graph-rakenteen määritys ja tyyppiturvallinen liittymä.
Rakentaja
GraphSchema(
name: str,
nodes: List[Node] = [],
edges: List[Edge] = [],
base_graphs: List[GraphSchema] = [],
description: str = "",
version: str = "1.0",
fully_qualified_name: str = "",
namespace: str = ""
)
Parametrit:
-
name(str): Graph-rakenteen nimi -
nodes(List[Node], default=[]): Solmumääritykset -
edges(List[Edge], default=[]): Edge-määritykset -
base_graphs(List[GraphSchema], default=[]): Peruskaaviorakenteet -
description(str, default=""): Rakenteen kuvaus -
version(str, default="1.0"): Rakenneversio -
fully_qualified_name(str, default=""): Täydellinen nimi -
namespace(str, default=""): Nimitila
Herättää:
-
ValueError: Jos vahvistus epäonnistuu (aliasten kaksoiskappaleet, reunat viittaavat solmuihin, joita ei ole)
Menetelmiä
get_fully_qualified_name
def get_fully_qualified_name() -> str
Hae täydellinen nimi.
Palauttaa:
-
str: Täydellinen nimi
get_namespace
def get_namespace() -> str
Hae nimitila täydellisestä nimestä tai palauta oletus.
Palauttaa:
-
str:Namespace
get_version
def get_version() -> str
Hanki versio.
Palauttaa:
-
str: Versiomerkkijono
get_node
def get_node(label_or_alias: str) -> Optional[Node]
Hae solmu selitteen tai aliaksen mukaan.
Parametrit:
-
label_or_alias(str): solmun otsikko tai tunnus
Palauttaa:
-
NodetaiNone: Solmu, jos löytyy
get_edge
def get_edge(name: str) -> Optional[Edge]
Hae reuna nimen tai tyypin mukaan.
Parametrit:
-
name(str): Edge-suhdetyyppi
Palauttaa:
-
EdgetaiNone: Edge, jos löytyi
add_node
def add_node(node: Node) -> None
Lisää solmu tähän kaavioon.
Parametrit:
-
node(solmu): lisättävä solmu
Herättää:
-
ValueError: Jos solmun alias on kaksoiskappale
add_edge
def add_edge(edge: Edge) -> None
Lisää reuna tähän kaavioon.
Parametrit:
-
edge(Reuna): Lisättävä reuna
Herättää:
-
ValueError: Jos reunan tyyppi on kaksoiskappale
include_graph
def include_graph(fully_qualified_name: str, version: str) -> GraphSchema
Lisää kaavion sisällytys (sujuva ohjelmointirajapinta).
Parametrit:
-
fully_qualified_name(str): Sisällytettävän kaavion täydellinen nimi -
version(str): Sisällytettävä kaavion versio
Palauttaa:
-
GraphSchema: Itse menetelmän ketjuttamiseen
get_included_graph_references
def get_included_graph_references() -> List[GraphDefinitionReference]
Hae luettelo sisällytetyistä kaavioviittauksista.
Palauttaa:
-
List[GraphDefinitionReference]: Luettelo kaavion määritysviittauksista
describe
def describe(text: str) -> GraphSchema
Lisää kuvaus sujuvasti.
Parametrit:
-
text(str): Kuvausteksti
Palauttaa:
-
GraphSchema: Itse menetelmän ketjuttamiseen
to_dict
def to_dict() -> Dict[str, Any]
Sarjoita rakenne sanastoon.
Palauttaa:
-
Dict[str, Any]: Sarjoitettu rakenne
to_json
def to_json(indent: int = 2) -> str
Luo JSON-esitys.
Parametrit:
-
indent(kokonaisarvo, oletus=2): JSON-sisennystaso
Palauttaa:
-
str: JSON-merkkijono
to_gql
def to_gql() -> str
Luo GQL-rakennemääritys.
Palauttaa:
-
str: GQL-merkkijonoesitys
Luokan menetelmät
create
@classmethod
GraphSchema.create(
name: str,
nodes: List[Node] = None,
edges: List[Edge] = None,
description: str = "",
version: str = "1.0",
**kwargs
) -> GraphSchema
Luo kaavion rakenne, joka sisältää kaikki pakolliset kentät.
Parametrit:
-
name(str): Graph-rakenteen nimi -
nodes(List[Node], valinnainen): solmumääritykset -
edges(List[Edge], valinnainen): Edge-määritykset -
description(str, default=""): Rakenteen kuvaus -
version(str, default="1.0"): Rakenneversio
Palauttaa:
-
GraphSchema: Uusi kaavion rakenteen esiintymä
Kyselyn syöteluokat
Tietoluokat, jotka edustavat esimääritettyjen kaaviokyselyiden syöteparametreja.
Huomautus
Objektien Graph siirtäminen QueryInput suoraan kyselymenetelmiin on vanhentunut, ja se poistetaan tulevissa versioissa.
Käytä sen sijaan avainsanaargumentteja. Menetelmät Graph (reachability, , blast_radiusk_hop, centrality, ranked) hyväksyvät kaikki parametrit avainsanaargumentteina ja luovat syöteobjektit sisäisesti. Nämä luokat pysyvät toistaiseksi koodikannassa, mutta niitä ei tule käyttää uudessa koodissa.
QueryInputBase
Kaikkien kyselyn syöteparametrien perusluokka.
Menetelmiä
to_json_payload
def to_json_payload() -> Dict[str, Any]
Muunna syöteparametrit sanastoksi ohjelmointirajapinnan lähettämistä varten.
Palauttaa:
-
Dict[str, Any]: Syöteparametrien sanastoesitys
validate
def validate() -> None
Vahvista syöteparametrit.
Herättää:
-
ValueError: Jos syöteparametrit ovat virheelliset
ReachabilityQueryInput
Lähde- ja kohdesolmujen välisen tavoitettavuuskyselyn syöteparametrit.
Periytyvät QueryInputBasekohteesta ReachabilityQueryInputBase .
Kentät
| Kenttä | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
source_property_value |
str |
(pakollinen) | Lähdeominaisuutta vastaava arvo |
target_property_value |
str |
(pakollinen) | Kohdeominaisuutta vastaava arvo |
source_property |
Optional[str] |
None |
Lähdesolmujen suodattamiseen käytetyn ominaisuuden nimi |
participating_source_node_labels |
Optional[List[str]] |
None |
Lähdesolmuina pidettävät solmun otsikot |
target_property |
Optional[str] |
None |
Kohdesolmujen suodattamiseen käytetyn ominaisuuden nimi |
participating_target_node_labels |
Optional[List[str]] |
None |
Kohdesolmuina pidettävät solmukoosteet |
participating_edge_labels |
Optional[List[str]] |
None |
Reunojen selitteet, jotka kulkevat polussa |
is_directional |
Optional[bool] |
True |
Onko reunat suunta |
min_hop_count |
Optional[int] |
1 |
Polun hyppyjen vähimmäismäärä |
max_hop_count |
Optional[int] |
4 |
Polun hyppyjen enimmäismäärä |
shortest_path |
Optional[bool] |
False |
Vain lyhimmän polun löytäminen |
max_results |
Optional[int] |
500 |
Palautettavien tulosten enimmäismäärä |
Validation:
-
source_property_valueon pakollinen -
target_property_valueon pakollinen
Esimerkki:
# Preferred: keyword arguments (no import needed)
result = graph.reachability(
source_property="UserId",
source_property_value="user123",
target_property="DeviceId",
target_property_value="device456",
participating_edge_labels=["accessed", "connected_to"],
shortest_path=True
)
# DEPRECATED — will be removed in a future version. Use keyword arguments above.
from sentinel_graph.builders.query_input import ReachabilityQueryInput
result = graph.reachability(query_input=ReachabilityQueryInput(
source_property_value="user123",
target_property_value="device456"
))
K_HopQueryInput
Tietyn lähdesolmun k-hop-kyselyn syöteparametrit.
Perii kohteesta ReachabilityQueryInputBase.
Perii kaikki kentät kohteesta ReachabilityQueryInput.
Validation:
- Vähintään yksi tai
source_property_valuetarget_property_valueon annettava
Esimerkki:
# Preferred: keyword arguments
result = graph.k_hop(
source_property_value="user123",
max_hop_count=3,
participating_edge_labels=["accessed"]
)
# DEPRECATED — will be removed in a future version. Use keyword arguments above.
from sentinel_graph.builders.query_input import K_HopQueryInput
result = graph.k_hop(query_input=K_HopQueryInput(source_property_value="user123"))
BlastRadiusQueryInput
Syöteparametrit räjähdyssädekyselylle lähteestä kohdesolmuihin.
Perii kohteesta ReachabilityQueryInputBase.
Perii kaikki kentät kohteesta ReachabilityQueryInputja sisältää seuraavat pakolliset kentät:
| Kenttä | Kirjoita | Pakollinen | Kuvaus |
|---|---|---|---|
source_property_value |
str |
Kyllä | Lähdesolmun tunnistamiseen määritetty arvo |
target_property_value |
str |
Kyllä | Kohdesolmun tunnistamiseen määritetty arvo |
Validation:
-
source_property_valueon pakollinen -
target_property_valueon pakollinen
Esimerkki:
# Preferred: keyword arguments
result = graph.blast_radius(
source_property_value="user123",
target_property_value="device456",
participating_edge_labels=["accessed", "connected_to"]
)
# DEPRECATED — will be removed in a future version. Use keyword arguments above.
from sentinel_graph.builders.query_input import BlastRadiusQueryInput
result = graph.blast_radius(query_input=BlastRadiusQueryInput(
source_property_value="user123",
target_property_value="device456"
))
CentralityQueryInput
Keskisyysanalyysikyselyn syöteparametrit.
Perii kohteesta QueryInputBase.
CentralityType-luettelointi
| Arvo | Kuvaus |
|---|---|
CentralityType.Node |
Laskentasolmun keskisyys |
CentralityType.Edge |
Laske reunan keskiosa |
Kentät
| Kenttä | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
threshold |
Optional[int] |
3 |
Huomioon otettava keskitetty vähimmäispistemäärä |
centrality_type |
CentralityType |
CentralityType.Node |
Laskettavan keskitetyn kohteen tyyppi |
max_paths |
Optional[int] |
1000000 |
Huomioon otettavat polut enintään (0 = kaikki) |
participating_source_node_labels |
Optional[List[str]] |
None |
Lähdesolmun otsikot |
participating_target_node_labels |
Optional[List[str]] |
None |
Kohdesolmun otsikot |
participating_edge_labels |
Optional[List[str]] |
None |
Läpikäytävät reunaotsikot |
is_directional |
Optional[bool] |
True |
Ovatko reunat suuntaisia |
min_hop_count |
Optional[int] |
1 |
Vähimmäissiirtymät |
max_hop_count |
Optional[int] |
4 |
Hyppyjen enimmäismäärä |
shortest_path |
Optional[bool] |
False |
Vain lyhyimmät polut |
max_results |
Optional[int] |
500 |
Tulosten enimmäismäärä |
Esimerkki:
# Preferred: keyword arguments (works for all centrality types)
result = graph.centrality(
centrality_type=CentralityType.Edge, # or CentralityType.Node (default)
participating_edge_labels=["accessed", "connected_to"],
threshold=5,
max_results=100
)
# DEPRECATED — will be removed in a future version. Use keyword arguments above.
from sentinel_graph.builders.query_input import CentralityQueryInput, CentralityType
result = graph.centrality(query_input=CentralityQueryInput(
centrality_type=CentralityType.Edge,
participating_edge_labels=["accessed"]
))
RankedQueryInput
Luokitellun analyysikyselyn syöteparametrit.
Perii kohteesta QueryInputBase.
Kentät
| Kenttä | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
rank_property_name |
str |
(pakollinen) | Osuvuuspoluissa käytettävän ominaisuuden nimi |
threshold |
Optional[int] |
0 |
Palauta vain polut, joiden painoarvo on suurempi kuin tämä arvo |
max_paths |
Optional[int] |
1000000 |
Huomioon otettavat polut enintään (0 = kaikki) |
decay_factor |
Optional[float] |
1 |
Kuinka paljon kukin kaavion vaihe vähentää sijoitusta (2 = puolittaa jokaisen vaiheen) |
is_directional |
Optional[bool] |
True |
Ovatko reunat suuntaisia |
min_hop_count |
Optional[int] |
1 |
Vähimmäissiirtymät |
max_hop_count |
Optional[int] |
4 |
Hyppyjen enimmäismäärä |
shortest_path |
Optional[bool] |
False |
Vain lyhyimmät polut |
max_results |
Optional[int] |
500 |
Tulosten enimmäismäärä |
Esimerkki:
# Preferred: keyword arguments
result = graph.ranked(
rank_property_name="risk_score",
threshold=5,
decay_factor=2,
max_results=50
)
# DEPRECATED — will be removed in a future version. Use keyword arguments above.
from sentinel_graph.builders.query_input import RankedQueryInput
result = graph.ranked(query_input=RankedQueryInput(
rank_property_name="risk_score",
threshold=5
))
Kyselyn tulokset
QueryResult
Tulos kaaviokyselystä, jossa DataFrame-käyttöoikeus on laiska.
Rakentaja
QueryResult(raw_response: Dict[str, Any], graph: Graph)
Parametrit:
-
raw_response(Dict[str, Any]): API-raakavastaussanasto -
graph(Kaavio): Viittaus pääkaavioon
Huomautus: Yleensä luoja: , ei Graph.query()suoraan luotu.
Menetelmiä
to_dataframe
def to_dataframe() -> DataFrame
Muuntaa kyselyn tuloksen Spark DataFrame -muotoon.
Palauttaa:
-
DataFrame: Kyselyn tulos Spark DataFrame -muodossa
Herättää:
-
ValueError: Jos muunnos epäonnistuu
Esimerkki:
result = graph.query("MATCH (u:user) RETURN u")
df = result.to_dataframe()
df.show()
get_raw_data
def get_raw_data() -> Dict[str, Any]
Hae RawData-osa vastauksesta.
Palauttaa:
-
Dict[str, Any]: Sanasto, jossa on raakametatiedot, tai tyhjä sanelu, jos sitä ei ole
Esimerkki:
result = graph.query("MATCH (u:user) RETURN u")
metadata = result.get_raw_data()
show
def show(format: str = "visual") -> None
Näytä kyselyn tulos eri muodoissa.
Parametrit:
-
format(str, default="visual"): Tulostemuoto-
"table": Täydet DataFrame-taulukot (kaikki sarakkeet) -
"visual": Vuorovaikutteinen kaaviovisualisointi VSC-laajennuksella -
"all": Näytä kaikki muodot
-
Herättää:
-
ValueError: Jos muoto ei ole yksi tuetuista arvoista
Esimerkki:
result = graph.query("MATCH (u:user)-[r:accessed]->(d:device) RETURN u, r, d")
result.show() # Visual by default
result.show(format="table") # Table format
Täydellinen esimerkki (suositus – v0.3+)
# 0. Imports
from sentinel_graph import GraphSpecBuilder, Graph
# 1. Define graph specification
spec = (
GraphSpecBuilder.start()
.add_node("User")
.from_dataframe(user_nodes) # native Spark DF from groupBy → no .df
.with_columns(
"UserId", "UserDisplayName", "UserPrincipalName",
"DistinctLocationCount", "DistinctIPCount", "DistinctAppCount",
"TotalSignIns", "RiskySignInCount", "ImpossibleTravelFlag",
key="UserId", display="UserDisplayName"
)
.add_node("IPAddress")
.from_dataframe(ip_nodes) # native Spark DF from groupBy → no .df
.with_columns(
"IPAddress", "UniqueUsers", "UniqueLocations",
"SignInCount", "RiskySignInCount", "SharedIPFlag",
key="IPAddress", display="IPAddress"
)
.add_edge("UsedIP")
.from_dataframe(edge_used_ip) # native Spark DF → no .df
.source(id_column="UserId", node_type="User")
.target(id_column="IPAddress", node_type="IPAddress")
.with_columns(
"SignInCount", "FirstSeen", "LastSeen", "EdgeKey",
key="EdgeKey", display="EdgeKey"
)
.done()
)
# 2. Inspect schema before building (GraphSpec owns this)
spec.show_schema()
# 3. Build: prepares data + publishes graph → returns Graph
graph = Graph.build(spec)
print(f"Build status: {graph.build_status.status}")
# 4. Query the graph (query lives on Graph)
result = graph.query("MATCH (u:user)-[used:UsedIP]->(ip:IPAddress) RETURN * LIMIT 100")
result.show()
# 5. Access data via delegation
df = result.to_dataframe()
df.printSchema()
# 6. Graph algorithms
gf = graph.to_graphframe()
pagerank_result = gf.pageRank(resetProbability=0.15, maxIter=10)
pagerank_result.vertices.select("id", "pagerank").show()
# 7. Fetch an existing graph (no spec needed)
graph = Graph.get("my_existing_graph", context=context)
graph.query("MATCH (n) RETURN n LIMIT 10").show()
Suunnittelumalleja koskevat muistiinpanot
Fluent-ohjelmointirajapinta
Kaikki koontiversiot tukevat menetelmäketjua luettavissa ja deklaratiivisissa kaaviomäärityksissä:
builder.add_node("user") \
.from_table("Users") \
.with_columns("id", "name", key="id", display="name") \
.add_edge("follows")
Union-rakenteet
Useita reunoja, joilla on sama alias, yhdistetään automaattisesti yhdistettyjen ominaisuuksien kanssa:
# Both edges use alias "sign_in" - they will be merged into one schema edge
builder.add_edge("sign_in") \
.from_table("AzureSignins") \
.source(id_column="UserId", node_type="AZuser") \
.target(id_column="DeviceId", node_type="device")
builder.add_edge("sign_in") \
.from_table("EntraSignins") \
.source(id_column="UserId", node_type="EntraUser") \
.target(id_column="DeviceId", node_type="device")
Automaattinen määritys
Monilla kentillä on järkevät oletusarvot:
- Solmujen/reunan otsikoiden oletusarvo on niiden aliakset
- Ominaisuudet määritetään automaattisesti lähderakenteista
- Entiteettiryhmät käyttävät oletusarvoisesti ensisijaisia otsikoita/suhdetyyppejä
Laiska arviointi
DataFrames ja resurssit ladataan laiskusti ja tallennetaan välimuistiin:
-
graph_spec.nodesjagraph_spec.edgesladataan ensimmäisellä käyttöoudella - Kyselytulokset luovat DataFrames-kehykset vain pyydettäessä