SlideShare ist ein Scribd-Unternehmen logo
1 von 82
Downloaden Sie, um offline zu lesen
Gut vernetzt:
Skalierbares Graph Mining für Business Intelligence
André Petermann, Martin Junghanns
Universität Leipzig & ScaDS Dreden/Leipzig
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence
Graphs are everywhere
GRADOOP
Business Intelligence
Zusammenfassung
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 3
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
3
Graphs are everywhere1
1The Neo4j guys
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 4
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
4
Graphs are everywhere
𝐺𝑟𝑎𝑝ℎ = (𝐾𝑛𝑜𝑡𝑒𝑛, 𝐾𝑎𝑛𝑡𝑒𝑛)
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/
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
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
𝐺𝑟𝑎𝑝ℎ = (𝑁𝑢𝑡𝑧𝑒𝑟, 𝐹𝑟𝑒𝑢𝑛𝑑𝑠𝑐ℎ𝑎𝑓𝑡𝑒𝑛)
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/
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
𝐺𝑟𝑎𝑝ℎ = (𝑆𝑡ä𝑑𝑡𝑒, 𝑉𝑒𝑟𝑏𝑖𝑛𝑑𝑢𝑛𝑔𝑒𝑛)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 10
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
10
Graphs are everywhere
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
𝐺𝑟𝑎𝑝ℎ = (𝐺𝑒𝑠𝑐ℎä𝑓𝑡𝑠𝑜𝑏𝑗𝑒𝑘𝑡𝑒, 𝐾𝑜𝑛𝑡𝑒𝑥𝑡)
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?
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?
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
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 15
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
15
GRADOOP
Graph Analytics with Hadoop
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 16
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Datenvolumen / Berechnungsaufwand
Usability
Graph Processing Systeme
Graphdatenbanken
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
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
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)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 20
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Extended Property Graph Model – EPGM
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 21
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Knoten (Vertices)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 22
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Kanten (Edges)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 23
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
o Identifikatoren
21
1
3
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
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
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
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
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
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
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
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
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
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 33
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Graph Analytical Language - GrALa
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
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
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 36
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
1 3
4
5
2
3
1 2
1 3
4
5
2
1
2 4
5
Combination
Overlap
Exclusion
3Binäre Operatoren
LogicalGraph graph3 = graph1.combine(graph2)
LogicalGraph graph4 = graph1.overlap(graph2)
LogicalGraph graph5 = graph1.exclude(graph2)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 37
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
1 3
4
5
2
3
1 3
4
5
2
3 | anzKnoten: 5
UDF
Aggregation
udf = (graph => graph[‘anzKnoten’] = graph.vertices.size())
graph3 = graph3.aggregate(udf)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 38
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
UDF
3 | anzKnoten: 5
name:Alice
f_name:Bob1 3
4
5
2
3 | Community| anzKnoten: 5
f_name:Alice
f_name:Bob1 3
4
5
2
Transformation
graph3 = graph3.transform(
(graphOld, graphNew => graphNew[:label] = ‘Community’),
(vertexOld, vertexNew => vertexNew[‘f_name’] = vertexOld[‘name’] != null ? vertexOld[‘name’] : vertexOld[‘f_name’]),
(edgeOld, edgeNew => edgeNew[:label] = edgeOld[:label] == ‘orange’ ? ‘rot’ : edgeOld[:label]))
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 39
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
3
1 3
4
5
2
3
4
1 2
3
5
1 2
6
3
5
2
UDF
UDF
UDF
Subgraph
LogicalGraph graph4 = graph3.subgraph(
(vertex => vertex[:label] == ‘grün’),
(edge => edge[:label] == ‘orange’))
LogicalGraph graph5 = graph3.subgraph((vertex => vertex[:label] == ‘grün’))
LogicalGraph graph6 = graph3.subgraph((edge => edge[:label] == ‘blau’))
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 40
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
3
1 3
4
5
2 Pattern
4 5
1 3
4
2
Graph Collection
Pattern Matching
GraphCollection collection = graph3.match(‘(:Grün)-[:orange]->(:Orange)’)
// z.B. in Geschäftsdaten
GraphCollection collection = graph3.match(‘(:Auftrag)-[:bearbeitetVon]->(:Mitarbeiter)’)
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 41
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Keys
3
1 3
4
5
2
+Aggregate
3
a:23 a:84
a:42
a:12
1 3
4
5
2
a:13
a:21
4
count:2 count:3
max(a):42
max(a):84
max(a):13 max(a):21
6 7
4
6 7
Grouping
LogicalGraph grouped = graph3.groupBy(
[:label], // vertex keys
[:label]) // edge keys
LogicalGraph grouped = graph3.groupBy([:label], [COUNT()], [:label], [MAX(‘a’)])
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 42
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
Operator
1
2
0 2
3
4
1
5 7 86
1 | anzKnoten: 5
2 | anzKnoten: 4
0 2
3
4
1
5 7 86
Apply (e.g. Aggregation)
collection = collection.apply(
(graph => graph.aggregate((g => g[‘anzKnoten’] = g.vertices.size()))));
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 43
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
UDF
anzKnoten > 4
1 | anzKnoten: 5
2 | anzKnoten: 4
0 2
3
4
1
5 7 86
1 | anzKnoten: 5
0 2
3
4
1
Selection
GraphCollection filtered = collection.select((graph => graph[‘anzKnoten’] > 4))
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 46
Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP
GraphCollection frequentPatterns = collection.callForCollection(new TransactionalFSM(0.5))
Call (e.g. Frequent Subgraph Mining)
FSM
Schwellwert : 50%
1
0 1 2
3
4
5 6 7
8
9
10
13
14
2
3
11 12
15 16
17 18
19 20
4
5
6
21 2322
25 2624
7
8
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 47
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
47
Business Intelligence
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)
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
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
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?
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 52
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
52
Business Intelligence
DataSource dataSource = new HBaseDataSource();
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
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
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
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
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
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
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?
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
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
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
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
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
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
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
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
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
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
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
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 71
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
71
Business Intelligence
Kampagne
thema: Äpfel Telefonat
Sachkonto
name: umsatz
Sachkonto
name: kosten
Buchung
betrag: 100
Buchung
betrag: -100
Telefonat
Telefonat
Telefonat
Telefonat
Buchung
betrag: 500
Buchung
betrag: 400
Buchung
betrag: 300
Buchung
betrag: 200
Buchung
betrag: -200
Buchung
betrag: -300
Buchung
betrag: -400 Buchung
betrag: -500
Quote-to-Cash
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
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
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
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
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
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‘
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
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
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‘
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
Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 82
Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
82
Zusammenfassung
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
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

