Der erste Teil des Vortrages befasst sich mit Gradoop, dem Extended Property Graph Model sowie den dazugehörigen Graphoperatoren. Im zweiten Teil des Vortrages wird die Verwendung von Gradoop am Beispiel von Pattern Mining in Geschäftsdaten erläutert.
Der Vortrag wurde im Rahmen der data2day Konferenz im Oktober 2016 in Karlsruhe gehalten.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence
1. Gut vernetzt:
Skalierbares Graph Mining für Business Intelligence
André Petermann, Martin Junghanns
Universität Leipzig & ScaDS Dreden/Leipzig
2. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence
Graphs are everywhere
GRADOOP
Business Intelligence
Zusammenfassung
3. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 3
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
3
Graphs are everywhere1
1The Neo4j guys
4. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 4
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
4
Graphs are everywhere
𝐺𝑟𝑎𝑝ℎ = (𝐾𝑛𝑜𝑡𝑒𝑛, 𝐾𝑎𝑛𝑡𝑒𝑛)
5. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 5
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
5
Graphs are everywhere
Quelle: https://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919/
6. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 6
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
6
Graphs are everywhere
𝐺𝑟𝑎𝑝ℎ = (𝑁𝑢𝑡𝑧𝑒𝑟, 𝐹𝑟𝑒𝑢𝑛𝑑𝑠𝑐ℎ𝑎𝑓𝑡𝑒𝑛)
Alice
Bob
Eve
Dave
Carol
Mallory
Peggy
Trent
7. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 7
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
7
Graphs are everywhere
Alice
Bob
Eve
Dave
Carol
Mallory
Peggy
Trent
𝐺𝑟𝑎𝑝ℎ = (𝑁𝑢𝑡𝑧𝑒𝑟, 𝐹𝑟𝑒𝑢𝑛𝑑𝑠𝑐ℎ𝑎𝑓𝑡𝑒𝑛)
8. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 8
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
8
Graphs are everywhere
Quelle: https://www.openstreetmap.de/
9. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 9
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
9
Graphs are everywhere
Leipzig
Dresden
Berlin
Hamburg
München
Chemnitz
Nürnberg
Köln
𝐺𝑟𝑎𝑝ℎ = (𝑆𝑡ä𝑑𝑡𝑒, 𝑉𝑒𝑟𝑏𝑖𝑛𝑑𝑢𝑛𝑔𝑒𝑛)
10. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 10
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
10
Graphs are everywhere
11. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 11
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
11
Graphs are everywhere
fakturiert
Mitarbeiter
name: Alice
Ticket
kosten: 500
Auftrag
Ausgangsrechnung
umsatz : 3000
Bestellung
Mitarbeiter
name: Eve
Eingangsrechnung
kosten : 1500
Zulieferer
name: Elbe Blech
𝐺𝑟𝑎𝑝ℎ = (𝐺𝑒𝑠𝑐ℎä𝑓𝑡𝑠𝑜𝑏𝑗𝑒𝑘𝑡𝑒, 𝐾𝑜𝑛𝑡𝑒𝑥𝑡)
12. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 12
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
12
Graphs are everywhere
Wie oft telefonieren Mitarbeiter und Kunden aus verschiedenen Ländern miteinander?
13. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 13
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
13
Graphs are everywhere
Nutzer
entspricht
entspricht
freunde
bearbeitetVon
Nutzer
Mitarbeiter
Kontaktperson
Zulieferer
Eingangsrechnung
von
gehörtZu
Welche Betrugsmuster treten in meinen Geschäftsdaten auf?
14. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 14
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
14
Graphs are everywhere
Welche Muster sind charakteristisch für Erfolg und Misserfolg eines Geschäftsprozesses?
Alice Email
gesendetVon
AngebotEmail
zu
TelefonatAngebotEmail
zu zu
Eve Email
gesendetVon
15. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 15
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
15
GRADOOP
Graph Analytics with Hadoop
16. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 16
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Datenvolumen / Berechnungsaufwand
Usability
Graph Processing Systeme
Graphdatenbanken
17. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 17
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Ein Open Source Framework für die
deklarative Analyse verteilter Graphdaten
18. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 18
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Ausdrucksstarkes Datenmodell (Extended Property Graph Model)
o Analytische Algorithmen und Operatoren
o Deklarative Workflows
o Implementiert auf Big Data Technology
19. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 19
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
HDFS/YARN
Cluster
Apache HBase: Distributed Graph Store
Apache Flink: Operator Implementation
Apache Flink: Distributed Operator Execution
Extended Property Graph Model (EPGM)
Graph Analytical Language (GrALa)
20. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 20
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Extended Property Graph Model – EPGM
21. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 21
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Knoten (Vertices)
22. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 22
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Kanten (Edges)
23. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 23
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Identifikatoren
21
1
3
24. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 24
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o (Typ) Labels
21
1
Auftrag
Mitarbeiter
3
Mitarbeiter
25. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 25
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Eigenschaften (Properties)
21
1
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Alice
dob : 1980-01-01
3
Mitarbeiter
name : Bob
26. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 26
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Gerichtete Kanten
21
1
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Alice
dob : 1980-01-01
3
Mitarbeiter
name : Bob
27. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 27
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Kanten Labels und Properties
21
1
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Alice
dob : 1980-01-01 erstelltVon
date : 2016-10-01
3
Mitarbeiter
name : Bob
28. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 28
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Parallele Kanten (Multigraph)
2 31
1
2
3
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Bob
Mitarbeiter
name : Alice
dob : 1980-01-01 erstelltVon
date : 2016-10-01
ansprechpartner
bearbeiterIntern
29. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 29
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Schleifen
2 31
1
2
3
4
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Bob
Mitarbeiter
name : Alice
dob : 1980-01-01 erstelltVon
date : 2016-10-01
ansprechpartner
bearbeiterIntern
erstelltVon
30. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 30
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Logische (Sub-)Graphen
2 31
1
2
3
4
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Bob
Mitarbeiter
name : Alice
dob : 1980-01-01 erstelltVon
date : 2016-10-01
ansprechpartner
bearbeiterIntern
erstelltVon
1
31. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 31
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Graph Labels und Properties
2 31
1
2
3
4
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Bob
Mitarbeiter
name : Alice
dob : 1980-01-01 erstelltVon
date : 2016-10-01
ansprechpartner
bearbeiterIntern
erstelltVon
Nachbarschaft
von : Bob
anzKanten : 2
2
Aktivität1
32. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 32
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Extended Property Graph Model (EPGM)
2 31
1
2
3
4
Auftrag
id : SO020
umsatz : 150.00
fakturiert : true
Mitarbeiter
name : Bob
Mitarbeiter
name : Alice
dob : 1980-01-01 erstelltVon
date : 2016-10-01
ansprechpartner
bearbeiterIntern
erstelltVon
Nachbarschaft
von : Bob
anzKanten : 2
2
Aktivität1
33. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 33
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Graph Analytical Language - GrALa
34. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 34
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Domänenspezifische Sprache für das EPGM
o Deklarative Operatoren für Logische Graphen und Graphmengen
o Anwendungslogik in benutzerdefinierten Funktionen
o Plugin-Konzept für externe Graphalgorithmen
o Aktuell in Java implementiert
GrALa
35. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 35
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Variablen
o Zugriff auf Knoten und Kanten
o Symbole
o Zugriff auf ID / Label
o Zugriff auf Properties
o Benutzerdefinierte Funktionen
o Funktionen als Argument
o Verkettung
LogicalGraph graph; GraphCollection coll;
graph.vertices; graph.edges
:id :label
graph[:id]; graph[:label]; vertex[:label]
graph[‘anzKnoten‘]; vertex[‘name‘]
udf = (graph => graph[‘anzKnoten‘] > 42)
graph.foo(udf)
graph.foo(udf).bar(udf)
GrALa - Sprachkonstrukte
45. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 47
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
47
Business Intelligence
46. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 48
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
48
Business Intelligence
o Geschäftsdaten als Graph
o Analytische Beispiele:
o Geografische Kundenkontakte
o Nach verdächtigen Mustern suchen
o Analyse von Geschäftsprozessen (Quote-to-Cash)
47. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 49
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
49
Business Intelligence
manuell, teilweise
automatisierbar
automatischDomänenexperte
Metadaten
Metadaten-Graph
Integrierte Graphdaten
Daten
ERP, CRM, ...BizTalk etc. Web
Geschäftsdaten als Graph
48. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 50
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
50
Business Intelligence
CIT ERP
bestätigt
bedient
bedient
fakturiert
fakturiert
fakturiert
Angebot
Auftrag Bestellung
Bestellung
Eingangsrechnung
Eingangsrechnung
Ausgangsrechnung
Mitarbeiter
id: Dave
Ticket
id: TI-001
kosten: 500
betrifft
bearbeitetVon
bearbeitetVon
Geschäftsdaten als Graph
Mitarbeiter Mitarbeiter
Mitarbeiter
id: Alice
land: UK
id: Bob
land: DE
id: Carol
land: DE
id: SI-001
umsatz : 5,000
id: PI-002
kosten: 1,500
id: PI-001
kosten: 2,000
id: PO-001id: SO-001
id: PO-002
id: SQ-001
erstelltVon erstelltVon
bearbeitetVon
erstelltVon
erstelltVon
49. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 51
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
51
Business Intelligence
Beispiel 1 : Geographische Kundenkontakte mit Graph Grouping
Wie oft telefonieren Mitarbeiter und Kunden
aus verschiedenen Ländern miteinander?
50. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 52
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
52
Business Intelligence
DataSource dataSource = new HBaseDataSource();
51. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 53
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
53
Business Intelligence
DataSource dataSource = new HBaseDataSource();
LogicalGraph graph = dataSource.toLogicalGraph()
Mitarbeiter
name: Alice
land : DE
Mitarbeiter
name: Bob
land : NL
Mitarbeiter
name: Carol
land : UK
Mitarbeiter
name: Dave
land : UK
Kunde
name: Paul
land : DE
Kunde
name: Arthur
land : UK
Kunde
name: Frank
land : DE
Angebot
id : QTN001
Kunde
name: Chuck
land : UK
1
52. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 54
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
54
Business Intelligence
DataSource dataSource = new HBaseDataSource();
LogicalGraph graph = dataSource.toLogicalGraph()
.subgraph(v => v[:label] == ‘Mitarbeiter‘ || v[:label] == ‘Kunde‘)
Mitarbeiter
name: Alice
land : DE
Mitarbeiter
name: Bob
land : NL
Mitarbeiter
name: Carol
land : UK
Mitarbeiter
name: Dave
land : UK
Kunde
name: Paul
land : DE
Kunde
name: Arthur
land : UK
Kunde
name: Frank
land : DE
Angebot
id : QTN001
Kunde
name: Chuck
land : UK
1
53. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 55
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
55
Business Intelligence
DataSource dataSource = new HBaseDataSource();
LogicalGraph graph = dataSource.toLogicalGraph()
.subgraph(v => v[:label] == ‘Mitarbeiter‘ || v[:label] == ‘Kunde‘)
Mitarbeiter
name: Alice
land : DE
Mitarbeiter
name: Bob
land : NL
Mitarbeiter
name: Carol
land : UK
Mitarbeiter
name: Dave
land : UK
Kunde
name: Paul
land : DE
Kunde
name: Arthur
land : UK
Kunde
name: Frank
land : DE
Kunde
name: Chuck
land : UK
2
1
54. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 56
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
56
Business Intelligence
DataSource dataSource = new HBaseDataSource();
LogicalGraph graph = dataSource.toLogicalGraph()
.subgraph(v => v[:label] == ‘Mitarbeiter‘ || v[:label] == ‘Kunde‘)
.groupBy( [:label, ‘land‘], [COUNT()], [:label], [COUNT()]);
Mitarbeiter
name: Alice
land : DE
Mitarbeiter
name: Bob
land : NL
Mitarbeiter
name: Carol
land : UK
Mitarbeiter
name: Dave
land : UK
Kunde
name: Paul
land : DE
Kunde
name: Arthur
land : UK
Kunde
name: Frank
land : DE
Kunde
name: Chuck
land : UK
2
1
55. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 57
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
57
Business Intelligence
DataSource dataSource = new HBaseDataSource();
LogicalGraph graph = dataSource.toLogicalGraph()
.subgraph(v => v[:label] == ‘Mitarbeiter‘ || v[:label] == ‘Kunde‘)
.groupBy( [:label, ‘land‘], [COUNT()], [:label], [COUNT()]);
Mitarbeiter
land : DE
count : 1
Mitarbeiter
land : NL
count : 1
Mitarbeiter
land : UK
count : 2
Kunde
land : UK
count : 2
Kunde
land : DE
count : 2
anruf
count : 1
3
anruf
count : 1
anruf
count : 1
anruf
count : 1
anruf
count : 2
anruf
count : 1
2
56. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 58
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
58
Business Intelligence
DataSource dataSource = new HBaseDataSource();
LogicalGraph graph = dataSource.toLogicalGraph()
.subgraph(v => v[:label] == ‘Mitarbeiter‘ || v[:label] == ‘Kunde‘)
.groupBy( [:label, ‘land‘], [COUNT()], [:label], [COUNT()]);
graph.writeTo(new JSONDataSink(‘hdfs:///result‘)
Mitarbeiter
land : DE
count : 1
Mitarbeiter
land : NL
count : 1
Mitarbeiter
land : UK
count : 2
Kunde
land : UK
count : 2
Kunde
land : DE
count : 2
anruf
count : 1
3
anruf
count : 1
anruf
count : 1
anruf
count : 1
anruf
count : 2
anruf
count : 1
2
57. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 59
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
59
Business Intelligence
Wie oft telefonieren Mitarbeiter und Kunden aus verschiedenen Ländern miteinander?
58. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 60
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
60
Business Intelligence
Beispiel 2:
Nach verdächtigen Mustern suchen mit Pattern Matching
59. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 61
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
61
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
entspricht
Kontaktperson
Mitarbeiter
Geschäftsdaten
Nutzer
1
freunde
Soziales
Netzwerk
60. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 62
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
62
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
Nutzer
entspricht
entspricht
bearbeitetVon
Nutzer
Mitarbeiter
Kontaktperson
Zulieferer
Eingangsrechnung
von
gehörtZu
freunde
61. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 63
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
63
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
GraphCollection coll = graph.match(
(e:Mitarbeiter)<-[:bearbeitetVon]-(:Eingangsrechnung)-[:von]->(:Zulieferer)<-[:gehörtZu]-(c:Kontaktperson)
(c)-[:entspricht]->(:Nutzer)-[:freunde]->(:Nutzer)<-[:entspricht]-(e))
e
c
Nutzer
entspricht
entspricht
bearbeitetVon
Nutzer
Mitarbeiter
Kontaktperson
Zulieferer
Eingangsrechnung
von
gehörtZu
freunde
62. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 64
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
64
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
GraphCollection coll = graph.match(
(e:Mitarbeiter)<-[:bearbeitetVon]-(:Eingangsrechnung)-[:von]->(:Zulieferer)<-[:gehörtZu]-(c:Kontaktperson)
(c)-[:entspricht]->(:Nutzer)-[:freunde]->(:Nutzer)<-[:entspricht]-(e))
2
e
c
Nutzer
name: Alice
entspricht
entspricht
bearbeitetVon
Nutzer
name: Bob
Mitarbeiter
name: Alice Smith
Kontaktperson
name: Bob Miller
Zulieferer
name: Elbe Blech
Eingangsrechnung
umsatz : 1337
von
gehörtZu
3
4
…
freunde
63. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 65
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
65
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
GraphCollection coll = graph.match(
(e:Mitarbeiter)<-[:bearbeitetVon]-(:Eingangsrechnung)-[:von]->(:Zulieferer)<-[:gehörtZu]-(c:Kontaktperson)
(c)-[:entspricht]->(:Nutzer)-[:freunde]->(:Nutzer)<-[:entspricht]-(e))
.apply(g => g.subgraph(e => e[:label] == ‘freunde‘));
2
e
c
Nutzer
name: Alice
entspricht
entspricht
bearbeitetVon
Nutzer
name: Bob
Mitarbeiter
name: Alice Smith
Kontaktperson
name: Bob Miller
Zulieferer
name: Elbe Blech
Eingangsrechnung
umsatz : 1337
von
gehörtZu
3
4
…
freunde
64. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 66
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
66
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
GraphCollection coll = graph.match(
(e:Mitarbeiter)<-[:bearbeitetVon]-(:Eingangsrechnung)-[:von]->(:Zulieferer)<-[:gehörtZu]-(c:Kontaktperson)
(c)-[:entspricht]->(:Nutzer)-[:freunde]->(:Nutzer)<-[:entspricht]-(e))
.apply(g => g.subgraph(e => e[:label] == ‘freunde‘));
5
Nutzer
name: Alice
Nutzer
name: Bob
6
7 …
freunde
65. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 67
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
67
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
GraphCollection coll = graph.match(
(e:Mitarbeiter)<-[:bearbeitetVon]-(:Eingangsrechnung)-[:von]->(:Zulieferer)<-[:gehörtZu]-(c:Kontaktperson)
(c)-[:entspricht]->(:Nutzer)-[:freunde]->(:Nutzer)<-[:entspricht]-(e))
.apply(g => g.subgraph(e => e[:label] == ‘freunde‘));
Table result = collection.edges()
5
Nutzer
name: Alice
Nutzer
name: Bob
6
7 …
SOURCE EDGE TARGET
Alice freunde Bob
Alice freunde Bob
Eve freunde Frank
Alice freunde Bob
freunde
66. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 68
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
68
Business Intelligence
LogicalGraph graph = dataSource.toLogicalGraph();
GraphCollection coll = graph.match(
(e:Mitarbeiter)<-[:bearbeitetVon]-(:Eingangsrechnung)-[:von]->(:Zulieferer)<-[:gehörtZu]-(c:Kontaktperson)
(c)-[:entspricht]->(:Nutzer)-[:freunde]->(:Nutzer)<-[:entspricht]-(e))
.apply(g => g.subgraph(e => e[:label] == ‘freunde‘));
Table result = collection.edges()
.groupBy(SOURCE, TARGET).count();
5
Nutzer
name: Alice
Nutzer
name: Bob
6
7 …
SRC TRGT CNT
Alice Bob 3
Eve Frank 1
SOURCE EDGE TARGET
Alice freunde Bob
Alice freunde Bob
Eve freunde Frank
Alice freunde Bob
freunde
67. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 69
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
69
Business Intelligence
Beispiel 3:
Quote-to-Cash Analyse
von Geschäftsprozessen
68. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 70
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
70
Business Intelligence
Quote-to-Cash
Kampagne
thema: Äpfel Telefonat
Sachkonto
name: umsatz
Sachkonto
name: kostenBuchung
betrag: -200
Zahlung
Zahlung
Zahlung
Buchung
betrag: 100
Buchung
betrag: 100
Buchung
betrag: 100
Kunde
name: ACME
Ausgangsrechnung
betrag: 300
Mitarbeiter
name: Alice
Visit
Mitarbeiter
name: Bob
Angebot
Produkt
name: Apfel
anz : 100
preis: 1.50
Produkt
name: Birne
anz : 200
preis: 1.00
Auftrag
Mitarbeiter
name: Carol
anz : 300
preis: 1.00
Zulieferer
name: East Fruits
Mitarbeiter
name: Dave
Bestellung
anz : 100 | preis: 0.50
Bestellung
Zulieferer
name: West Fruitsanz : 200 | preis: 1.00
Buchung
betrag: -200
Buchung
betrag: -50
70. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 72
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
72
Business Intelligence
0: LogicalGraph iig = dataSource.getLogicalGraph();
1: GraphCollection btgs = iig.callForCollection(new BusinessTransactionGraphs())
Integrierte
Graphdaten
iig
btgs
Geschäftsfälle
als Graphmenge
1
Quote-to-Cash
71. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 73
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
73
Business Intelligence
CIT ERP
Auftrag
id: SO-001
bestätigt
Bestellung
Bestellung
Ausgangsrechnung
id: SI-001
umsatz : 5,000
id: PO-001
id: PO-002
bedient
bedient
fakturiert
Angebot
id: SQ-001
Mitarbeiter
Mitarbeiter
id: Dave
Mitarbeiter
Mitarbeiter
id: Alice
land: UK
id: Bob
land: DE
id: Carol
land: DE
bearbeitetVon
bearbeitetVon
erstelltVon erstelltVon
bearbeitetVon
erstelltVon
erstelltVon
Eingangsrechnung
Eingangsrechnung
id: PI-002
kosten: 1,500
id: PI-001
kosten: 2,000
fakturiert
fakturiert
betrifft
Ticket
id: TI-001
kosten: 500
Quote-to-Cash
72. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 74
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
74
Business Intelligence
0: LogicalGraph iig = dataSource.getLogicalGraph();
1: GraphCollection btgs = iig.callForCollection(new BusinessTransactionGraphs())
2: .apply(g => g.aggregate([SUM(‘umsatz’), SUM(‘kosten’)], [])
Integrierte
Graphdaten
iig
btgs
Geschäftsfälle
als Graphmenge
2
btgs
3000,2000
4000,3500
2000,2000
1000,1500
7500,6500
1000,3500
500, 500
Geschäftsfälle mit
Umsatz und Ausgaben
1
Quote-to-Cash
73. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 75
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
75
Business Intelligence
id: PI-001
kosten: 2,000
id: PI-002
kosten: 1,500id: SI-001
umsatz : 5,000
Ticket
id: TI-001
kosten: 500
CIT ERP
bestätigt
bedient
bedient
fakturiert
fakturiert
fakturiert
Angebot
Auftrag Bestellung
Bestellung
Ausgangssrechnung
Eingangsrechnung
Eingangsrechnung
Mitarbeiter
id: Dave
betrifft
bearbeitetVon
bearbeitetVon
Mitarbeiter Mitarbeiter
Mitarbeiter
id: Alice
land: UK
id: Bob
land: DE
id: Carol
land: DE
id: PO-001id: SO-001
id: PO-002
id: SQ-001
erstelltVon erstelltVon
bearbeitetVon
erstelltVon
erstelltVon
sum(umsatz) : 5,000 | sum(kosten): 4,000Quote-to-Cash
74. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 76
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
76
Business Intelligence
0: LogicalGraph iig = dataSource.getLogicalGraph();
1: GraphCollection btgs = iig.callForCollection(new BusinessTransactionGraphs())
2: .apply(g => g.aggregate([SUM(‘umsatz’), SUM(‘kosten’)], [])
3: .transform(categorizeGraphHead, changeVertexLabels);
Integrierte
Graphdaten
iig
btgs
Geschäftsfälle
als Graphmenge
btgs
3000,2000
4000,3500
2000,2000
1000,1500
7500,6500
1000,3500
500, 500
Geschäftsfälle mit
Umsatz und Ausgaben
1 2
btgs
Kategorisierte
Geschäftsfälle
3
Quote-to-Cash
75. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 77
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
77
Business Intelligence
id: PI-001
kosten: 2,000
id: PI-002
kosten: 1,500
id: SI-001
umsatz : 5,000
Ticket
id: TI-001
kosten: 500
CIT ERP
bestätigt
bedient
bedient
fakturiert
fakturiert
fakturiert
Angebot
Auftrag Bestellung
Bestellung
Eingangsrechnung
Eingangsrechnung
Eingangsrechnung
Mitarbeiter
id: Dave
betrifft
bearbeitetVon
bearbeitetVon
Mitarbeiter Mitarbeiter
Mitarbeiter
id: Alice
land: UK
id: Bob
land: DE
id: Carol
land: DE
id: PO-001id: SO-001
id: PO-002
id: SQ-001
erstelltVon erstelltVon
bearbeitetVon
erstelltVon
erstelltVon
Quote-to-Cash sum(umsatz) : 5,000 | sum(kosten): 4,000
categorizeGraphHead = (Graph in, Graph out =>
out[‘category‘] = (in[‘sum(umsatz)‘] - in[‘sum(kosten)‘] > 0 ? ‘gewinn‘ : ‘verlust‘)
)
changeVertexLabels = (Vertex in, Vertex out =>
out[:label] = (in[‘superClass‘] == ‘MasterData‘ ? in[‘id‘] : in[:label])
)
category: ‘gewinn‘
76. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 78
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
78
Business Intelligence
Ticket
CIT ERP
bestätigt
bedient
bedient
fakturiert
fakturiert
fakturiert
Angebot
Auftrag Bestellung
Bestellung
Ausgangsrechnung
Eingangsrechnung
Eingangsrechnung
Mitarbeiter
id: Dave
betrifft
bearbeitetVon
bearbeitetVon
Mitarbeiter Mitarbeiter
Mitarbeiter
id: Alice
land: UK
id: Bob
land: DE
id: Carol
land: DE
erstelltVon erstelltVon
bearbeitetVon
erstelltVon
erstelltVon
Quote-to-Cash category: ‘gewinn‘
Alice
Bob
CarolDave
id: PI-001
kosten: 2,000
id: PI-002
kosten: 1,500id: SI-001
umsatz : 5,000
id: PO-001id: SO-001
id: PO-002
id: SQ-001
id: TI-001
kosten: 500
77. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 79
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
79
Business Intelligence
0: LogicalGraph iig = dataSource.getLogicalGraph();
1: GraphCollection btgs = iig.callForCollection(new BusinessTransactionGraphs())
2: .apply(g => g.aggregate([SUM(‘umsatz’), SUM(‘kosten’)], [])
3: .transform(categorizeGraphHead, changeVertexLabels);
4: GraphCollection patterns = btgs.callForCollection(new CategoryCharacteristicSubgraphs(0.8, 2.0)
Integrierte
Graphdaten
iig
btgs
Geschäftsfälle
als Graphmenge
btgs
3000,2000
4000,3500
2000,2000
1000,1500
7500,6500
1000,3500
500, 500
Geschäftsfälle mit
Umsatz und Ausgaben
btgs
Kategorisierte
Geschäftsfälle
1 2 3
patterns
Charakteristische
Graphmuster
4
Quote-to-Cash
78. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 80
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
80
Business Intelligence
0: LogicalGraph iig = dataSource.getLogicalGraph();
1: GraphCollection btgs = iig.callForCollection(new BusinessTransactionGraphs())
2: .apply(g => g.aggregate([SUM(‘umsatz’), SUM(‘kosten’)], [])
3: .transform(categorizeGraphHead, changeVertexLabels);
4: GraphCollection patterns = btgs.callForCollection(new CategoryCharacteristicSubgraphs(0.8, 2.0)
Integrierte
Graphdaten
iig
btgs
Geschäftsfälle
als Graphmenge
btgs
3000,2000
4000,3500
2000,2000
1000,1500
7500,6500
1000,3500
500, 500
Geschäftsfälle mit
Umsatz und Ausgaben
btgs
Kategorisierte
Geschäftsfälle
1 2 3
patterns
Charakteristische
Graphmuster
4
Alice Email
1 | category : ‘gewinn‘
AngebotEmail Telefonat
2 | category : ‘gewinn‘
AngebotAlice Email Telefonat Bob
3 | category : ‘gewinn‘
Angebot Email Eve
4 | category : ‘verlust‘
79. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 81
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
81
Business Intelligence
o Eingabe: KPI und Kategorisierung
o Muster werden automatisch gefunden
o Keine Vermutung notwendig (z.B. überprüfe E-Mails)
o Muster können weiter verwendet werden (Filtern, Anzeigen,...)
Angebot
Alice
Email Telefonat
Bob
Quote-to-Cash
80. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 82
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
82
Zusammenfassung
81. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 83
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
83
Zusammenfassung
o Open Source Framework
o Deklarative Graphanalyse
o Ausdrucksstarkes und flexibles Datenmodell
o Erweiterung von BI durch neuartige Netzwerkanalysen
o Big Data ready
82. Junghanns, M.; Petermann, A.
Verteilte Graphanalyse mit Gradoop
JavaSPEKTRUM 05/2016
Petermann, A.; Junghanns, M.
Scalable Business Intelligence with Graph Collections
it - Information Technology, Special Issue: Big Data Analytics (2016)
Junghanns, M.; Petermann, A.; Teichmann, N.; Gomez, K.; Rahm, E.
Analyzing Extended Property Graphs with Apache Flink
International Workshop on Network Data Analytics @ SIGMOD (2016)
Petermann, A.; Junghanns, M.; Kemper, S.; Gomez, K.; Teichmann, N.; Rahm, E.
Graph Mining for Complex Data Analytics
Demonstration @ IEEE International Conference on Data Mining (2016)
Petermann, A.; Junghanns, M.; Müller, R.; Rahm, E.
Graph-based Data Integration and Business Intelligence with BIIIG
Demonstration @ International Conference on Very Large Databases (2014)
GRADOOP @ inovex Meetup München 06/2016
http://www.slideshare.net/s1ck/distributed-graph-analytics-with-gradoop
GRADOOP @ Flink & Neo4j Meetup Berlin 03/2016
http://www.slideshare.net/s1ck/gradoop-scalable-graph-analytics-with-apache-flink-flink-neo4j-meetup-berlin
GRADOOP @ FlinkForward 2015
http://www.slideshare.net/FlinkForward/martin-junghans-gradoop-scalable-graph-analytics-with-apache-flink
Ausgewählte Artikel und Vorträge
www.gradoop.com