Warum sollte man die schönen Dinge nicht miteinander verbinden, dachte ich mir, und werde in diesem Beitrag zeigen, wie man NBA Statistiken in Log Insight importieren kann. Das Prinzip ist gleich für jegliche Art von statistischen Daten, die in einem “sauberen” CSV-Format vorliegen.
Zuerst müssen die Daten beschafft werden: ich bin eher zufällig auf die Seite http://www.basketball-reference.com geraten und festgestellt, dass man dort viele der Tabellen auch im CSV-Format herunterladen kann. Um ein überschaubares Beispiel zu haben, nehme ich die Basketball Team-Statistiken der NBA aus der Saison 2015-2016.
Auf der Empfängerseite benötige ich einen Log Insight Server (für solche Experimente empfiehlt es sich eine dedizierte Instanz z.B. in VMware Workstation / Fusion zu importieren). Ferner brauche ich den Log Insight Importer (dieser muss bei der Version 3.3 noch separat heruntegeladen werden, siehe Beschreibung hier)
Aus Sparsamkeit installiere ich den Importer direkt auf meinem Log Insight Test-Server (der in VMware Fusion läuft). Ich lege ein Verzeichnis “nba” an und kopiere die Daten in ein File namens teams.csv . Der Importer braucht eine Manifest-Datei durch die das Parsen der CSV Felder beim Import gesteuert wird.
Die Datei nba-teams-manifest.ini:
[filelog|csv] tags={"datasource":"basketball-reference.com","filetype":"csv","testnr":"1005","topic":"teamstats"} directory=/root/nba include=teams.csv parser=tbcsv [parser|tbcsv] base_parser=csv delimiter="," fields=Rk,Team,G,MP,FG,FGA,FG_prc,ThreeP,ThreePA,ThreeP_prc,TwoP,TwoPA,TwoP_prc,FT,FTA,FT_prc,ORB,DRB,TRB,AST,STL,BLK,TOV,PF,PTS,PTSG
Im ersten Abschnitt werden verschiedene optionale Tags dem Import zugewiesen. Diese erleichtern nachher das Auffinden der Daten. Ich nutze meist die “testnr” um verschiedene Parsing-Optionen auszuprobieren. Der zweite Abschnitt ist die Parser-Konfiguration. Die Anzahl der Felder in der letzten Zeile muss genau der Anzahl der Felder der CSV-Datei entsprechen. Die Feldernamen dürfen nicht mit einer Zahl anfangen und jegliche Sonderzeichen ausser dem Unterstrich werden auch nicht toleriert.
Nun brauchen wir das Importier-Kommando:
loginsight-importer --server localhost --source /root/nba --manifest nba-teams-manifest.ini --debug_level 2
Der Importer schreibt seine eigenen Logs nach .loginsight-importer/logs. Mit der “–debug_level 2” Option sind diese Logs so detailliert, dass man leicht herausfinden kann, warum der Parser nicht funktioniert. Bei mir waren es meist vergessene Sonderzeichen oder Zahlen in Feldnamen.
Nach dem erfolgreichen Import kann ich die Daten im Log Insight nach testnr=1005 filtern und sehen. Wenn der Parser funktioniert sind die Felder richtig extrahiert (siehe die blauen Feldnamen unter jedem Logeintrag):
Die extrahierten Felder beinhalten sauber formatierte natürliche Zahlen. Dies erlaubt einige mathematische Operationen und Visualisierungen in Log Insight. Die Bedeutung der Felder ist auf der Statistik-Seite gut erklärt.
Ein Beispiel: das Maximum der fg_prc (Trefferquote aus dem Feld) nach Mannschaft:
Um die Visualisierung etwas zu entlasten, können wir uns separat die Top10 Mannschaften anschauen (rk<11).
Hier ein Beispiel für Offensiv-Rebounds der Top 10:
Soweit zu den Teams. Nun können wir es auch vertiefen und Spielerstatistiken der Saison importieren. Diese fand ich unter http://www.basketball-reference.com/leagues/NBA_2016_advanced.html
Die Daten kopiere ich in die Datei ../nba/playerstats.csv und passe die Importer-Konfiguration an:
[filelog|csv] tags={"datasource":"basketball-reference.com","filetype":"csv","testnr":"1005","topic":"playerstats"} directory=/root/nba include=playerstats.csv parser=tbcsv [parser|tbcsv] base_parser=csv delimiter="," fields=Rk,Player,Pos,Age,Tm,G,MP,PER,TS_PRZ,Three_PAr,FTr,ORB_PRZ,DRB_PRZ,TRB_PRZ,AST_PRZ,STL_PRZ,BLK_PRZ,TOV_PRZ,USG_PRZ,,OWS,DWS,WS,WS48,,OBPM,DBPM,BPM,VORP
Neuer import:
localhost:~ # loginsight-importer --server localhost --source /root/nba --manifest nba-teams-manifest.ini --debug_level 2
Nun kann man auch nach Spielern und Teams sortieren und zum Beispiel die Offensiv- und Defensiv-Rebounds der Spieler von Toronto Raptors auflisten:
Oder alle Center, die mehr als 50 Spiele gespielt haben nach deren Offensiv-Rebound-%, wenn es > 13% liegt:
Einige dieser Ansichten habe ich nun in ein Dashboard zusammengefügt. Für ein ausgewachsenes NBA-Content-Pack müsste man etwas mehr Zeit investieren 🙂
In dieser Anlage finden Sie die verwendeten Daten, das Beispieldashboard und die Importer-Manifeste.