Weitere ähnliche Inhalte

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
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
  • 36. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 36 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP 1 3 4 5 2 3 1 2 1 3 4 5 2 1 2 4 5 Combination Overlap Exclusion 3Binäre Operatoren LogicalGraph graph3 = graph1.combine(graph2) LogicalGraph graph4 = graph1.overlap(graph2) LogicalGraph graph5 = graph1.exclude(graph2)
  • 37. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 37 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP 1 3 4 5 2 3 1 3 4 5 2 3 | anzKnoten: 5 UDF Aggregation udf = (graph => graph[‘anzKnoten’] = graph.vertices.size()) graph3 = graph3.aggregate(udf)
  • 38. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 38 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP UDF 3 | anzKnoten: 5 name:Alice f_name:Bob1 3 4 5 2 3 | Community| anzKnoten: 5 f_name:Alice f_name:Bob1 3 4 5 2 Transformation graph3 = graph3.transform( (graphOld, graphNew => graphNew[:label] = ‘Community’), (vertexOld, vertexNew => vertexNew[‘f_name’] = vertexOld[‘name’] != null ? vertexOld[‘name’] : vertexOld[‘f_name’]), (edgeOld, edgeNew => edgeNew[:label] = edgeOld[:label] == ‘orange’ ? ‘rot’ : edgeOld[:label]))
  • 39. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 39 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP 3 1 3 4 5 2 3 4 1 2 3 5 1 2 6 3 5 2 UDF UDF UDF Subgraph LogicalGraph graph4 = graph3.subgraph( (vertex => vertex[:label] == ‘grün’), (edge => edge[:label] == ‘orange’)) LogicalGraph graph5 = graph3.subgraph((vertex => vertex[:label] == ‘grün’)) LogicalGraph graph6 = graph3.subgraph((edge => edge[:label] == ‘blau’))
  • 40. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 40 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP 3 1 3 4 5 2 Pattern 4 5 1 3 4 2 Graph Collection Pattern Matching GraphCollection collection = graph3.match(‘(:Grün)-[:orange]->(:Orange)’) // z.B. in Geschäftsdaten GraphCollection collection = graph3.match(‘(:Auftrag)-[:bearbeitetVon]->(:Mitarbeiter)’)
  • 41. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 41 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP Keys 3 1 3 4 5 2 +Aggregate 3 a:23 a:84 a:42 a:12 1 3 4 5 2 a:13 a:21 4 count:2 count:3 max(a):42 max(a):84 max(a):13 max(a):21 6 7 4 6 7 Grouping LogicalGraph grouped = graph3.groupBy( [:label], // vertex keys [:label]) // edge keys LogicalGraph grouped = graph3.groupBy([:label], [COUNT()], [:label], [MAX(‘a’)])
  • 42. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 42 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP Operator 1 2 0 2 3 4 1 5 7 86 1 | anzKnoten: 5 2 | anzKnoten: 4 0 2 3 4 1 5 7 86 Apply (e.g. Aggregation) collection = collection.apply( (graph => graph.aggregate((g => g[‘anzKnoten’] = g.vertices.size()))));
  • 43. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 43 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP UDF anzKnoten > 4 1 | anzKnoten: 5 2 | anzKnoten: 4 0 2 3 4 1 5 7 86 1 | anzKnoten: 5 0 2 3 4 1 Selection GraphCollection filtered = collection.select((graph => graph[‘anzKnoten’] > 4))
  • 44. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 46 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP GraphCollection frequentPatterns = collection.callForCollection(new TransactionalFSM(0.5)) Call (e.g. Frequent Subgraph Mining) FSM Schwellwert : 50% 1 0 1 2 3 4 5 6 7 8 9 10 13 14 2 3 11 12 15 16 17 18 19 20 4 5 6 21 2322 25 2624 7 8
  • 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
  • 69. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 71 Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung 71 Business Intelligence Kampagne thema: Äpfel Telefonat Sachkonto name: umsatz Sachkonto name: kosten Buchung betrag: 100 Buchung betrag: -100 Telefonat Telefonat Telefonat Telefonat Buchung betrag: 500 Buchung betrag: 400 Buchung betrag: 300 Buchung betrag: 200 Buchung betrag: -200 Buchung betrag: -300 Buchung betrag: -400 Buchung betrag: -500 Quote-to-Cash
  • 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