Ein gro­ßer Teil der Arbeit beim Auf­bau von Data Sci­ence in einem Startup besteht darin, das Pro­dukt­team davon zu über­zeu­gen, Daten zu nut­zen und sich um sie zu küm­mern. Wenn Sie die­ses Ziel erreicht haben, besteht der nächste Schritt darin, dass Sie in der Lage sind, alle Arten von Fra­gen zur Pro­dukt­ge­sund­heit inner­halb Ihres Unter­neh­mens zu beant­wor­ten. Ein uner­fah­re­ner Daten­wis­sen­schaft­ler könnte den­ken, dass diese Art von Arbeit außer­halb der Rolle eines Daten­wis­sen­schaft­lers liegt, aber die Iden­ti­fi­zie­rung von Schlüs­sel­me­tri­ken für die Pro­dukt­ge­sund­heit ist eine der Kern­fa­cet­ten der Rolle.

Ich habe die­sen Bei­trag als „Busi­ness Intel­li­gence“ beti­telt, denn sobald Sie eine Daten­pipe­line ein­ge­rich­tet haben, wird von einem Data Sci­en­tist in einem Startup erwar­tet, dass er alle Fra­gen zu Daten beant­wor­tet. Das ist ange­sichts der neuen Daten­flut nicht ver­wun­der­lich, aber auch ein Zeit­punkt, an dem ein Daten­wis­sen­schaft­ler Erwar­tun­gen an den Rest des Unter­neh­mens stel­len muss. Als Daten­wis­sen­schaft­ler in einem Startup ist es nicht Ihre Auf­gabe, Daten­fra­gen zu beant­wor­ten, son­dern die Unter­neh­mens­lei­tung dar­über zu infor­mie­ren, wel­che Metri­ken wich­tig sein sollten.

In die­sem Bei­trag geht es um die Grund­la­gen der Umwand­lung von Roh­da­ten in auf­be­rei­tete Daten, die einen Über­blick über den Zustand eines Pro­dukts geben kön­nen. Ich werde einige ver­schie­dene Ansätze für die Arbeit mit Roh­da­ten erör­tern, dar­un­ter SQL-Abfra­gen, R‑Markdown und Anbie­ter-Tools. Die all­ge­meine Erkennt­nis ist, dass es meh­rere Optio­nen für die Ver­ar­bei­tung von Daten­sät­zen gibt, und Sie soll­ten eine Lösung wäh­len, die zu den Zie­len Ihres Teams passt. Ich werde über frü­here Erfah­run­gen mit Tools wie Tableau spre­chen und Emp­feh­lun­gen für die Ska­lie­rung auto­ma­ti­sier­ter Berichte in einem Team geben.

In die­sem Bei­trag wer­den wir zwei Daten­quel­len ver­wen­den. Die erste ist ein öffent­li­cher Daten­satz, den wir agg­re­gie­ren und mit Schlüs­sel­me­tri­ken zusam­men­fas­sen wer­den. Die zweite sind Daten, die von der Track­ing-API im zwei­ten Kapi­tel die­ser Serie gene­riert wer­den. Wir wer­den uns auf den zwei­ten Daten­satz kon­zen­trie­ren, um Roh­da­ten in ver­ar­bei­tete Daten umzu­wan­deln, und auf den ers­ten Daten­satz, um ver­ar­bei­tete Daten in gekochte Daten umzuwandeln.

KPIs
Key Per­for­mance Indi­ca­tors (KPIs) wer­den ver­wen­det, um den Zustand eines Start­ups zu ver­fol­gen. Es ist wich­tig, Metri­ken zu ver­fol­gen, die das Enga­ge­ment, die Bin­dung und das Wachs­tum erfas­sen, um fest­zu­stel­len, ob die am Pro­dukt vor­ge­nom­me­nen Ände­run­gen von Vor­teil sind. Als Data Sci­en­tist in einem Startup ist es Ihre Auf­gabe, die wich­ti­gen Kenn­zah­len zu ermit­teln, was der Data-Sci­ence-Kom­pe­tenz „Domä­nen­wis­sen“ ent­spricht und einer der Berei­che ist, in denen ein Data Sci­en­tist gro­ßen Ein­fluss haben kann.

KPIs, die von einem frü­hen Daten­wis­sen­schaft­ler fest­ge­legt wer­den, kön­nen einen durch­schla­gen­den Ein­fluss haben. Viele der Unter­neh­men, bei denen ich gear­bei­tet habe, hat­ten bei­spiels­weise Unter­neh­mens­ziele, die auf frü­he­ren Ana­ly­sen von Daten­wis­sen­schaft­lern basier­ten. Bei Elec­tro­nic Arts kon­zen­trier­ten wir uns auf die Ver­bes­se­rung der Sit­zungs­me­tri­ken, bei Twitch woll­ten wir die Menge der ange­se­he­nen Inhalte maxi­mie­ren und bei Sony Online Enter­tain­ment woll­ten wir die Reten­ti­ons­me­tri­ken für Free-to-Play-Titel ver­bes­sern. Dies waren Metri­ken aus der Spie­le­bran­che, aber es gibt auch all­ge­mei­nere Metri­ken wie Enga­ge­ment, Wachs­tum und Mone­ta­ri­sie­rung, die beim Auf­bau eines Unter­neh­mens wich­tig sind.

