Data Science

Ambiente HANA XSA: Graph Pattern Matching

Il pattern matching è un tipo di interrogazione del grafo che aiuta a comprendere le relazioni, a riconoscere i pattern e a trovare i sottografi che corrispondono al pattern dato. Gli schemi sono una combinazione di bordi e nodi. Un nodo è una destinazione o una fonte di un bordo. Ad esempio, puoi prendere un treno SBB (attributo di un bordo) da Berna (vertice) a Zurigo (vertice). Per ampliare il tutto, ci sono molte destinazioni, molti percorsi e diversi mezzi di trasporto. Spesso è necessario eseguire calcoli complessi per trovare tutti i modelli per la domanda posta. Questo blog offre una panoramica delle possibilità di eseguire la corrispondenza dei modelli con i metodi nativi di HANA, come la vista di calcolo. In questo blog vengono descritti in dettaglio sia un metodo visivo che un metodo di codice per la corrispondenza dei modelli.

Nell'ambiente di modellazione avanzata HANA XS, i nodi grafo possono essere utilizzati per sfruttare gli algoritmi grafo avanzati. Come primo passo di una vista di calcolo, questo tipo di nodo può essere utilizzato per estendere le sue capacità di base. A questo scopo sono disponibili funzioni integrate come il percorso più breve, il vicinato, le componenti fortemente connesse e la corrispondenza dei modelli.

La corrispondenza dei modelli può essere effettuata sia con l'Editor Visuale che con Cypher Code. Ricorda che in entrambi i casi deve essere disponibile un'area di lavoro del grafico nel contenitore HDI specificato.

Nodi del grafico nelle viste di calcolo per il confronto dei modelli

L'editor grafico semplifica la progettazione di grafici. In questo caso, tutti i punti d'angolo e i bordi possono essere definiti in un ambiente grafico. Anche i filtri dei punti d'angolo o dei bordi possono essere definiti in modo simile. A questo scopo, è possibile utilizzare un parametro di input o un valore fisso. Infine, tutte le colonne di output necessarie possono essere selezionate e assegnate in questo ambiente.

Se aggiungi un nodo del diagramma in una vista di calcolo, questo deve essere il nodo iniziale. Non è possibile utilizzare alcuna operazione, come aggregazioni o proiezioni, prima di esso. Puoi aggiungere tutti i nodi e i bordi necessari. Una volta fatto questo, è possibile utilizzare i filtri. Nell'esempio seguente, è stato definito un filtro aggiuntivo sugli attributi di un bordo E1 o di un vertice V2 utilizzando un parametro di input dell'utente finale o alcuni valori fissi. Ad esempio, è possibile filtrare alcune entità. Tutte le colonne di output richieste possono essere selezionate nella scheda Mapping.

L'esempio seguente mostra la ricerca di un sottografo con tre nodi e due bordi che soddisfa i seguenti criteri.

1. uno dei vertici è la destinazione dei due bordi (E1 e E2)
2. uno dei bordi ha il valore dell'attributo SBB e l'altro Swiss Air Lines (SWISS)

In sostanza, stiamo cercando un obiettivo che possa essere raggiunto da SWISS e SBB. Una volta definita la logica di base, questa può essere applicata a grandi quantità di dati per trovare tutti i sottografi che soddisfano i criteri definiti.

Figura 2 Corrispondenza grafica dei modelli

Codice cifrato per la corrispondenza dei modelli

I grafici possono anche essere interrogati e aggiornati utilizzando il linguaggio Cypher. Cypher è un linguaggio dichiarativo, quindi il suo principale vantaggio è la semplicità. Cypher consente di effettuare query complesse al database e non richiede alcuna configurazione aggiuntiva del backend. Un altro vantaggio di Cypher è la sua natura open source. Dalla fine del 2015 è stato adattato da molti fornitori di DB. Uno di questi è SAP con il suo noto database HANA. A questo scopo è possibile utilizzare un nodo grafico integrato per le viste di calcolo, in cui sono disponibili sia un editor grafico che un editor di pattern Cypher.

La sintassi consiste in due clausole. Una clausola MATCH e una RETURN. In primo luogo, vengono identificati tutti i punti e i percorsi angolari. Inoltre, può essere estesa con le condizioni "WHERE" opzionali simili a quelle di SQL. In questo contesto, ", =,<,>, <>,>=, <= " possono essere utilizzati per i confronti e le parole chiave "AND", "OR" e "NOT" per gli operatori booleani.

Infine, una clausola RETURN specifica tutte le colonne di output rilevanti per il risultato. L'esempio seguente illustra lo stesso pattern matching eseguito con il "Graphical Pattern Editor".

Vale la pena notare che cypher impone l'unicità dei bordi, anche se i vertici possono essere diversi. Ciò consente una maggiore flessibilità rispetto alla corrispondenza di pattern standard. Come ci si aspetta, la sintassi consiste in vertex-edge-vertex, dove i sottografi sono separati da una virgola, i vertici sono scritti in "()" e i bordi in "[]", come mostrato nell'esempio precedente. Tuttavia, la lunghezza del percorso è limitata a 15.

Una volta impostati tutti i componenti necessari di un'istruzione Cypher, è possibile generare la colonna di uscita come mostrato nell'illustrazione seguente:

Figura 3 Corrispondenza dei modelli con il codice Cypher

A partire da SPS04, la funzione integrata "OPENCYPHER_TABLE" può essere utilizzata direttamente per la corrispondenza dei modelli in un'espressione SQL. In questo caso, è possibile utilizzare la seguente sintassi:

SELECT * FROM OPENCYPHER_TABLE (GRAPH WORKSPACE "SCHEMA". "WORKSPACE_NAME" QUERY ' Espressione Cypher personalizzata ');

Se sei interessato a questo metodo, ti consigliamo anche la SAP HANA Graph Reference Guide.

Vahan Nersesyan

Vahan Nersesyan

Analytics Consultant

Altri articoli getIT

Pronti per Swisscom

Trova il posto di lavoro o il percorso di carriera che fa per te. Dove dare il tuo contributo e crescere professionalmente.

Ciò che tu fai, è ciò che siamo.

Vai ai percorsi di carriera

Vai alle posizioni vacanti cibersicurezza