Ein großer Teil der Arbeit beim Aufbau von Data Science in einem Startup besteht darin, das Produktteam davon zu überzeugen, Daten zu nutzen und sich um sie zu kümmern. Wenn Sie dieses Ziel erreicht haben, besteht der nächste Schritt darin, dass Sie in der Lage sind, alle Arten von Fragen zur Produktgesundheit innerhalb Ihres Unternehmens zu beantworten. Ein unerfahrener Datenwissenschaftler könnte denken, dass diese Art von Arbeit außerhalb der Rolle eines Datenwissenschaftlers liegt, aber die Identifizierung von Schlüsselmetriken für die Produktgesundheit ist eine der Kernfacetten der Rolle.
Ich habe diesen Beitrag als „Business Intelligence“ betitelt, denn sobald Sie eine Datenpipeline eingerichtet haben, wird von einem Data Scientist in einem Startup erwartet, dass er alle Fragen zu Daten beantwortet. Das ist angesichts der neuen Datenflut nicht verwunderlich, aber auch ein Zeitpunkt, an dem ein Datenwissenschaftler Erwartungen an den Rest des Unternehmens stellen muss. Als Datenwissenschaftler in einem Startup ist es nicht Ihre Aufgabe, Datenfragen zu beantworten, sondern die Unternehmensleitung darüber zu informieren, welche Metriken wichtig sein sollten.
In diesem Beitrag geht es um die Grundlagen der Umwandlung von Rohdaten in aufbereitete Daten, die einen Überblick über den Zustand eines Produkts geben können. Ich werde einige verschiedene Ansätze für die Arbeit mit Rohdaten erörtern, darunter SQL-Abfragen, R‑Markdown und Anbieter-Tools. Die allgemeine Erkenntnis ist, dass es mehrere Optionen für die Verarbeitung von Datensätzen gibt, und Sie sollten eine Lösung wählen, die zu den Zielen Ihres Teams passt. Ich werde über frühere Erfahrungen mit Tools wie Tableau sprechen und Empfehlungen für die Skalierung automatisierter Berichte in einem Team geben.
In diesem Beitrag werden wir zwei Datenquellen verwenden. Die erste ist ein öffentlicher Datensatz, den wir aggregieren und mit Schlüsselmetriken zusammenfassen werden. Die zweite sind Daten, die von der Tracking-API im zweiten Kapitel dieser Serie generiert werden. Wir werden uns auf den zweiten Datensatz konzentrieren, um Rohdaten in verarbeitete Daten umzuwandeln, und auf den ersten Datensatz, um verarbeitete Daten in gekochte Daten umzuwandeln.
KPIs
Key Performance Indicators (KPIs) werden verwendet, um den Zustand eines Startups zu verfolgen. Es ist wichtig, Metriken zu verfolgen, die das Engagement, die Bindung und das Wachstum erfassen, um festzustellen, ob die am Produkt vorgenommenen Änderungen von Vorteil sind. Als Data Scientist in einem Startup ist es Ihre Aufgabe, die wichtigen Kennzahlen zu ermitteln, was der Data-Science-Kompetenz „Domänenwissen“ entspricht und einer der Bereiche ist, in denen ein Data Scientist großen Einfluss haben kann.
KPIs, die von einem frühen Datenwissenschaftler festgelegt werden, können einen durchschlagenden Einfluss haben. Viele der Unternehmen, bei denen ich gearbeitet habe, hatten beispielsweise Unternehmensziele, die auf früheren Analysen von Datenwissenschaftlern basierten. Bei Electronic Arts konzentrierten wir uns auf die Verbesserung der Sitzungsmetriken, bei Twitch wollten wir die Menge der angesehenen Inhalte maximieren und bei Sony Online Entertainment wollten wir die Retentionsmetriken für Free-to-Play-Titel verbessern. Dies waren Metriken aus der Spielebranche, aber es gibt auch allgemeinere Metriken wie Engagement, Wachstum und Monetarisierung, die beim Aufbau eines Unternehmens wichtig sind.
Beim Aufbau einer Data-Science-Disziplin in einem Startup ist es wichtig, sicherzustellen, dass das Team an hochwirksamen Aufgaben arbeitet. Eines der Probleme, die ich bei früheren Unternehmen gesehen habe, ist, dass Datenwissenschaftler in die Arbeit der Datentechnik und ‑analytik hineingezogen werden. Das ist zu erwarten, wenn es nur eine Datenperson im Unternehmen gibt, aber man möchte nicht zu viele manuelle Datenprozesse unterstützen, die sich nicht skalieren lassen. Aus diesem Grund ist es wichtig, reproduzierbare Ansätze für die Berichterstattung und Analyse zu entwickeln. Es sollte trivial sein, eine Analyse nach Monaten zu wiederholen, und es sollte möglich sein, dass ein anderes Teammitglied dies mit minimaler Anleitung tun kann.
Mein wichtigster Rat für neue Data Scientists, um zu verhindern, dass sie mit Anfragen von Produktmanagern und anderen Teams überhäuft werden, ist die Einrichtung einer Schnittstelle zum Data-Science-Team, die direkte Anfragen puffert. Anstatt dass jeder im Unternehmen das Data-Science-Team fragen kann, wie die Dinge laufen, sollte eine Grundausstattung an Dashboards eingerichtet werden, um die Produktleistung zu verfolgen. Da ein Data Scientist eine der ersten Datenfunktionen in einem Startup sein kann, liegt diese Verantwortung zunächst beim Data Scientist, und es ist wichtig, mit einer Reihe von verschiedenen Tools vertraut zu sein, um diese Funktion in einem Startup zu unterstützen.
Berichterstellung mit R
Einer der wichtigsten Schritte, die Sie als Datenwissenschaftler in einem Startup unternehmen können, ist die Umstellung von manuellen Berichterstattungsprozessen auf reproduzierbare Berichte. R ist eine leistungsstarke Programmiersprache für diese Art von Arbeit und kann auf verschiedene Weise verwendet werden, um automatisierte Berichtsfunktionen bereitzustellen. In diesem Abschnitt wird die Verwendung von R zur Erstellung von Diagrammen, Berichten und interaktiven Webanwendungen erläutert. Obwohl viele dieser Funktionen auch von Python und der Jupyter-Suite bereitgestellt werden, ist der Fokus auf die Automatisierung wichtiger als die Sprache, die zum Erreichen dieses Ziels verwendet wird.
Es ist möglich, einige dieser Funktionen mit Excel oder Google Sheets zu erreichen, aber ich würde von diesem Ansatz für ein Startup abraten. Diese Tools eignen sich hervorragend für die Erstellung von Diagrammen für Präsentationen, aber nicht für die automatisierte Berichterstellung. Es ist für einen Datenwissenschaftler nicht tragbar, ein Startup auf der Grundlage dieser Art von Berichten zu unterstützen, da so viele manuelle Schritte erforderlich sein können. Konnektoren wie ODBC in Excel mögen für die Automatisierung nützlich erscheinen, funktionieren aber wahrscheinlich nicht, wenn man versucht, Berichte auf einem anderen Rechner auszuführen.
Dieser Abschnitt behandelt drei Ansätze zur Erstellung von Berichten mit R: die direkte Verwendung von R zur Erstellung von Diagrammen, die Verwendung von R Markdown zur Erstellung von Berichten und die Verwendung von Shiny zur Erstellung interaktiver Visualisierungen. Der gesamte in diesem Abschnitt aufgeführte Code ist auf Github verfügbar.
Basis‑R
Stellen Sie sich ein Szenario vor, in dem Sie Teil eines New Yorker Startups im Transportsektor sind und herausfinden möchten, welche Art von Bezahlsystem Sie verwenden sollten, um das Potenzial einer wachsenden Nutzerbasis zu maximieren. Glücklicherweise gibt es einen öffentlichen Datensatz, der bei der Beantwortung dieser Art von Fragen helfen kann: Der öffentliche Datensatz NYC Taxi and Limousine Trips von BigQuery. Diese Sammlung von Fahrtendaten enthält Informationen über Zahlungen, die Sie verwenden können, um die Nutzung von Zahlungsarten im Laufe der Zeit zu beobachten.
Der erste Ansatz, den wir zur Beantwortung dieser Frage verwenden werden, ist die Verwendung einer Plot-Bibliothek in R zur Erstellung eines Plots. Ich empfehle die Verwendung der RStudio-IDE für diesen Ansatz. Außerdem ist dieser Ansatz nicht wirklich „Base R“, da ich zwei zusätzliche Bibliotheken verwende, um das Ziel der Zusammenfassung dieses Datensatzes und der Darstellung der Ergebnisse zu erreichen. Ich bezeichne diesen Abschnitt als „Base R“, weil ich die integrierten Visualisierungsfunktionen von R verwende.
Einer der großartigen Aspekte von R ist, dass es eine Vielzahl verschiedener Bibliotheken für die Arbeit mit unterschiedlichen Arten von Datenbanken gibt. Die bigrquery-Bibliothek bietet einen nützlichen Konnektor zu BigQuery, der verwendet werden kann, um Daten aus dem öffentlichen Datensatz innerhalb eines R‑Skripts zu ziehen. Der Code für die Zusammenfassung des Zahlungsverlaufs im Laufe der Zeit und die Darstellung der Ergebnisse in einem Diagramm 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 dieses Skripts, der alles bis auf die letzte Zeile enthält, ist für das Abrufen der Daten aus BigQuery verantwortlich. Er lädt die erforderlichen Bibliotheken, gibt eine Abfrage an, die ausgeführt werden soll, und verwendet bigrquery, um die Ergebnismenge abzurufen. Sobald die Daten in einen Datenrahmen gezogen wurden, verwendet der zweite Teil des Skripts die Plotly-Bibliothek, um die Ergebnisse in einem Liniendiagramm anzuzeigen. Einige zusätzliche Formatierungsschritte wurden aus dem Skript ausgeklammert, und die vollständige Codeliste ist auf Github verfügbar. In RStudio wird das Diagramm als interaktives Diagramm in der IDE angezeigt, und Jupyter bietet ähnliche Funktionen. Das Ergebnis dieses Codeschnipsels ist im folgenden Diagramm zu sehen.
Die Abfrage berechnet die monatlichen Gesamtausgaben nach Zahlungsart für Taxifahrten in NYC anhand von Daten aus den Jahren 2009 bis 2015. Die Ergebnisse zeigen, dass Kreditkarten (CRD) jetzt die bevorzugte Zahlungsmethode gegenüber Bargeld (CSH) sind. Um die anfängliche Frage zu beantworten, welche Art von Bezahlsystem man einführen sollte, würde ich empfehlen, mit einem System zu beginnen, das Kreditkarten akzeptiert.
Ein Thema, das an dieser Stelle angesprochen werden sollte, ist die Datenqualität, da das Diagramm eine Reihe verschiedener Bezeichnungen enthält, die scheinbar dieselben Werte darstellen. So beziehen sich beispielsweise CAS und CSH wahrscheinlich beide auf Barzahlungen und sollten zusammengefasst werden, um eine genaue Gesamtsumme der Barzahlungen zu erhalten. Die Behandlung dieser Art von Problemen liegt außerhalb des Rahmens dieses Ansatzes, aber es gibt ein paar Methoden, die für diese Art von Szenario verwendet werden können. Der einfachste, aber am wenigsten skalierbare Ansatz besteht darin, Abfragen zu schreiben, die diese verschiedenen Arten berücksichtigen:
,sum(case when payment_type in ('CSH', 'CAS') then amount else 0 end) as cash_payments
Ein anderer Ansatz, der verwendet werden kann, ist die Erstellung einer Dimensionstabelle, die alle raw payment_type-Werte auf bereinigte Typwerte abbildet. Dieser Prozess wird oft als Attributanreicherung bezeichnet und ist nützlich, wenn aus Rohdaten oder verarbeiteten Daten gekochte Datensätze erstellt werden.
Wir haben die erste Frage nach der beliebtesten Zahlungsmethode beantwortet, aber was ist, wenn wir eine zweite Frage danach haben, ob der Transportmarkt in New York wächst oder nicht? Zur Beantwortung dieser Frage können wir mithilfe des vorhandenen Datensatzes ganz einfach Daten aufzeichnen:
total <- aggregate(df$Amount, by=list(Category=df$Date), FUN=sum)
plot_ly(total, x = ~Category, y = ~x) %>% add_lines()
Dieser Code berechnet die monatlichen Gesamtzahlungen für alle verschiedenen Zahlungsarten und stellt den Gesamtwert in einem einzigen Liniendiagramm dar. Die Ergebnisse sind in der folgenden Abbildung dargestellt. Nach der ersten Betrachtung dieser Daten ist die Antwort auf die zweite Frage unklar. Die Ausgaben für Taxis in New York City sind von 2009 bis 2013 mit saisonalen Schwankungen stetig gestiegen, erreichten aber im Sommer 2014 ihren Höhepunkt. Es ist möglich, dass Uber und Lyft für diesen Trend verantwortlich sind, aber es sind weitere Analysen erforderlich, um eine eindeutige Schlussfolgerung zu ziehen.
In diesem Abschnitt wurde gezeigt, wie man R verwendet, um Diagramme aus zusammengefassten Daten in BigQuery zu erstellen. Während in diesem Beispiel ein fester Datensatz verwendet wurde, könnte derselbe Ansatz mit einem Live-Datensatz verwendet werden, der im Laufe der Zeit wächst, und eine erneute Ausführung des Skripts wird neuere Daten enthalten. Dies ist noch keine automatisierte Berichterstellung, da der Code manuell in einer IDE oder einem Notebook ausgeführt werden muss. Ein möglicher Ansatz ist die Ausgabe des Plots in eine Bilddatei und die Ausführung des Skripts als Teil eines Cron-Jobs. Das Ergebnis dieses Ansatzes ist ein Bild des Plots, das in regelmäßigen Abständen aktualisiert wird. Dies ist ein guter Ausgangspunkt, aber es gibt elegantere Lösungen für die automatische Berichterstellung in R.
R Markdown
Nehmen wir an, Sie möchten dieselbe Analyse wie zuvor durchführen, aber jedes Mal, wenn Sie das Skript ausführen, einen Bericht erstellen. R Markdown bietet diese Möglichkeit und kann R‑Code verwenden, um PDFs, Word-Dokumente (DOCX) und Webseiten (HTML) zu erzeugen. Sie können sogar Bücher mit R Markdown schreiben! R Markdown erweitert den Standard Markdown um die Unterstützung von Inline-R-Snippets, die zur Erzeugung von Visualisierungen verwendet werden können. Der eingebettete R‑Code kann fast jede Standard-R-Funktionalität ausführen, einschließlich der Verwendung von R‑Bibliotheken und der Herstellung von Verbindungen zu Datenbanken. Das bedeutet, dass wir den obigen Code in eine R‑Markdown-Datei konvertieren und das Skript regelmäßig ausführen können, um automatisierte Berichte zu erstellen.
Das folgende Markdown-Snippet ist der vorherige R‑Code, der nun in einen Bericht eingebettet ist, der eine HTML-Datei als Ausgabe erzeugt. Der erste Teil der Datei besteht aus Metadaten über den Bericht, einschließlich der gewünschten Ausgabe. Als nächstes wird Markdown verwendet, um dem Bericht Kommentare hinzuzufügen. Und schließlich wird ein R‑Codeblock verwendet, um Daten aus BigQuery zu ziehen und die Ergebnisse darzustellen. Das resultierende Plotly-Objekt wird in das Dokument eingebettet, wenn dieser Bericht ausgefü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 resultierende HTML-Dokument ist in der folgenden Abbildung dargestellt. Es enthält dasselbe Diagramm wie zuvor sowie den vor dem Codeblock aufgeführten Markdown-Text. Diese Ausgabe kann nützlicher sein als ein Bild, da die in die Datei eingebetteten Plotly-Diagramme interaktiv sind und nicht als Bilder gerendert werden. Es ist auch nützlich für die Erstellung von Berichten mit einer Vielzahl von verschiedenen Diagrammen und Metriken.
Um die Erstellung dieses Berichts zu automatisieren, können Sie wiederum einen Cron-Job einrichten. Der Befehl zur Konvertierung der Rmd-Datei in einen Bericht lautet:
Rscript -e "rmarkdown::render('BI.Rmd')"
Wir haben jetzt eine Möglichkeit, Berichte zu erstellen, und können cron verwenden, um mit dem Aufbau einer automatisierten Berichtslösung zu beginnen. Allerdings haben wir noch keine Diagramme mit Filter- und Drilldown-Funktionen.
R Shiny
Shiny ist eine Lösung zur Erstellung von Dashboards direkt in R. Es bietet Funktionen zur Erstellung von Berichten mit Filter- und Drilldown-Funktionen und kann als Alternative zu Tools wie Tableau verwendet werden. Bei der Verwendung von Shiny legen Sie die in den Bericht aufzunehmenden UI-Komponenten und die Verhaltensweisen für verschiedene Komponenten in einem Bericht fest, z. B. die Anwendung eines Filters auf der Grundlage von Änderungen an einer Schieberegler-Komponente. Das Ergebnis ist eine interaktive Webanwendung, die Ihren eingebetteten R‑Code ausführen kann.
Ich habe eine Shiny-Beispielanwendung erstellt, die auf demselben Code wie die oben genannten Berichte basiert. Der erste Teil des Codes ist der gleiche, wir ziehen Daten aus BigQuery in einen Datenrahmen, aber wir binden auch die Shiny-Bibliothek ein. Der zweite Teil des Codes definiert das Verhalten der verschiedenen Komponenten (Server) und das Layout der verschiedenen Komponenten (Benutzeroberfläche). Diese Funktionen werden an den shinyApp-Aufruf übergeben, um das Dashboard 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-Funktion legt fest, wie die Komponenten im Dashboard angeordnet werden sollen. Ich begann mit dem Hello Shiny-Beispiel, das einen Schieberegler und ein Histogramm enthält, und änderte das Layout, um ein plotlyOutput-Objekt anstelle eines plotOutputs zu verwenden. Der Schieberegler gibt die Jahre an, die zur Auswahl stehen sollen, und legt einen Standardwert fest. Die Verhaltensfunktion legt fest, wie auf Änderungen in den UI-Komponenten reagiert werden soll. Der Plot ist derselbe wie das Behavior, mit einer Änderung: Er filtert jetzt nach den Startdaten, wenn der Datenrahmen df$date >= input$year verwendet wird. Das Ergebnis ist das unten gezeigte interaktive Dashboard. Durch Verschieben des Schiebereglers werden nun die Jahre gefiltert, die im Diagramm enthalten sind.
Wenn Sie interaktive Dashboards benötigen, ist Shiny ein großartiges Tool, das Sie erkunden sollten. Wenn Sie hingegen statische Berichte erstellen möchten, ist R Markdown eine großartige Lösung. Einer der Hauptvorteile dieser beiden Ansätze besteht darin, dass Sie komplexe R‑Logik in Ihre Diagramme einbetten können, z. B. mithilfe der Prophetenbibliothek von Facebook, um Ihren Diagrammen Prognosewerte hinzuzufügen.
ETLs
Im Beitrag über Datenpipelines habe ich die Verwendung von Rohdaten, verarbeiteten Daten und aufbereiteten Daten besprochen. Die meisten Berichte, die für Business Intelligence verwendet werden, sollten auf aufbereiteten Daten basieren, bei denen die Daten aggregiert, angereichert und bereinigt sind. Wenn Sie bei der Erstellung von Berichten verarbeitete oder Rohdaten anstelle von aufbereiteten Daten verwenden, werden Sie schnell auf Leistungsprobleme in Ihrer Berichts-Pipeline stoßen. Anstatt beispielsweise die Tabelle nyc-tlc.yellow.trips direkt im obigen R‑Abschnitt zu verwenden, hätte ich eine Tabelle mit den vorberechneten Aggregatwerten erstellen können.
ETL ist eine Abkürzung für Extract-Transform-Load. Eine der Hauptanwendungen dieser Art von Prozessen ist die Umwandlung von Rohdaten in verarbeitete Daten oder von verarbeiteten Daten in aufbereitete Daten, wie z. B. Aggregatstabellen. Eine der größten Herausforderungen bei der Einrichtung von Aggregatstabellen besteht darin, die Tabellen auf dem neuesten Stand zu halten und genau zu sein. Wenn Sie beispielsweise damit beginnen, Barzahlungen unter Verwendung einer neuen Abkürzung (z. B. CAH) zu erfassen, müssen Sie den Aggregationsprozess, der die monatlichen Barzahlungen berechnet, aktualisieren, um diese neue Zahlungsart einzubeziehen.
Eine der Ausgaben der Datenpipeline ist eine Tabelle mit Rohereignissen, die Daten für alle Verfolgungsereignisse als JSON kodiert enthält. Eine der Arten von ETL-Prozessen, die wir einrichten können, ist eine Transformation von Rohdaten in verarbeitete Daten. In BigQuery kann dies für das Anmeldeereignis wie folgt implementiert 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 filtert die Anmeldeereignisse in der Roh-Ereignistabelle und verwendet die Skalarfunktion JSON extract, um Elemente aus der JSON-Nachricht zu analysieren. Das Ergebnis der Ausführung dieser DDL-Anweisung ist eine neue Tabelle im Tracking-Schema, die alle Anmeldedaten enthält. Wir haben nun verarbeitete Daten für Anmeldungen mit den Attributen userID und deviceType, die direkt abgefragt werden können.
In der Praxis werden wir eine Tabelle wie diese schrittweise aufbauen wollen, wobei nur neue Daten transformiert werden, die seit dem letzten Durchlauf des ETL-Prozesses eingegangen sind. Wir können diese Funktionalität mit dem im folgenden SQL-Code gezeigten Ansatz erreichen. Anstatt eine neue Tabelle zu erstellen, fügen wir in eine bestehende Tabelle ein. Mit BigQuery müssen Sie die Spalten für eine Einfügeoperation angeben. Als Nächstes suchen wir nach dem letzten Zeitpunkt, an dem die Anmeldetabelle aktualisiert wurde, was als updateTime-Wert dargestellt wird. Und schließlich verwenden wir dieses Ergebnis, um nur die Anmeldeereignisse zu verknüpfen, die seit der letzten Aktualisierung eingetreten sind. Diese Rohereignisse werden in verarbeitete Ereignisse umgewandelt und der Anmeldetabelle 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 ähnlicher Ansatz kann verwendet werden, um gekochte Daten aus verarbeiteten Daten zu erstellen. Das Ergebnis des obigen Login-ETL ist, dass wir jetzt die Felder userID und deviceType direkt abfragen können. Mit diesen verarbeiteten Daten ist es ganz einfach, nützliche Metriken wie die täglich aktiven Nutzer (DAU) nach Plattform zu berechnen. Ein Beispiel für die Berechnung dieser Metrik in BigQuery 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 Ergebnis dieser Abfrage ist eine neue Tabelle mit der vorberechneten DAU-Metrik. Ein Beispiel für diese Daten ist in der Tabelle „Gekochte Daten“ zu sehen. Ähnlich wie bei der vorangegangenen ETL würden wir in der Praxis diese Metrik-Tabelle mit einem inkrementellen Ansatz aufbauen wollen, anstatt sie mit dem kompletten Datensatz neu zu erstellen. Hier müsste ein etwas anderer Ansatz gewählt werden, da die DAU-Werte für den aktuellen Tag mehrfach aktualisiert werden müssten, wenn die ETL im Laufe des Tages mehrfach ausgeführt wird.
Sobald Sie eine Reihe von ETLs für Ihre Datenpipeline haben, müssen Sie diese so planen, dass sie regelmäßig ausgeführt werden. Ein Ansatz, den Sie wählen können, ist die Verwendung von cron, um Aufgaben einzurichten, wie z. B.
bq query --flagfile=/etls/login_etl.sql
Es ist wichtig, eine Überwachung für Prozesse wie diesen einzurichten, da ein Fehler zu einem frühen Zeitpunkt in einer Datenpipeline erhebliche nachgelagerte Auswirkungen haben kann. Tools wie Airflow können für den Aufbau komplexer Datenpipelines verwendet werden und bieten Überwachungs- und Warnfunktionen.
Tools für die Berichterstellung
R bietet zwar nützliche Tools für die Durchführung von Business Intelligence-Aufgaben, ist aber nicht immer das beste Tool für die Erstellung automatisierter Berichte. Dies ist häufig der Fall, wenn Reporting-Tools sowohl von technischen als auch von nicht-technischen Anwendern genutzt werden müssen. Lösungen von Anbietern zur Erstellung von Dashboards sind für diese Art von Szenarien oft nützlich. Hier sind ein paar der verschiedenen Tools, die ich in der Vergangenheit verwendet habe.
Google Data Studio
Wenn Sie bereits GCP verwenden, sollten Sie Google Data Studio für die Erstellung von Dashboards zur gemeinsamen Nutzung in Ihrem Unternehmen ausprobieren. Es ist jedoch etwas komplizierter als andere Tools, daher sollten Sie mit der Erstellung von Dashboards warten, bis Sie eine weitgehend vollständige Spezifikation der zu erstellenden Berichte haben.
Das obige Bild zeigt, wie man eine benutzerdefinierte Abfrage in Google Data Studio einrichtet, um die gleichen Datensätze wie in den R‑Berichten zu erhalten. Der gleiche Bericht wie zuvor, jetzt mit Data Studio implementiert, wird unten gezeigt.
Der Hauptvorteil dieses Tools besteht darin, dass es viele der Funktionen für die Zusammenarbeit bietet, die in anderen Tools wie Google Docs und Google Sheets enthalten sind. Außerdem werden die Berichte bei Bedarf aktualisiert, um zu verhindern, dass die Daten veralten, allerdings stehen nur begrenzte Planungsoptionen zur Verfügung.
Tableau
Eines der besten Visualisierungstools, die ich verwendet habe, ist Tableau. Es eignet sich gut für die Erstellung von Dashboards, wenn Sie eine vollständige Spezifikation haben, und für die Erstellung interaktiver Visualisierungen bei der Durchführung explorativer Analysen. Die Heatmap für DC Universe Online wurde mit Tableau erstellt und ist eine von vielen verschiedenen Arten von Visualisierungen, die erstellt werden können.
Der Hauptvorteil von Tableau ist die Benutzerfreundlichkeit bei der Erstellung von Visualisierungen und der Erkundung neuer Datensätze. Der größte Nachteil ist der Preis für die Lizenzen und das Fehlen von ETL-Tools, da der Schwerpunkt auf der Präsentation und nicht auf Datenpipelines liegt.
Modus
Bei Twitch verwendeten wir ein Tool des Anbieters namens Mode Analytics. Mit Mode war es einfach, Abfragen mit anderen Analysten auszutauschen, aber die Auswahl an Visualisierungsfunktionen war ziemlich begrenzt, und es konzentrierte sich nur auf die Präsentation und nicht auf ETL-Aufgaben.
Benutzerdefinierte Werkzeuge
Ein weiterer möglicher Ansatz ist die Erstellung benutzerdefinierter Visualisierungen mit Tools wie D3.js und Protovis. Bei Electronic Arts wurde D3 verwendet, um Kunden-Dashboards für Spiele-Teams zu erstellen, wie z. B. das von Ben Medler entwickelte Data Cracker-Tool zur Visualisierung von Spieltestdaten in Dead Space 2.
Die Verwendung von benutzerdefinierten Werkzeugen bietet die größte Flexibilität, erfordert aber auch die Pflege eines Systems und ist in der Regel mit wesentlich mehr Aufwand verbunden.
Fazit
Eine der wichtigsten Aufgaben eines Data Scientists in einem Startup ist es, dafür zu sorgen, dass andere Teams Ihre Produktdaten effektiv nutzen können. In der Regel geschieht dies in Form von Dashboarding oder anderen automatisierten Berichten, um KPIs oder andere Metriken für verschiedene Teams bereitzustellen. Dazu gehört auch, dass Sie ermitteln, welche Kennzahlen für das Unternehmen wichtig sind.
In diesem Beitrag wurden drei verschiedene Möglichkeiten für die Erstellung automatisierter Berichte in R vorgestellt, von der Erstellung von Plots direkt in R über die Verwendung von R Markdown zur Erstellung von Berichten bis hin zur Verwendung von Shiny zur Erstellung von Dashboards. Wir haben auch erörtert, wie man ETLs schreibt, um Rohdaten in verarbeitete Daten und verarbeitete Daten in gekochte Daten umzuwandeln, damit sie für Berichtszwecke verwendet werden können. Im letzten Abschnitt wurden verschiedene Lösungen von Anbietern für das Berichtswesen und die damit verbundenen Kompromisse erörtert.
Nach der Einrichtung von Werkzeugen für Business Intelligence sind die meisten Teile für die Vertiefung von Data-Science-Arbeiten vorhanden. Wir können über retrospektive Fragestellungen hinausgehen und zu Prognosen, Vorhersagemodellen und Experimenten übergehen.
Quelle: medium
Erfahren Sie mehr über Lösungen im Bereich Data Strategy oder besuchen Sie eines unserer kostenlosen Webinare.