Beim Auf­bau einer Data-Sci­ence-Dis­zi­plin in einem Startup ist es wich­tig, sicher­zu­stel­len, dass das Team an hoch­wirk­sa­men Auf­ga­ben arbei­tet. Eines der Pro­bleme, die ich bei frü­he­ren Unter­neh­men gese­hen habe, ist, dass Daten­wis­sen­schaft­ler in die Arbeit der Daten­tech­nik und ‑ana­ly­tik hin­ein­ge­zo­gen wer­den. Das ist zu erwar­ten, wenn es nur eine Daten­per­son im Unter­neh­men gibt, aber man möchte nicht zu viele manu­elle Daten­pro­zesse unter­stüt­zen, die sich nicht ska­lie­ren las­sen. Aus die­sem Grund ist es wich­tig, repro­du­zier­bare Ansätze für die Bericht­erstat­tung und Ana­lyse zu ent­wi­ckeln. Es sollte tri­vial sein, eine Ana­lyse nach Mona­ten zu wie­der­ho­len, und es sollte mög­lich sein, dass ein ande­res Team­mit­glied dies mit mini­ma­ler Anlei­tung tun kann.

Mein wich­tigs­ter Rat für neue Data Sci­en­tists, um zu ver­hin­dern, dass sie mit Anfra­gen von Pro­dukt­ma­na­gern und ande­ren Teams über­häuft wer­den, ist die Ein­rich­tung einer Schnitt­stelle zum Data-Sci­ence-Team, die direkte Anfra­gen puf­fert. Anstatt dass jeder im Unter­neh­men das Data-Sci­ence-Team fra­gen kann, wie die Dinge lau­fen, sollte eine Grund­aus­stat­tung an Dash­boards ein­ge­rich­tet wer­den, um die Pro­dukt­leis­tung zu ver­fol­gen. Da ein Data Sci­en­tist eine der ers­ten Daten­funk­tio­nen in einem Startup sein kann, liegt diese Ver­ant­wor­tung zunächst beim Data Sci­en­tist, und es ist wich­tig, mit einer Reihe von ver­schie­de­nen Tools ver­traut zu sein, um diese Funk­tion in einem Startup zu unterstützen.

Bericht­erstel­lung mit R
Einer der wich­tigs­ten Schritte, die Sie als Daten­wis­sen­schaft­ler in einem Startup unter­neh­men kön­nen, ist die Umstel­lung von manu­el­len Bericht­erstat­tungs­pro­zes­sen auf repro­du­zier­bare Berichte. R ist eine leis­tungs­starke Pro­gram­mier­spra­che für diese Art von Arbeit und kann auf ver­schie­dene Weise ver­wen­det wer­den, um auto­ma­ti­sierte Berichts­funk­tio­nen bereit­zu­stel­len. In die­sem Abschnitt wird die Ver­wen­dung von R zur Erstel­lung von Dia­gram­men, Berich­ten und inter­ak­ti­ven Web­an­wen­dun­gen erläu­tert. Obwohl viele die­ser Funk­tio­nen auch von Python und der Jupy­ter-Suite bereit­ge­stellt wer­den, ist der Fokus auf die Auto­ma­ti­sie­rung wich­ti­ger als die Spra­che, die zum Errei­chen die­ses Ziels ver­wen­det wird.

Es ist mög­lich, einige die­ser Funk­tio­nen mit Excel oder Google Sheets zu errei­chen, aber ich würde von die­sem Ansatz für ein Startup abra­ten. Diese Tools eig­nen sich her­vor­ra­gend für die Erstel­lung von Dia­gram­men für Prä­sen­ta­tio­nen, aber nicht für die auto­ma­ti­sierte Bericht­erstel­lung. Es ist für einen Daten­wis­sen­schaft­ler nicht trag­bar, ein Startup auf der Grund­lage die­ser Art von Berich­ten zu unter­stüt­zen, da so viele manu­elle Schritte erfor­der­lich sein kön­nen. Kon­nek­to­ren wie ODBC in Excel mögen für die Auto­ma­ti­sie­rung nütz­lich erschei­nen, funk­tio­nie­ren aber wahr­schein­lich nicht, wenn man ver­sucht, Berichte auf einem ande­ren Rech­ner auszuführen.

Die­ser Abschnitt behan­delt drei Ansätze zur Erstel­lung von Berich­ten mit R: die direkte Ver­wen­dung von R zur Erstel­lung von Dia­gram­men, die Ver­wen­dung von R Mark­down zur Erstel­lung von Berich­ten und die Ver­wen­dung von Shiny zur Erstel­lung inter­ak­ti­ver Visua­li­sie­run­gen. Der gesamte in die­sem Abschnitt auf­ge­führte Code ist auf Git­hub verfügbar.

Basis‑R
Stel­len Sie sich ein Sze­na­rio vor, in dem Sie Teil eines New Yor­ker Start­ups im Trans­port­sek­tor sind und her­aus­fin­den möch­ten, wel­che Art von Bezahl­sys­tem Sie ver­wen­den soll­ten, um das Poten­zial einer wach­sen­den Nut­zer­ba­sis zu maxi­mie­ren. Glück­li­cher­weise gibt es einen öffent­li­chen Daten­satz, der bei der Beant­wor­tung die­ser Art von Fra­gen hel­fen kann: Der öffent­li­che Daten­satz NYC Taxi and Limou­sine Trips von Big­Query. Diese Samm­lung von Fahr­ten­da­ten ent­hält Infor­ma­tio­nen über Zah­lun­gen, die Sie ver­wen­den kön­nen, um die Nut­zung von Zah­lungs­ar­ten im Laufe der Zeit zu beobachten.

