Gegeben sei folgende Tabelle user_events:
| Spaltenname | Typ |
|---|---|
| user_id | INTEGER |
| teaser_id | INTEGER |
| event_type | STRING (impression, click, share) |
| timestamp | TIMESTAMP |
| device_type | STRING (mobile, desktop, tablet) |
| country | STRING (DE, FR, US, …) |
Schreibe eine SQL-Query, die für das Jahr 2022 die CTR je teaser_id berechnet:
CTR = Clicks / Impressions
Exemplarische Ausgabe:
| teaser_id | clicks | impressions | ctr |
|---|---|---|---|
| 123 | 450 | 35000 | 0.01 |
| 456 | 789 | 25000 | 0.03 |
| 789 | 123 | 15000 | 0.01 |
Schreibe eine SQL-Query, die für jede teaser_id die CTR in den Top-2-Ländern (nach Klicks) berechnet und die prozentuale CTR-Differenz zwischen diesen beiden Ländern ermittelt.
Exemplarische Ausgabe:
| teaser_id | top_country_1 | ctr_country_1 | top_country_2 | ctr_country_2 | ctr_diff |
|---|---|---|---|---|---|
| 123 | DE | 0.045 | US | 0.032 | 28.88 |
| 456 | FR | 0.038 | DE | 0.035 | 7.89 |
| 789 | FR | 0.026 | DE | 0.015 | 42.31 |
Anforderungen:
- Nur Daten aus dem Jahr 2022 berücksichtigen
- Nur Teaser berücksichtigen, die mindestens 2 Länder haben
Ein Python-Lambda empfängt über SNS eine Nachricht mit einem AB-Test-Zwischenstand. Es analysiert die Daten, ermittelt die Variante mit der besten Leistung gemäß definierten Kriterien und speichert das Ergebnis in einer PostgreSQL-RDS-Datenbank.
Erstelle ein Git-Repository mit:
- Eingabedaten verarbeiten
- Gewinner ermitteln
- Eine Variante ist Gewinner, wenn sie mindestens 20 % höhere CTR hat als alle anderen Varianten
- Ergebnis in die Datenbank schreiben
- Fehler loggen
- Statusmeldungen loggen
- Struktur der Lösung beschreiben
- Funktionsweise erklären
Ein Rumpfprojekt zur lokalen Simulation des SNS-Aufrufs steht bereit: todo
Start: docker compose up --build
Beispiel-Daten befinden sich im Ordner sample-requests
Das Ergebnis soll enthalten:
- CTR
- Gewinner-Variante zum aktuellen Zwischenstand
Bitte arbeite nicht direkt in diesem Repository.
Damit Lösungen anderer Bewerber nicht einsehbar sind, gehe bitte wie folgt vor:
git clone <repo-url>
cd <projektname>- Erstelle ein neues privates Repository in deinem GitHub-Account
- Entferne die bestehende Remote-Verbindung und füge dein eigenes Repository hinzu:
git remote remove origin
git remote add origin <dein-privates-repo>
git push -u origin main- Arbeite ausschließlich in deinem privaten Repository
- Committe regelmäßig, damit dein Arbeitsprozess nachvollziehbar ist
Sende uns nach Fertigstellung:
- den Link zu deinem Repository
👉 Stelle sicher, dass folgende Accounts Zugriff haben:
cmzrtpietsc1