Git Product home page Git Product logo

it-novum-webinar_112022's Introduction

it-novum Webinar 24. November 2022.

Demo Daten und Skripte vom IT Novum Seminar - Graph-Datenbanken: So decken Sie neue Zusammenhänge auf

In diesem Teil des Webinars haben wir aufgezeigt, wie man Neo4j Workspace nutzt, um eine Graphdatenbank aufzubauen. Workspace erlaubt ein schnelle Prototyping indem es Daten importiert, mit denen dann ein Datenmodell erstellt wird und wie anschliessend die Daten importieren und analysiert werden.

Als Beispiel-Daten nutzen wir Daten von der öffentlichen Seite govdata.de. Wir importieren zwei Dateien, welche informationen über öffentliche Ladesäulen in Schleswig-Holstein enthalten und eine Datei mit Informationen von Windrädern im selben Bundesland. Durch das Zusammenführen der unterschiedlichen Datensets können wir dann analysieren, wie die einzelnen Kommunen aufgestellt sind.

Dies stellt nur ein einfaches Beispiel dar, aber das Datenmodell kann man auf weitere Verbraucher und Erzeuger ein Kommunde ausweiten, um genauere Analysen und Voraussagen treffen zu können. Es dient als Beispiel und Anregung, welchen Mehrwert eine Graphdatenbank und deren Anaylsen erlauben.

Verzeichnisse:

Daten: Enthält die aufbereiteten Daten von Govdata.de

Datenquelle:

Datenmodelle:

Enthält die zwei Datenmodelle die mit Neo4j Workspace erstellt wurden

  1. Datenmodell für die Ladesäulen: neo4j_importer_model_ladesaeulen.json
  2. Datenmodell für die Windräder: neo4j_importer_model_WindRaeder2.json

Folien des Webinars:

  • Hier liegt die PDF Datei mit den gezeigten Folien

Zum Nachstellen der im Workshop gezeigte Demo, soll noch folgendes bzgl. der Daten erwähnt werden. Die Daten (im Vergleich zu den original Daten von govdata.de) mussten noch ein wenig aufbereitet werden, damit sie verwendet werden konnten. Folgende Aufbereitungen wurden durchgeführt:

1. Ladesäulen Daten:

  • lsNr hinzugegügt, als eindeutige Id für die Ladesäulen. Damit jede Ladesäule eindeutig identifizierbar ist.

2. Windkraftanlagen Daten:

  • Spalte "Gemeinde" in "Ort" umbenannt, für einfacheres Laden und zuordnen der Daten
  • Spaltennamen wurde von Großbuchstaben auf normale Rechtschreibung umbenannt
  • Data Cleansing von zusätzlichen Tabs & Zeilenumbrüche in den Daten --> Qualtät der Daten war relativ schlecht für diese Datei!

Ladet bitte die Dateien mit den Daten und den Datenmodellen auf Euren Rechner herunter, um die Demo nachstellen zu können. Die benötigt ihr dann später, nachdem Ihr Euch eine kostenlose Datenbank angelegt habt.


Aufbau der Graphdatenbank mittels Neo4j Aura free und Neo4j Workspace

Zum Aubau der Demo-Datenbank wird folgendermaßen vorgegangen:

  1. Falls noch nicht vorhanden, erstellt man sich eine Neo4j Aura Free Datenbank. Klickt den obigen Link und anschliessend den Button "Start free" und meldet Euch für die kostenlose Nutzung an.

  2. Nach der Anmeldung, folgt dem Dialog für das Anlegen einer kostenlosen Neo4j Datenbank. Nehmt ein leeres Datenbank-Template (Empty Instance) und keines der schon mit Daten geladenen Templates wie im Bild unten zu sehen ist!

Bildschirmfoto 2022-11-21 um 11 28 01

Vergesst anschliessend nicht, Euch das Passwort zu sichern!!! Das benötigt ihr, um Euch in Workspace mit der Datenbank verbinden zu können. Der Benutzerame für den Datenbank-Login ist immer neo4j!

  1. Wenn die leere Neo4j Instance aufgebaut ist, dass sollte in wenigen Sekunden passieren, dann könnt Ihr euch in Workspace an die Datenbank anmelden. Dazu ruft Workspace auf und falls Ihr nicht direkt auf dem Reiter "Import" landet, klickt noch auf Import. Workspace hat drei Reiter, "Explore", "Query" und "Import". Damit können wir gleich das Datenmodell bauen, dann die Daten laden und auch die Daten analysieren.