Der erste Ansatz, den wir zur Beant­wor­tung die­ser Frage ver­wen­den wer­den, ist die Ver­wen­dung einer Plot-Biblio­thek in R zur Erstel­lung eines Plots. Ich emp­fehle die Ver­wen­dung der RStu­dio-IDE für die­sen Ansatz. Außer­dem ist die­ser Ansatz nicht wirk­lich „Base R“, da ich zwei zusätz­li­che Biblio­the­ken ver­wende, um das Ziel der Zusam­men­fas­sung die­ses Daten­sat­zes und der Dar­stel­lung der Ergeb­nisse zu errei­chen. Ich bezeichne die­sen Abschnitt als „Base R“, weil ich die inte­grier­ten Visua­li­sie­rungs­funk­tio­nen von R verwende.

Einer der groß­ar­ti­gen Aspekte von R ist, dass es eine Viel­zahl ver­schie­de­ner Biblio­the­ken für die Arbeit mit unter­schied­li­chen Arten von Daten­ban­ken gibt. Die bigrquery-Biblio­thek bie­tet einen nütz­li­chen Kon­nek­tor zu Big­Query, der ver­wen­det wer­den kann, um Daten aus dem öffent­li­chen Daten­satz inner­halb eines R‑Skripts zu zie­hen. Der Code für die Zusam­men­fas­sung des Zah­lungs­ver­laufs im Laufe der Zeit und die Dar­stel­lung der Ergeb­nisse in einem Dia­gramm wird unten gezeigt.

library(bigrquery)
library(plotly)
project <- "your_project_id"
sql <- "SELECT  
  substr(cast(pickup_datetime as String), 1, 7) as date
  ,payment_type as type 
  ,sum(total_amount) as amount
FROM `nyc-tlc.yellow.trips`
group by 1, 2"
df <- query_exec(sql, project = project, use_legacy_sql = FALSE)
plot_ly(df, x = ~date, y = ~amount, color = ~type) %>% add_lines() 

Der erste Teil die­ses Skripts, der alles bis auf die letzte Zeile ent­hält, ist für das Abru­fen der Daten aus Big­Query ver­ant­wort­lich. Er lädt die erfor­der­li­chen Biblio­the­ken, gibt eine Abfrage an, die aus­ge­führt wer­den soll, und ver­wen­det bigrquery, um die Ergeb­nis­menge abzu­ru­fen. Sobald die Daten in einen Daten­rah­men gezo­gen wur­den, ver­wen­det der zweite Teil des Skripts die Plotly-Biblio­thek, um die Ergeb­nisse in einem Lini­en­dia­gramm anzu­zei­gen. Einige zusätz­li­che For­ma­tie­rungs­schritte wur­den aus dem Skript aus­ge­klam­mert, und die voll­stän­dige Code­liste ist auf Git­hub ver­füg­bar. In RStu­dio wird das Dia­gramm als inter­ak­ti­ves Dia­gramm in der IDE ange­zeigt, und Jupy­ter bie­tet ähn­li­che Funk­tio­nen. Das Ergeb­nis die­ses Code­schnip­sels ist im fol­gen­den Dia­gramm zu sehen.

Die Abfrage berech­net die monat­li­chen Gesamt­aus­ga­ben nach Zah­lungs­art für Taxi­fahr­ten in NYC anhand von Daten aus den Jah­ren 2009 bis 2015. Die Ergeb­nisse zei­gen, dass Kre­dit­kar­ten (CRD) jetzt die bevor­zugte Zah­lungs­me­thode gegen­über Bar­geld (CSH) sind. Um die anfäng­li­che Frage zu beant­wor­ten, wel­che Art von Bezahl­sys­tem man ein­füh­ren sollte, würde ich emp­feh­len, mit einem Sys­tem zu begin­nen, das Kre­dit­kar­ten akzeptiert.

Ein Thema, das an die­ser Stelle ange­spro­chen wer­den sollte, ist die Daten­qua­li­tät, da das Dia­gramm eine Reihe ver­schie­de­ner Bezeich­nun­gen ent­hält, die schein­bar die­sel­ben Werte dar­stel­len. So bezie­hen sich bei­spiels­weise CAS und CSH wahr­schein­lich beide auf Bar­zah­lun­gen und soll­ten zusam­men­ge­fasst wer­den, um eine genaue Gesamt­summe der Bar­zah­lun­gen zu erhal­ten. Die Behand­lung die­ser Art von Pro­ble­men liegt außer­halb des Rah­mens die­ses Ansat­zes, aber es gibt ein paar Metho­den, die für diese Art von Sze­na­rio ver­wen­det wer­den kön­nen. Der ein­fachste, aber am wenigs­ten ska­lier­bare Ansatz besteht darin, Abfra­gen zu schrei­ben, die diese ver­schie­de­nen Arten berücksichtigen:

