Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gut vernetzt: Skalierbares Graph Mining für Business Intelligence

781 views

Published on

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.

Published in: Data & Analytics

Gut vernetzt: Skalierbares Graph Mining für Business Intelligence

  1. 1. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence André Petermann, Martin Junghanns Universität Leipzig & ScaDS Dreden/Leipzig
  2. 2. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung
  3. 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. 4. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 4 Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung 4 Graphs are everywhere 𝐺𝑟𝑎𝑝ℎ = (𝐾𝑛𝑜𝑡𝑒𝑛, 𝐾𝑎𝑛𝑡𝑒𝑛)
  5. 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. 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. 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. 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. 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. 10. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 10 Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung 10 Graphs are everywhere
  11. 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. 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. 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. 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. 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. 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. 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. 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. 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. 20. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 20 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP Extended Property Graph Model – EPGM
  21. 21. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 21 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP o Knoten (Vertices)
  22. 22. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 22 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP o Kanten (Edges)
  23. 23. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 23 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP o Identifikatoren 21 1 3
  24. 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. 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. 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. 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. 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. 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. 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. 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. 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. 33. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 33 Graphs are everywhere GRADOOP Business Intelligence ZusammenfassungGRADOOP Graph Analytical Language - GrALa
  34. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 45. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 47 Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung 47 Business Intelligence
  46. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 80. Gut vernetzt: Skalierbares Graph Mining für Business Intelligence 82 Graphs are everywhere GRADOOP Business Intelligence Zusammenfassung 82 Zusammenfassung
  81. 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. 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

×