Data Science

Environnement HANA XSA: Graph Pattern Matching

Le pattern matching est un type d'interrogation de graphes qui aide à comprendre les relations, à reconnaître les modèles et à trouver les sous-graphes qui correspondent au modèle donné. Les modèles sont une combinaison d'arêtes et de nœuds. Un nœud est une destination ou une source d'une arête. Par exemple, tu peux prendre un train CFF (attribut d'une arête) de Berne (sommet) à Zurich (sommet). Maintenant, pour agrandir le tout, il y a beaucoup de destinations, beaucoup d'itinéraires et différents moyens de transport. Il est souvent nécessaire de faire des calculs complexes pour trouver tous les modèles pour la question posée. Ce blog donne un aperçu des possibilités d'effectuer la correspondance des modèles avec des méthodes HANA natives comme une vue de calcul. Ce blog décrit en détail à la fois une méthode visuelle et une méthode de code pour la comparaison de modèles.

Dans l'environnement de modélisation avancée HANA XS, les nœuds de graphique peuvent être utilisés pour profiter des algorithmes de graphique avancés. Comme première étape d'une vue de calcul, ce type de nœuds peut être utilisé pour étendre ses capacités de base. Pour cela, des fonctions intégrées telles que le chemin le plus court, le voisinage, les composants fortement liés et la comparaison de modèles sont disponibles.

Le pattern matching peut être réalisé soit avec l'éditeur visuel, soit avec le code Cypher. Note que dans les deux cas, un espace de travail graphique doit être présent dans le conteneur HDI indiqué.

Nœuds de graphique dans les vues de calcul pour les comparaisons de modèles

L'éditeur graphique permet de concevoir facilement des graphes. Dans ce cas, tous les sommets et arêtes peuvent être définis dans un environnement graphique. De la même manière, il est possible de définir des filtres de sommets ou d'arêtes. Pour cela, il est possible de prendre un paramètre d'entrée ou une valeur fixe. Enfin, toutes les colonnes de sortie nécessaires peuvent être sélectionnées et attribuées dans cet environnement.

Si tu ajoutes un nœud de diagramme dans une vue de calcul, il doit être le nœud initial. Aucune opération, comme les agrégations ou les projections, ne peut être utilisée avant lui. Tu peux ajouter autant de nœuds et d'arêtes que nécessaire. Une fois que cela est fait, des filtres peuvent être utilisés. Dans l'exemple suivant, un filtre supplémentaire a été défini sur les attributs d'une arête E1 ou d'un sommet V2, en utilisant un paramètre d'entrée de l'utilisateur final ou quelques valeurs fixes. Par exemple, certaines entités peuvent être filtrées. Toutes les colonnes de sortie nécessaires peuvent ensuite être sélectionnées dans l'onglet Mapping.

L'exemple suivant illustre la recherche d'un sous-graphe à trois nœuds et deux arêtes qui répond aux critères suivants.

1. l'un des sommets est la destination des deux arêtes (E1 et E2).
2. une des arêtes a la valeur d'attribut CFF et l'autre Swiss Air Lines (SWISS)

En fait, nous cherchons un objectif qui peut être atteint par SWISS et SBB. Une fois la logique de base définie, elle peut être appliquée à de grandes quantités de données afin de trouver tous les sous-graphes qui répondent aux critères définis.

Figure 2 Comparaison graphique de modèles (Pattern Matching)

Code Cypher pour la comparaison de modèles

Les graphes peuvent aussi être interrogés et mis à jour avec le langage Cypher. Cypher est un langage déclaratif, son principal avantage est donc sa simplicité. Cypher permet d'effectuer des requêtes complexes dans la base de données, de sorte qu'aucune configuration supplémentaire du backend n'est nécessaire. Un autre avantage de Cypher est son caractère open source. Depuis fin 2015, il a été adapté par de nombreux fournisseurs de DB. L'un d'entre eux est SAP avec sa célèbre base de données HANA. Pour cela, il est possible d'utiliser un nœud de graphique intégré pour les vues de calcul, dans lequel un éditeur graphique et un éditeur de pattern cypher sont disponibles.

La syntaxe se compose ici de deux clauses. Une clause MATCH et une clause RETURN. Tout d'abord, tous les coins et chemins sont identifiés. De plus, elle peut être étendue avec les conditions optionnelles "WHERE" semblables à SQL. Dans ce contexte, ", =,<,>, <>,>=, <= " peuvent être utilisés pour les comparaisons et les mots clés "AND", "OR" et "NOT" pour les opérateurs booléens.

Enfin, une clause RETURN indique toutes les colonnes de sortie qui sont pertinentes pour le résultat. L'exemple suivant illustre la même correspondance de motifs que celle effectuée avec "l'éditeur de motifs graphiques".

Il convient de noter que cypher force l'unicité des bords, même si les coins peuvent être différents. Cela permet une plus grande flexibilité par rapport à la comparaison de motifs standard. Comme prévu, la syntaxe se compose de vertex-edge-vertex, où les sous-graphes sont séparés par une virgule, les nœuds sont écrits en "()" et les arêtes en "[]", comme le montre l'exemple ci-dessus. La longueur du chemin est cependant limitée à 15.

Une fois que tous les composants nécessaires d'une instruction cypher ont été définis, la colonne de sortie peut être générée comme indiqué dans l'image ci-dessous:

Figure 3 Comparaison de modèles avec le code Cypher

Depuis SPS04, une fonction intégrée "OPENCYPHER_TABLE" peut être utilisée directement pour la comparaison de modèles dans une expression SQL. Dans ce cas, la syntaxe suivante peut être utilisée:

SELECT * FROM OPENCYPHER_TABLE (GRAPH WORKSPACE "SCHEMA". "WORKSPACE_NAME" QUERY ' expression cypher personnalisée ');

De plus, le guide de référence SAP HANA Graph est recommandé si tu t'intéresses à cette méthode.

Vahan Nersesyan

Vahan Nersesyan

Analytics Consultant

Plus d’articles getIT

Prêts pour Swisscom

Trouve le Job ou l’univers professionnel qui te convient. Où tu veux co-créer et évoluer.

Ce qui nous définit, c’est toi.

Vers les univers professionnels

Vers les postes vacants cybersécurité