,sum(case when payment_type in ('CSH', 'CAS') then amount else 0 end) as cash_payments

Ein ande­rer Ansatz, der ver­wen­det wer­den kann, ist die Erstel­lung einer Dimen­si­ons­ta­belle, die alle raw pay­men­t_­type-Werte auf berei­nigte Typ­werte abbil­det. Die­ser Pro­zess wird oft als Attri­bu­tan­rei­che­rung bezeich­net und ist nütz­lich, wenn aus Roh­da­ten oder ver­ar­bei­te­ten Daten gekochte Daten­sätze erstellt werden.

Wir haben die erste Frage nach der beliebtesten Zah­lungs­me­thode beant­wor­tet, aber was ist, wenn wir eine zweite Frage danach haben, ob der Trans­port­markt in New York wächst oder nicht? Zur Beant­wor­tung die­ser Frage kön­nen wir mit­hilfe des vor­han­de­nen Daten­sat­zes ganz ein­fach Daten aufzeichnen:

total <- aggregate(df$Amount, by=list(Category=df$Date), FUN=sum)
plot_ly(total, x = ~Category, y = ~x) %>% add_lines()

Die­ser Code berech­net die monat­li­chen Gesamt­zah­lun­gen für alle ver­schie­de­nen Zah­lungs­ar­ten und stellt den Gesamt­wert in einem ein­zi­gen Lini­en­dia­gramm dar. Die Ergeb­nisse sind in der fol­gen­den Abbil­dung dar­ge­stellt. Nach der ers­ten Betrach­tung die­ser Daten ist die Ant­wort auf die zweite Frage unklar. Die Aus­ga­ben für Taxis in New York City sind von 2009 bis 2013 mit sai­so­na­len Schwan­kun­gen ste­tig gestie­gen, erreich­ten aber im Som­mer 2014 ihren Höhe­punkt. Es ist mög­lich, dass Uber und Lyft für die­sen Trend ver­ant­wort­lich sind, aber es sind wei­tere Ana­ly­sen erfor­der­lich, um eine ein­deu­tige Schluss­fol­ge­rung zu ziehen.

In die­sem Abschnitt wurde gezeigt, wie man R ver­wen­det, um Dia­gramme aus zusam­men­ge­fass­ten Daten in Big­Query zu erstel­len. Wäh­rend in die­sem Bei­spiel ein fes­ter Daten­satz ver­wen­det wurde, könnte der­selbe Ansatz mit einem Live-Daten­satz ver­wen­det wer­den, der im Laufe der Zeit wächst, und eine erneute Aus­füh­rung des Skripts wird neuere Daten ent­hal­ten. Dies ist noch keine auto­ma­ti­sierte Bericht­erstel­lung, da der Code manu­ell in einer IDE oder einem Note­book aus­ge­führt wer­den muss. Ein mög­li­cher Ansatz ist die Aus­gabe des Plots in eine Bild­da­tei und die Aus­füh­rung des Skripts als Teil eines Cron-Jobs. Das Ergeb­nis die­ses Ansat­zes ist ein Bild des Plots, das in regel­mä­ßi­gen Abstän­den aktua­li­siert wird. Dies ist ein guter Aus­gangs­punkt, aber es gibt ele­gan­tere Lösun­gen für die auto­ma­ti­sche Bericht­erstel­lung in R.

R Mark­down
Neh­men wir an, Sie möch­ten die­selbe Ana­lyse wie zuvor durch­füh­ren, aber jedes Mal, wenn Sie das Skript aus­füh­ren, einen Bericht erstel­len. R Mark­down bie­tet diese Mög­lich­keit und kann R‑Code ver­wen­den, um PDFs, Word-Doku­mente (DOCX) und Web­sei­ten (HTML) zu erzeu­gen. Sie kön­nen sogar Bücher mit R Mark­down schrei­ben! R Mark­down erwei­tert den Stan­dard Mark­down um die Unter­stüt­zung von Inline-R-Snip­pets, die zur Erzeu­gung von Visua­li­sie­run­gen ver­wen­det wer­den kön­nen. Der ein­ge­bet­tete R‑Code kann fast jede Stan­dard-R-Funk­tio­na­li­tät aus­füh­ren, ein­schließ­lich der Ver­wen­dung von R‑Bibliotheken und der Her­stel­lung von Ver­bin­dun­gen zu Daten­ban­ken. Das bedeu­tet, dass wir den obi­gen Code in eine R‑Mark­down-Datei kon­ver­tie­ren und das Skript regel­mä­ßig aus­füh­ren kön­nen, um auto­ma­ti­sierte Berichte zu erstellen.

Das fol­gende Mark­down-Snip­pet ist der vor­he­rige R‑Code, der nun in einen Bericht ein­ge­bet­tet ist, der eine HTML-Datei als Aus­gabe erzeugt. Der erste Teil der Datei besteht aus Meta­da­ten über den Bericht, ein­schließ­lich der gewünsch­ten Aus­gabe. Als nächs­tes wird Mark­down ver­wen­det, um dem Bericht Kom­men­tare hin­zu­zu­fü­gen. Und schließ­lich wird ein R‑Codeblock ver­wen­det, um Daten aus Big­Query zu zie­hen und die Ergeb­nisse dar­zu­stel­len. Das resul­tie­rende Plotly-Objekt wird in das Doku­ment ein­ge­bet­tet, wenn die­ser Bericht aus­ge­führt wird.