Bildschirmfoto 2022-11-21 um 11 43 02

  1. Bevor wir anfangen können, müsst ihr Euch noch an Eurer Aura Free Datenbank Instanz anmelden. Dazu klickt ihr mittig oben auf "No Connection" und dann auf "Connect" (im Bild oben).

Im folgenden Dialog benötigt ihr nun den "Connect String" und Benutzername plus Password. Das letztere habt ihr ja schon, aber den Connect String müsst Ihr Euch aus der Aura Free Console kopieren wie im nächsten Bild gezeigt.

Bildschirmfoto 2022-11-21 um 11 48 42

Damit habt ihr alle Infos, um auch mit Workspace an Eurer Aura Free Instanz anmelden zu können. Der Dialog dazu sieht folgendermaßen aus:

Bildschirmfoto 2022-11-21 um 11 49 45

  1. Um nun starten zu können, klickt bitte den Reiter "Import", falls noch nicht geschehen und ladet die Datei "ladesaeulenregister_SH_Ids.csv" per Drag & Drop oder über den "browse" Link in den Daten-Importer. Das sieht dann wie folgt aus:

Bildschirmfoto 2022-11-21 um 12 02 26

  1. Nun haben wir das Datenfile geladen. Anschliessend klickt Ihr rechts oben auf die 3 Punkte neben dem Button "Run Import" und wählt "Open Model". Im anschliessenden Dialogfenster wählt ihr dann das Datenmodel mit dem Dateiname "neo4j_importer_model_ladesaeulen.json" und klickt "Öffnen".

Bildschirmfoto 2022-11-21 um 12 04 30

Nun sehen wir in der Mitte des Fensters unser Datenmodell, was wir aus den Daten im linken Teil des Fensters "gebaut" haben. Wenn wir nun z. B. auf den Knoten "Ort" klicken, dann sehen wir im rechten Teil des Fensters, die Zuordnung von Daten zum Knoten "Ort" und welche Properties mit Daten gefüllt werden sollen. Mit dem hier geladen Datenmodell könnt ihr alle Knoten und Kanten (Relationships) auswählen und mal nachvollziehen, wie Diese miteinander verknüpft wurden. WICHTIG hierbei ist zu erwähnen, dass man möglichst jeden einzelnen Knoten durch eine Unique-ID oder einen Namen erkennbar machen sollte. Für den Ort haben wir dazu den Namen gewält, für die Ladesäulen die oben erwähnte Säulen-ID den Rohdaten hinzugefügt!

Bildschirmfoto 2022-11-21 um 12 08 30

  1. Mit einem Klick auf den Button "Run Import" können wir nun die Daten importieren. Nach ein paar Sekunden sollte das fertig sein und ein Fenster mit der Information aufgehen, dass alle Daten importiert wurden:

Bildschirmfoto 2022-11-21 um 12 23 56

Wir könnten nun schon in den Reiter "Query" oder "Explorer" springen und anfangen, die Daten zu analysieren. Bevor wir das tun, laden wir aber erst noch eine weitere Datei und das zugehörige Datenmodell.

  1. Wiederholt nun die Schritte 6 + 7 für das Datenmodell mit dem Namen "neo4j_importer_model_WindRaeder.json" und die Datendatei "Windraeder_SH_lc.csv". WICHTIG, bevor ihr die CSV Datei ladet, müsst ihr noch die Datei mit den Ladesäulen Daten entfernen. Das könnt Ihr über die drei Punkte rechts neben dem Dateinamen machen, wie im Bild gezeigt. Danach ist das Feld mit den Dateien leer und ihr könnt die Windrad-Datei laden.

Bildschirmfoto 2022-11-21 um 12 31 46

Wenn beide Dateien geladen sind, sollte das wie folgt aussehen:

Bildschirmfoto 2022-11-21 um 12 35 27

Nun wieder "Run Import" anklicken und alle Daten sind in der Datenbank! Das "Import results" Fenster könnt ihr dann schliessen.

Nun sind wir bereit, die Daten zu analysieren. Wie im Webinar gezeigt, kann man dazu den Neo4j Browser (Query Reiter in Workspace) oder Neo4j Bloom (Explore Reiter in Workspace) nutzen. Wir werden erst mal ein paar Queries ausprobieren.

Noch eines vorweg, die Datenmodelle bauen aufeinander auf. Als gemeinsamer Knoten für beide Datensets wird der Knoten "Ort" genutzt und dessen Name als eindeutige Verbindung der Daten genutzt. Da benötigen wir, um nun Abfragen stellen zu können, wie sehr ein Ort "unabhängig" vom Stromnetzt arbeiten kann oder ob mehr Verbraucher da sind, als Energie produziert wird.