---
title: "Business Intelligence"
author: "Ben Weber"
date: "May 21, 2018"
output: html_document
---
## Taxi Payments 
R Markdown can outputs reports as PDF or HTML.
```{r echo=FALSE, message=FALSE, warning=FALSE}
library(bigrquery)
library(plotly)
project <- "your_project_id"
sql <- "SELECT  
  substr(cast(pickup_datetime as String), 1, 7) as date
  ,payment_type as type 
  ,sum(total_amount) as amount
FROM `nyc-tlc.yellow.trips`
group by 1, 2"
df <- query_exec(sql, project = project, use_legacy_sql = FALSE)
plot_ly(df, x = ~date, y = ~amount, color = ~type) %>% add_lines()
```

Das resul­tie­rende HTML-Doku­ment ist in der fol­gen­den Abbil­dung dar­ge­stellt. Es ent­hält das­selbe Dia­gramm wie zuvor sowie den vor dem Code­block auf­ge­führ­ten Mark­down-Text. Diese Aus­gabe kann nütz­li­cher sein als ein Bild, da die in die Datei ein­ge­bet­te­ten Plotly-Dia­gramme inter­ak­tiv sind und nicht als Bil­der ger­en­dert wer­den. Es ist auch nütz­lich für die Erstel­lung von Berich­ten mit einer Viel­zahl von ver­schie­de­nen Dia­gram­men und Metriken.

Um die Erstel­lung die­ses Berichts zu auto­ma­ti­sie­ren, kön­nen Sie wie­derum einen Cron-Job ein­rich­ten. Der Befehl zur Kon­ver­tie­rung der Rmd-Datei in einen Bericht lautet:

Rscript -e "rmarkdown::render('BI.Rmd')"

Wir haben jetzt eine Mög­lich­keit, Berichte zu erstel­len, und kön­nen cron ver­wen­den, um mit dem Auf­bau einer auto­ma­ti­sier­ten Berichts­lö­sung zu begin­nen. Aller­dings haben wir noch keine Dia­gramme mit Fil­ter- und Drilldown-Funktionen.

R Shiny
Shiny ist eine Lösung zur Erstel­lung von Dash­boards direkt in R. Es bie­tet Funk­tio­nen zur Erstel­lung von Berich­ten mit Fil­ter- und Drill­down-Funk­tio­nen und kann als Alter­na­tive zu Tools wie Tableau ver­wen­det wer­den. Bei der Ver­wen­dung von Shiny legen Sie die in den Bericht auf­zu­neh­men­den UI-Kom­po­nen­ten und die Ver­hal­tens­wei­sen für ver­schie­dene Kom­po­nen­ten in einem Bericht fest, z. B. die Anwen­dung eines Fil­ters auf der Grund­lage von Ände­run­gen an einer Schie­be­reg­ler-Kom­po­nente. Das Ergeb­nis ist eine inter­ak­tive Web­an­wen­dung, die Ihren ein­ge­bet­te­ten R‑Code aus­füh­ren kann.

Ich habe eine Shiny-Bei­spiel­an­wen­dung erstellt, die auf dem­sel­ben Code wie die oben genann­ten Berichte basiert. Der erste Teil des Codes ist der glei­che, wir zie­hen Daten aus Big­Query in einen Daten­rah­men, aber wir bin­den auch die Shiny-Biblio­thek ein. Der zweite Teil des Codes defi­niert das Ver­hal­ten der ver­schie­de­nen Kom­po­nen­ten (Ser­ver) und das Lay­out der ver­schie­de­nen Kom­po­nen­ten (Benut­zer­ober­flä­che). Diese Funk­tio­nen wer­den an den shi­n­yApp-Auf­ruf über­ge­ben, um das Dash­board zu starten.

library(shiny)
library(bigrquery)
library(plotly)
project <- "your_project_id"
sql <- "SELECT  
substr(cast(pickup_datetime as String), 1, 7) as date
,payment_type as type 
,sum(total_amount) as amount
FROM `nyc-tlc.yellow.trips`
group by 1, 2"
df <- query_exec(sql, project = project, use_legacy_sql = FALSE)
server <- function(input, output) {
  output$plot <-  renderPlotly({
    plot_ly(df[df$date >= input$year, ], x = ~date, 
      y = ~amount, color = ~type) %>% add_lines()
  })
}
ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      sliderInput("year", "Start Year:", 
        min = 2009, max = 2015, value = 2012)
    ),
    mainPanel(plotlyOutput("plot"))
  )
))
shinyApp(ui = ui, server = server)

Die UI-Funk­tion legt fest, wie die Kom­po­nen­ten im Dash­board ange­ord­net wer­den sol­len. Ich begann mit dem Hello Shiny-Bei­spiel, das einen Schie­be­reg­ler und ein His­to­gramm ent­hält, und änderte das Lay­out, um ein plot­ly­Out­put-Objekt anstelle eines plo­t­Out­puts zu ver­wen­den. Der Schie­be­reg­ler gibt die Jahre an, die zur Aus­wahl ste­hen sol­len, und legt einen Stan­dard­wert fest. Die Ver­hal­tens­funk­tion legt fest, wie auf Ände­run­gen in den UI-Kom­po­nen­ten reagiert wer­den soll. Der Plot ist der­selbe wie das Beha­vior, mit einer Ände­rung: Er fil­tert jetzt nach den Start­da­ten, wenn der Daten­rah­men df$date >= input$year ver­wen­det wird. Das Ergeb­nis ist das unten gezeigte inter­ak­tive Dash­board. Durch Ver­schie­ben des Schie­be­reg­lers wer­den nun die Jahre gefil­tert, die im Dia­gramm ent­hal­ten sind.

Wenn Sie inter­ak­tive Dash­boards benö­ti­gen, ist Shiny ein groß­ar­ti­ges Tool, das Sie erkun­den soll­ten. Wenn Sie hin­ge­gen sta­ti­sche Berichte erstel­len möch­ten, ist R Mark­down eine groß­ar­tige Lösung. Einer der Haupt­vor­teile die­ser bei­den Ansätze besteht darin, dass Sie kom­plexe R‑Logik in Ihre Dia­gramme ein­bet­ten kön­nen, z. B. mit­hilfe der Pro­phe­ten­bi­blio­thek von Face­book, um Ihren Dia­gram­men Pro­gno­se­werte hinzuzufügen.

ETLs
Im Bei­trag über Daten­pipe­lines habe ich die Ver­wen­dung von Roh­da­ten, ver­ar­bei­te­ten Daten und auf­be­rei­te­ten Daten bespro­chen. Die meis­ten Berichte, die für Busi­ness Intel­li­gence ver­wen­det wer­den, soll­ten auf auf­be­rei­te­ten Daten basie­ren, bei denen die Daten agg­re­giert, ange­rei­chert und berei­nigt sind. Wenn Sie bei der Erstel­lung von Berich­ten ver­ar­bei­tete oder Roh­da­ten anstelle von auf­be­rei­te­ten Daten ver­wen­den, wer­den Sie schnell auf Leis­tungs­pro­bleme in Ihrer Berichts-Pipe­line sto­ßen. Anstatt bei­spiels­weise die Tabelle nyc-tlc.yellow.trips direkt im obi­gen R‑Abschnitt zu ver­wen­den, hätte ich eine Tabelle mit den vor­be­rech­ne­ten Aggre­gat­wer­ten erstel­len können.

ETL ist eine Abkür­zung für Extract-Trans­form-Load. Eine der Haupt­an­wen­dun­gen die­ser Art von Pro­zes­sen ist die Umwand­lung von Roh­da­ten in ver­ar­bei­tete Daten oder von ver­ar­bei­te­ten Daten in auf­be­rei­tete Daten, wie z. B. Aggre­gats­ta­bel­len. Eine der größ­ten Her­aus­for­de­run­gen bei der Ein­rich­tung von Aggre­gats­ta­bel­len besteht darin, die Tabel­len auf dem neu­es­ten Stand zu hal­ten und genau zu sein. Wenn Sie bei­spiels­weise damit begin­nen, Bar­zah­lun­gen unter Ver­wen­dung einer neuen Abkür­zung (z. B. CAH) zu erfas­sen, müs­sen Sie den Aggre­ga­ti­ons­pro­zess, der die monat­li­chen Bar­zah­lun­gen berech­net, aktua­li­sie­ren, um diese neue Zah­lungs­art einzubeziehen.

Eine der Aus­ga­ben der Daten­pipe­line ist eine Tabelle mit Roh­ereig­nis­sen, die Daten für alle Ver­fol­gungs­er­eig­nisse als JSON kodiert ent­hält. Eine der Arten von ETL-Pro­zes­sen, die wir ein­rich­ten kön­nen, ist eine Trans­for­ma­tion von Roh­da­ten in ver­ar­bei­tete Daten. In Big­Query kann dies für das Anmel­de­ereig­nis wie folgt imple­men­tiert werden:

create table tracking.logins as (
  select eventVersion,server_time 
    ,JSON_EXTRACT_SCALAR(message, '$.userID') as userID
    ,JSON_EXTRACT_SCALAR(message, '$.deviceType') as deviceType
  from tracking.raw_events
  where eventType = 'Login'
)

Diese Abfrage fil­tert die Anmel­de­ereig­nisse in der Roh-Ereig­nis­ta­belle und ver­wen­det die Ska­lar­funk­tion JSON extract, um Ele­mente aus der JSON-Nach­richt zu ana­ly­sie­ren. Das Ergeb­nis der Aus­füh­rung die­ser DDL-Anwei­sung ist eine neue Tabelle im Track­ing-Schema, die alle Anmel­de­da­ten ent­hält. Wir haben nun ver­ar­bei­tete Daten für Anmel­dun­gen mit den Attri­bu­ten userID und device­Type, die direkt abge­fragt wer­den können.