Abfragen und Analysen der Daten

Wir wechseln nun in den Reiter "Query" und testen dort ein paar Abragen in der Query Sprache "Cypher", welche Neo4j entwickelt hat. Die Sprache Cypher wird aktuell in einem ISO Gremium standartisiert und wird dann zukünftig als Graph Query Language (GQL) verfügbar sein. In der Neo4j Graph Academy gibt es diverse frei verfügbare Online-Kurse, wo man Cypher lernen kann. Das ist gar nicht schwer, probiert es einfach mal aus!

Als Erstes schauen wir uns mal an, welcher Ort wieviel Gesamt-Verbrauch hat und wieviele Ladesäulen das sind. Hier ist die Cypher Query dazu:

MATCH (o:Ort)-[:HAT_VERBRAUCHER]->(v:Verbraucher)
RETURN DISTINCT o.Ort AS Ortsname, sum(v.Anschlussleistung) AS `Verbrauch-Gesamt`, sum(v.AnzahlLadepunkte) AS `Anzahl Ladepunkte`;

Diese kopieren wir in die obere Kommandozeile des Neo4j Browsers (Reiter Query in Workspace), was dann wie folgt aussieht:

Bildschirmfoto 2022-11-21 um 12 53 35

Wenn man die Query dann laufen lässt (Klick auf den kleinen blauen Button rechts in der Query Zeile), dann bekommt man sofort das Ergebnis angezeigt:

Bildschirmfoto 2022-11-21 um 12 53 51

Analog kann man dann auch mit den folgenden Queries verfahren.

Diese Query zeigt nun statt der Verbraucher alle Erzeuger und deren gesamt Produktion an Energie an:

MATCH (o:Ort)-[:HAT_ERZEUGER]->(e:Erzeuger)
RETURN DISTINCT o.Ort AS Ortsname, sum(e.Leistung) AS `Erzeugung-Gesamt`ORDER BY `Erzeugung-Gesamt` DESC;

Diese Query vergleicht, wieviel Energie in einem Ort (hier Kiel) verbraucht wird und stellt das der gesamten Erzeugung von Energie gegenüber:

MATCH (v:Verbraucher)<-[:HAT_VERBRAUCHER]-(o1:Ort {Ort: 'Kiel'})
WITH sum(v.Anschlussleistung) AS usedKW
MATCH (o2:Ort {Ort: 'Kiel'})-[:HAT_ERZEUGER]->(e:Erzeuger)
RETURN o2.Ort AS Ort, usedKW AS `Verbraucher-Gesamt`, sum(e.Leistung) AS `Erzeuger-Gesamt`;

Diese Query macht das gleiche, nur für alle Ortschaften in unserer Graph-Datenbank:

MATCH (v:Verbraucher)<-[:HAT_VERBRAUCHER]-(o:Ort)
WITH toInteger(sum(v.Anschlussleistung)) AS kwVerbrauch, o.Ort AS orte
UNWIND orte AS ort
MATCH (o:Ort)-[:HAT_ERZEUGER]->(e:Erzeuger)
WHERE o.Ort = ort
WITH sum(e.Leistung) AS kwErzeug, ort, kwVerbrauch
RETURN ort AS Ort, kwErzeug AS `Erzeuger-Gesamt`, kwVerbrauch AS `Verbraucher-Gesamt`;

Dies sind nur ein paar mögliche Queries, aber es gibt noch viel mehr mit denen die Daten ausgewertet werden können. Das überlasse ich aber Eurer Kreativität :-).

Mit dem "Explore"-Tab in Workspace besteht eine Möglichkeit, die Daten grafisch geführt zu analysieren. Über das Suchfeld werden mittels Suchwörtern Daten gesucht und analysiert. Weitere Funktionalität wie "Search Phrases" oder "Scene Actions" können dann helfen, Workflows aufzubauen und auch Änderungen der Daten zu ermöglichen. Für einen tieferen Einblick in Neo4j Bloom (welches sich hinter dem Explore-Tab verbirgt), empfehlen wir die Informationen auf unsere Webseite oder einige der Bloom Tutorials auf Youtube.

Hier noch ein Screenshot, wie die Analyse mit Neo4j Bloom im Explore-Tab aussehen kann. Viel Spaß beim Analysieren!

Bildschirmfoto 2022-11-21 um 15 42 25

it-novum-webinar_112022's People

Contributors

luzidl avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.