In der Pra­xis wer­den wir eine Tabelle wie diese schritt­weise auf­bauen wol­len, wobei nur neue Daten trans­for­miert wer­den, die seit dem letz­ten Durch­lauf des ETL-Pro­zes­ses ein­ge­gan­gen sind. Wir kön­nen diese Funk­tio­na­li­tät mit dem im fol­gen­den SQL-Code gezeig­ten Ansatz errei­chen. Anstatt eine neue Tabelle zu erstel­len, fügen wir in eine bestehende Tabelle ein. Mit Big­Query müs­sen Sie die Spal­ten für eine Ein­fü­ge­ope­ra­tion ange­ben. Als Nächs­tes suchen wir nach dem letz­ten Zeit­punkt, an dem die Anmel­de­ta­belle aktua­li­siert wurde, was als update­Time-Wert dar­ge­stellt wird. Und schließ­lich ver­wen­den wir die­ses Ergeb­nis, um nur die Anmel­de­ereig­nisse zu ver­knüp­fen, die seit der letz­ten Aktua­li­sie­rung ein­ge­tre­ten sind. Diese Roh­ereig­nisse wer­den in ver­ar­bei­tete Ereig­nisse umge­wan­delt und der Anmel­de­ta­belle hinzugefügt.

insert into tracking.logins
    (eventVersion,server_time, userID, deviceType)
with lastUpdate as (
  select max(server_time) as updateTime
  from tracking.logins
)
select eventVersion,server_time 
  ,JSON_EXTRACT_SCALAR(message, '$.userID') as userID
  ,JSON_EXTRACT_SCALAR(message, '$.deviceType') as deviceType
from tracking.raw_events e
join lastUpdate l 
  on e.server_time > updateTime
where eventType = 'Login'

Ein ähn­li­cher Ansatz kann ver­wen­det wer­den, um gekochte Daten aus ver­ar­bei­te­ten Daten zu erstel­len. Das Ergeb­nis des obi­gen Login-ETL ist, dass wir jetzt die Fel­der userID und device­Type direkt abfra­gen kön­nen. Mit die­sen ver­ar­bei­te­ten Daten ist es ganz ein­fach, nütz­li­che Metri­ken wie die täg­lich akti­ven Nut­zer (DAU) nach Platt­form zu berech­nen. Ein Bei­spiel für die Berech­nung die­ser Metrik in Big­Query wird unten gezeigt.

create table metrics.dau as (
  select substr(server_time, 1, 10) as Date
    ,deviceType, count(distinct userID) as DAU
  from `tracking.logins` 
  group by 1, 2
  order by 1, 2
)

Das Ergeb­nis die­ser Abfrage ist eine neue Tabelle mit der vor­be­rech­ne­ten DAU-Metrik. Ein Bei­spiel für diese Daten ist in der Tabelle „Gekochte Daten“ zu sehen. Ähn­lich wie bei der vor­an­ge­gan­ge­nen ETL wür­den wir in der Pra­xis diese Metrik-Tabelle mit einem inkre­men­tel­len Ansatz auf­bauen wol­len, anstatt sie mit dem kom­plet­ten Daten­satz neu zu erstel­len. Hier müsste ein etwas ande­rer Ansatz gewählt wer­den, da die DAU-Werte für den aktu­el­len Tag mehr­fach aktua­li­siert wer­den müss­ten, wenn die ETL im Laufe des Tages mehr­fach aus­ge­führt wird.

Sobald Sie eine Reihe von ETLs für Ihre Daten­pipe­line haben, müs­sen Sie diese so pla­nen, dass sie regel­mä­ßig aus­ge­führt wer­den. Ein Ansatz, den Sie wäh­len kön­nen, ist die Ver­wen­dung von cron, um Auf­ga­ben ein­zu­rich­ten, wie z. B.

bq query --flagfile=/etls/login_etl.sql

Es ist wich­tig, eine Über­wa­chung für Pro­zesse wie die­sen ein­zu­rich­ten, da ein Feh­ler zu einem frü­hen Zeit­punkt in einer Daten­pipe­line erheb­li­che nach­ge­la­gerte Aus­wir­kun­gen haben kann. Tools wie Air­flow kön­nen für den Auf­bau kom­ple­xer Daten­pipe­lines ver­wen­det wer­den und bie­ten Über­wa­chungs- und Warnfunktionen.

Tools für die Bericht­erstel­lung
R bie­tet zwar nütz­li­che Tools für die Durch­füh­rung von Busi­ness Intel­li­gence-Auf­ga­ben, ist aber nicht immer das beste Tool für die Erstel­lung auto­ma­ti­sier­ter Berichte. Dies ist häu­fig der Fall, wenn Report­ing-Tools sowohl von tech­ni­schen als auch von nicht-tech­ni­schen Anwen­dern genutzt wer­den müs­sen. Lösun­gen von Anbie­tern zur Erstel­lung von Dash­boards sind für diese Art von Sze­na­rien oft nütz­lich. Hier sind ein paar der ver­schie­de­nen Tools, die ich in der Ver­gan­gen­heit ver­wen­det habe.

Google Data Stu­dio
Wenn Sie bereits GCP ver­wen­den, soll­ten Sie Google Data Stu­dio für die Erstel­lung von Dash­boards zur gemein­sa­men Nut­zung in Ihrem Unter­neh­men aus­pro­bie­ren. Es ist jedoch etwas kom­pli­zier­ter als andere Tools, daher soll­ten Sie mit der Erstel­lung von Dash­boards war­ten, bis Sie eine weit­ge­hend voll­stän­dige Spe­zi­fi­ka­tion der zu erstel­len­den Berichte haben.

Das obige Bild zeigt, wie man eine benut­zer­de­fi­nierte Abfrage in Google Data Stu­dio ein­rich­tet, um die glei­chen Daten­sätze wie in den R‑Berichten zu erhal­ten. Der glei­che Bericht wie zuvor, jetzt mit Data Stu­dio imple­men­tiert, wird unten gezeigt.

Der Haupt­vor­teil die­ses Tools besteht darin, dass es viele der Funk­tio­nen für die Zusam­men­ar­beit bie­tet, die in ande­ren Tools wie Google Docs und Google Sheets ent­hal­ten sind. Außer­dem wer­den die Berichte bei Bedarf aktua­li­siert, um zu ver­hin­dern, dass die Daten ver­al­ten, aller­dings ste­hen nur begrenzte Pla­nungs­op­tio­nen zur Verfügung.

Tableau
Eines der bes­ten Visua­li­sie­rungs­tools, die ich ver­wen­det habe, ist Tableau. Es eig­net sich gut für die Erstel­lung von Dash­boards, wenn Sie eine voll­stän­dige Spe­zi­fi­ka­tion haben, und für die Erstel­lung inter­ak­ti­ver Visua­li­sie­run­gen bei der Durch­füh­rung explo­ra­ti­ver Ana­ly­sen. Die Heat­map für DC Uni­verse Online wurde mit Tableau erstellt und ist eine von vie­len ver­schie­de­nen Arten von Visua­li­sie­run­gen, die erstellt wer­den können.

Der Haupt­vor­teil von Tableau ist die Benut­zer­freund­lich­keit bei der Erstel­lung von Visua­li­sie­run­gen und der Erkun­dung neuer Daten­sätze. Der größte Nach­teil ist der Preis für die Lizen­zen und das Feh­len von ETL-Tools, da der Schwer­punkt auf der Prä­sen­ta­tion und nicht auf Daten­pipe­lines liegt.

Modus
Bei Twitch ver­wen­de­ten wir ein Tool des Anbie­ters namens Mode Ana­ly­tics. Mit Mode war es ein­fach, Abfra­gen mit ande­ren Ana­lys­ten aus­zu­tau­schen, aber die Aus­wahl an Visua­li­sie­rungs­funk­tio­nen war ziem­lich begrenzt, und es kon­zen­trierte sich nur auf die Prä­sen­ta­tion und nicht auf ETL-Aufgaben.

Benut­zer­de­fi­nierte Werk­zeuge
Ein wei­te­rer mög­li­cher Ansatz ist die Erstel­lung benut­zer­de­fi­nier­ter Visua­li­sie­run­gen mit Tools wie D3.js und Pro­to­vis. Bei Elec­tro­nic Arts wurde D3 ver­wen­det, um Kun­den-Dash­boards für Spiele-Teams zu erstel­len, wie z. B. das von Ben Med­ler ent­wi­ckelte Data Cra­cker-Tool zur Visua­li­sie­rung von Spiel­test­da­ten in Dead Space 2.

Die Ver­wen­dung von benut­zer­de­fi­nier­ten Werk­zeu­gen bie­tet die größte Fle­xi­bi­li­tät, erfor­dert aber auch die Pflege eines Sys­tems und ist in der Regel mit wesent­lich mehr Auf­wand verbunden.

Fazit
Eine der wich­tigs­ten Auf­ga­ben eines Data Sci­en­tists in einem Startup ist es, dafür zu sor­gen, dass andere Teams Ihre Pro­dukt­da­ten effek­tiv nut­zen kön­nen. In der Regel geschieht dies in Form von Dash­boar­ding oder ande­ren auto­ma­ti­sier­ten Berich­ten, um KPIs oder andere Metri­ken für ver­schie­dene Teams bereit­zu­stel­len. Dazu gehört auch, dass Sie ermit­teln, wel­che Kenn­zah­len für das Unter­neh­men wich­tig sind.

In die­sem Bei­trag wur­den drei ver­schie­dene Mög­lich­kei­ten für die Erstel­lung auto­ma­ti­sier­ter Berichte in R vor­ge­stellt, von der Erstel­lung von Plots direkt in R über die Ver­wen­dung von R Mark­down zur Erstel­lung von Berich­ten bis hin zur Ver­wen­dung von Shiny zur Erstel­lung von Dash­boards. Wir haben auch erör­tert, wie man ETLs schreibt, um Roh­da­ten in ver­ar­bei­tete Daten und ver­ar­bei­tete Daten in gekochte Daten umzu­wan­deln, damit sie für Berichts­zwe­cke ver­wen­det wer­den kön­nen. Im letz­ten Abschnitt wur­den ver­schie­dene Lösun­gen von Anbie­tern für das Berichts­we­sen und die damit ver­bun­de­nen Kom­pro­misse erörtert.

Nach der Ein­rich­tung von Werk­zeu­gen für Busi­ness Intel­li­gence sind die meis­ten Teile für die Ver­tie­fung von Data-Sci­ence-Arbei­ten vor­han­den. Wir kön­nen über retro­spek­tive Fra­ge­stel­lun­gen hin­aus­ge­hen und zu Pro­gno­sen, Vor­her­sa­ge­mo­del­len und Expe­ri­men­ten übergehen.

Quelle: medium

Erfah­ren Sie mehr über Lösun­gen im Bereich Data Stra­tegy oder besu­chen Sie eines unse­rer kos­ten­lo­sen Web­i­nare.