<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Philipp Kahr - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Philipp Kahr - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/de/search-labs/author/philipp-kahr</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/author/philipp-kahr</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/author/philipp-kahr.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Mon, 28 Sep 2026 05:13:22 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Spotify Wrapped Teil 2: Datenanalyse und Visualisierung]]></title>
    <description><![CDATA[Wir werden tiefer als je zuvor in Ihre Spotify-Daten eintauchen und Zusammenhänge aufdecken, von denen Sie bisher nichts wussten.]]></description>
    <content:encoded><![CDATA[<p>Im <a href="https://www.elastic.co/search-labs/blog/spotify-wrapped-create-in-kibana">ersten Teil</a> dieser Serie, verfasst von Iulia Feroli, haben wir darüber gesprochen, wie man seine Spotify Wrapped-Daten erhält und in Kibana visualisiert. Im zweiten Teil tauchen wir tiefer in die Daten ein, um zu sehen, was wir sonst noch herausfinden können. Hierfür werden wir einen etwas anderen Ansatz wählen und <a href="https://github.com/elastic/elasticsearch-labs/tree/main/supporting-blog-content/spotify-to-elasticsearch">Spotify to Elasticsearch</a> verwenden, um die Daten in Elasticsearch zu indizieren. Dieses Tool ist etwas fortgeschrittener und erfordert etwas mehr Aufwand bei der Einrichtung, aber es lohnt sich. Die Daten sind strukturierter, und wir können komplexere Fragen stellen.</p><h2>Unterschiede zur ersten Spotify Wrapped-Analyse</h2><p>Im ersten Blogbeitrag haben wir den Spotify-Export direkt verwendet und keine Normalisierungsaufgaben oder sonstige Datenverarbeitungsschritte durchgeführt. Dieses Mal verwenden wir dieselben Daten, werden sie aber aufbereiten, um sie besser nutzbar zu machen. Dies wird es uns ermöglichen, wesentlich komplexere Fragen zu beantworten, wie zum Beispiel:</p><ul><li><p>Wie lang ist ein Song in meinen Top 100 im Durchschnitt?</p></li><li><p>Wie hoch ist die durchschnittliche Beliebtheit eines Songs in meinen Top 100?</p></li><li><p>Wie lange wird ein Lied im Durchschnitt angehört?</p></li><li><p>Welcher Song wird bei mir am häufigsten übersprungen?</p></li><li><p>Wann überspringe ich gerne Musiktitel?</p></li><li><p>Höre ich zu einer bestimmten Tageszeit mehr Musik als zu anderen?</p></li><li><p>Höre ich an einem bestimmten Wochentag mehr Musik als an anderen?</p></li><li><p>Ist es ein Monat von besonderem Interesse?</p></li><li><p>Welcher Künstler hat die längste Hörerschaftszeit?</p></li></ul><p>Spotify Wrapped ist jedes Jahr ein tolles Erlebnis, das dir zeigt, was du dieses Jahr gehört hast. Es werden keine Veränderungen im Jahresvergleich angezeigt, sodass Ihnen möglicherweise einige Künstler entgehen, die einst zu Ihren Top 10 gehörten, aber nun verschwunden sind.</p><h2>Verarbeitung von Spotify Wrapped-Daten zur Analyse</h2><p>Es gibt einen großen Unterschied in der Art und Weise, wie wir die Daten im ersten und im zweiten Beitrag verarbeiten. Wenn Sie weiterhin mit den Daten aus dem ersten Beitrag arbeiten möchten, müssen Sie einige Änderungen der Feldnamen berücksichtigen und auf ES|QL zurückgreifen, um bestimmte Extraktionen wie <code>hour of day</code> dynamisch durchzuführen.</p><p>Dennoch solltet ihr alle in der Lage sein, diesem Beitrag zu folgen. Die Datenverarbeitung im <a href="https://github.com/elastic/elasticsearch-labs/tree/main/supporting-blog-content/spotify-to-elasticsearch">Spotify-zu-Elasticsearch-</a> Repository beinhaltet das Abfragen der Spotify-API nach der Dauer des Songs, der Popularität sowie das Umbenennen und Erweitern einiger Felder. Das Feld <code>artist</code> im Spotify-Export ist beispielsweise lediglich ein String und repräsentiert weder Features noch Tracks mit mehreren Künstlern.</p><h2>Visualisierung von Spotify Wrapped-Daten mit Dashboards</h2><p>Ich habe in Kibana ein Dashboard erstellt, um die Daten zu visualisieren. Das Dashboard ist <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/spotify-to-elasticsearch/kibana/dashboard.ndjson">hier</a> verfügbar und kann in Ihre Kibana-Instanz importiert werden. Das Dashboard ist sehr umfangreich und beantwortet viele der oben genannten Fragen.</p><p>Lasst uns einige der Fragen betrachten und gemeinsam überlegen, wie wir sie beantworten können!</p><h3>Wie lang ist ein Song in meinen Top 100 im Durchschnitt?</h3><p>Um diese Frage zu beantworten, können wir Lens oder ES|QL verwenden. Lasst uns alle drei Optionen genauer betrachten. Formulieren wir diese Frage einmal korrekt im Elasticsearch-Stil. Wir möchten die 100 beliebtesten Lieder finden und dann die durchschnittliche Dauer aller dieser Lieder zusammen berechnen. In Elasticsearch-Begriffen wären das zwei Aggregationen:</p><ol><li><p>Finde die Top 100 Songs heraus</p></li><li><p>Berechne die durchschnittliche Dauer dieser 100 Lieder.</p></li></ol><p><strong>Lens</strong></p><p>In Lens ist das ganz einfach: Man erstellt eine neue Lens, wechselt zu einer Tabelle und zieht das Feld <code>title</code> per Drag &amp; Drop in die Tabelle. Klicken Sie anschließend auf das Feld <code>title</code> und stellen Sie die Größe auf 100 ein. Stellen Sie außerdem den Modus <code>accuracy</code> ein. Ziehen Sie dann das Feld <code>duration</code> per Drag &amp; Drop in die Tabelle und verwenden Sie <code>last value</code>, da wir eigentlich nur den letzten Wert der Dauer jedes Liedes benötigen. Dasselbe Lied hat nur eine einzige Dauer. Am Ende dieser <code>last value</code> -Aggregation befindet sich ein Dropdown-Menü für eine Zusammenfassungszeile. Wählen Sie <code>average</code> aus, um sie anzuzeigen.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5df1d7f36de5e2ae/6a17e5df0b0beddd57dd355c/a56f6e48e6b53af3ca3d38d67ce0916d0621ef16-2910x1058.png" alt="Verwendung von Lens für Spotify Wrapped-Daten" /><p><strong>ES|QL</strong></p><p>ES|QL ist im Vergleich zu DSL und Aggregationen eine recht neue Sprache, aber sie ist sehr leistungsstark und einfach zu bedienen. Um dieselbe Frage in ES|QL zu beantworten, würden Sie die folgende Abfrage schreiben:</p><p>Ich führe Sie Schritt für Schritt durch diese ES|QL-Abfrage:</p><ol><li><p><code>from spotify-history</code> - Dies ist das Indexmuster, das wir verwenden.</p></li><li><p><code>stats duration=max(duration), count=count() by title</code> - Dies ist die erste Aggregation; wir berechnen die maximale Dauer jedes Liedes und die Anzahl der Lieder. Wir verwenden <code>max</code> anstelle von <code>last value</code> , wie es in der Lens verwendet wird, da ES|QL derzeit kein erstes oder letztes Element hat.</p></li><li><p><code>sort count desc</code> - Wir sortieren die Lieder nach der Anzahl der Aufrufe jedes Liedes, sodass das meistgehörte Lied ganz oben steht.</p></li><li><p><code>limit 100</code> - Wir beschränken das Ergebnis auf die Top 100 Songs.</p></li><li><p><code>stats Average duration of the songs=avg(duration)</code> - Wir berechnen die durchschnittliche Dauer der Lieder.</p></li></ol><h3>Ist ein bestimmter Monat für mich von besonderem Interesse?</h3><p>Um diese Frage zu beantworten, können wir Lens mithilfe von Laufzeitfeldern und ES|QL verwenden. Was uns sofort auffällt: Es gibt kein Feld in den Daten, das die <code>month</code> direkt angibt; stattdessen müssen wir sie aus dem Feld <code>@timestamp</code> berechnen. Dafür gibt es mehrere Möglichkeiten:</p><ol><li><p>Verwenden Sie ein Laufzeitfeld, um die Linse mit Strom zu versorgen.</p></li><li><p>ES|QL</p></li></ol><p>Ich persönlich halte ES|QL für die elegantere und schnellere Lösung.</p><p>Das ist alles, nichts Kompliziertes ist nötig. Wir können die <code>DATE_EXTRACT</code> -Funktion nutzen, um den Monat aus dem <code>@timestamp</code> -Feld zu extrahieren und können dann darüber aggregieren. Mithilfe der ES|QL-Visualisierung können wir das auf dem Dashboard einbinden.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2c221ad4446cfb09/6a17e5e03e9e45076eba144c/7f942cf38fbe0fecec1d741e7df922196f4e9483-1878x722.png" alt="Spotify Wrapped monatliche Aufschlüsselungsvisualisierung" /><h3>Wie lange höre ich im Durchschnitt pro Künstler und Jahr?</h3><p>Die Idee dahinter ist, herauszufinden, ob ein Künstler nur eine einmalige Erscheinung ist oder ob es zu einer Wiederholung kommt. Wenn ich mich richtig erinnere, zeigt Spotify nur die Top 5 Künstler im Jahresrückblick an. Vielleicht bleibt dein Künstler auf Platz 6 immer derselbe, oder er wechselt ab Platz 10 stark?</p><p>Eine der einfachsten Darstellungsformen hierfür ist ein prozentuales Balkendiagramm. Wir können dafür Lens verwenden. Folgen Sie den folgenden Schritten:</p><p>Ziehen Sie das Feld <code>listened_to_ms</code> per Drag &amp; Drop an die gewünschte Stelle. Dieses Feld gibt an, wie lange Sie ein Lied in Millisekunden angehört haben. Standardmäßig erstellt Lens eine <code>median</code> -Aggregation. Das wollen wir nicht, ändern wir das in eine <code>sum</code>. Wählen Sie oben für den Balkendiagrammtyp <code>percentage</code> anstelle von <code>stacked</code> aus. Für die Aufschlüsselung wählen Sie <code>artist</code> und geben Sie „Top 10“ ein. Vergessen Sie nicht, im Dropdown-Menü <code>Advanced</code> die <code>accuracy mode</code> auszuwählen. Jeder Farbblock repräsentiert nun, wie oft Sie diesen einzelnen Künstler gehört haben. Je nach gewähltem Zeitauswahlfeld können die Balken Werte von Tagen über Wochen und Monate bis hin zu Jahren darstellen. Wenn Sie eine wöchentliche Aufschlüsselung wünschen, wählen Sie <code>@timestamp</code> aus und stellen Sie <code>mininum interval</code> auf <code>year</code> ein. Was wir in meinem Fall nun sagen können, ist, dass <code>Fred Again..</code> der Künstler ist, den ich am häufigsten gehört habe; fast 12 % meiner gesamten Hörzeit entfielen auf <code>Fred Again..</code>. Wir sehen auch, dass <code>Fred Again..</code> im Jahr 2024 etwas zurückging, <code>Jamie XX</code> aber stark zunahm. Wenn wir nur die Größe der Balken vergleichen. Wir können auch feststellen, dass während <code>Billie Eilish</code> im Jahr 2024 ständig gespielt wird, der Balken sich verbreitert. Das bedeutet, dass ich <code>Billie Eilish</code> im Jahr 2024 häufiger gehört habe als im Jahr 2023.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blteb0c11b909be859f/6a17e5e2e8fbce239a3a18ee/61a5bcc6b7385ed0a11b67c9c6bab32d27f4a49b-2942x1354.png" alt="Spotify Wrapped Verlaufsvisualisierung mit Kibana" /><h3>Wie sieht es mit den Top-Titeln pro Künstler pro Hörzeit im Vergleich zur gesamten Hörzeit aus?</h3><p>Das ist eine ganz schön komplizierte Frage. Ich möchte versuchen, das zu erklären, was ich damit sagen möchte. Spotify informiert dich über den Top-Song eines einzelnen Künstlers oder über deine insgesamt 5 Top-Songs. Das ist auf jeden Fall interessant, aber wie sieht es mit dem Zusammenbruch eines Künstlers aus? Verbringe ich meine gesamte Zeit nur mit einem einzigen Lied, das ich immer und immer wieder höre, oder ist meine Zeit gleichmäßig verteilt?</p><p>Erstellen Sie eine neue Linse und wählen Sie <code>Treemap</code> als Typ aus. Für <code>metric</code> gilt dasselbe wie zuvor: Wählen Sie <code>sum</code> aus und verwenden Sie <code>listened_to_ms</code> als Feld. Für die <code>group by</code> benötigen wir zwei Werte. Das erste ist <code>artist</code> und dann füge ein zweites mit <code>title</code> hinzu. Das Zwischenergebnis sieht folgendermaßen aus:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9aa0e4877472123f/6a17e5e44b055d6dcf43218e/2dea389664a0d3d13fff03c6337bff3ce740f9b1-2922x1430.png" alt="Spotify Wrapped Verlaufsvisualisierung mit Kibana" /><p>Ändern wir das in Top 100 Künstler und deaktivieren wir die <code>other</code> im erweiterten Dropdown-Menü sowie aktivieren wir den Genauigkeitsmodus. Ändern Sie den Titel in „Top 10“ und aktivieren Sie den Genauigkeitsmodus. Das Endergebnis sieht folgendermaßen aus:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt070bf745be1d3f92/6a17e5e66864a43a0fb6875b/7e99a15c69801e58302af4c12b500242a7e8bc9d-2640x1622.png" alt="Spotify Wrapped-Visualisierung mit Kibana" /><p>Was genau sagt uns das nun? Ohne die Zeitkomponente zu berücksichtigen, können wir sagen, dass ich in meiner gesamten Hörhistorie bei Spotify 5,67 % mit dem Hören von <code>Fred Again..</code> verbracht habe. Insbesondere habe ich 1,21 % dieser Zeit mit dem Hören von <code>Delilah (pull me out of this)</code> verbracht. Es ist interessant zu sehen, ob es ein einzelnes Lied gibt, das einen Künstler beschäftigt, oder ob es auch andere Lieder gibt. Die Baumkarte selbst ist eine gute Darstellungsform für solche Datenverteilungen.</p><h3>Höre ich zu einer bestimmten Uhrzeit und an einem bestimmten Tag?</h3><p>Nun, das können wir ganz einfach mit einer Lens-Visualisierung beantworten, die die <code>Heat Map</code> nutzt. Erstellen Sie eine neue Linse, wählen Sie <code>Heat Map</code> aus. Wählen Sie für <code>Horizontal Axis</code> das Feld <code>dayOfWeek</code> aus und stellen Sie es auf <code>Top 7</code> anstatt auf Top 3 ein. Für <code>Vertical Axis</code> wähle <code>hourOfDay</code> und für <code>Cell Value</code> einfach <code>Count of records</code>. Dadurch wird folgendes Panel erzeugt:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2d08e4f4d0a90550/6a17e5e7e8fbce1af43a18f2/c83ec13a3c7d1b71b8a6b110ed2b74e691d868e6-3538x1720.png" alt="Visualisierung der Hörgewohnheiten von Spotify Wrapped mithilfe von Dashboards" /><p>Es gibt ein paar ärgerliche Dinge an diesem Objektiv, die mich beim Interpretieren einfach stören. Lasst uns versuchen, es ein wenig aufzuräumen. Zunächst einmal ist mir die Legende nicht so wichtig, verwenden Sie das Symbol oben mit dem Dreieck, Quadrat und Kreis und deaktivieren Sie sie.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltce46c47addd91c61/6a17e5e94b055d15d5432192/84f51d6c885b929bf47ac05edd32ca149ad2e651-1040x298.png" alt="Spotify Wrapped-Visualisierung " /><p>Der zweite ärgerliche Punkt ist nun die Sortierung der Tage. Es ist Montag, Mittwoch, Donnerstag oder irgendein anderer Tag, je nachdem, welche Werte Sie haben. Die <code>hourOfDay</code> ist korrekt sortiert. Die Art und Weise, wie die Tage sortiert werden, ist ein witziger Trick, nämlich die Verwendung von <code>Filters</code> anstelle von <code>Top Values</code>. Klicken Sie auf <code>dayOfWeek</code> und wählen Sie <code>Filters</code> aus. Es sollte nun so aussehen:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e9c6005a917d4de/6a17e5eb4b055d6e10432196/2498a66098d40a1ba44d3f88464a9888dca204af-3574x1294.png" alt="Spotify Wrapped Verlaufsvisualisierung mit Kibana Dashboards" /><p>Jetzt fangen Sie einfach an, die Tage einzugeben. Ein Filter pro Tag. <code>"dayOfWeek" : Monday</code> und gib ihm die Bezeichnung <code>Monday</code> und wiederhole den Vorgang.</p><p>Allerdings gibt es dabei einen Haken: Spotify stellt die Daten in UTC+0 ohne Zeitzoneninformationen bereit. Natürlich liefern sie auch die IP-Adresse und das Land, in dem Sie zugehört haben, und wir könnten daraus die Zeitzoneninformationen ableiten, aber das kann ungenau sein, und für Länder wie die USA, die mehrere Zeitzonen haben, kann es zu umständlich sein. Dies ist wichtig, da Elasticsearch und Kibana Zeitzonen unterstützen. Durch die Angabe der korrekten Zeitzone im Feld <code>@timestamp</code> passt Kibana die Zeit automatisch an die Zeit Ihres Browsers an.</p><p>So sollte es nach der Fertigstellung aussehen, und man kann erkennen, dass ich während der Arbeitszeit sehr aktiv zuhöre, samstags und sonntags hingegen weniger.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd8eaab83c8c9c7f2/6a17e5ed6df7315e250a0ec5/c664c90ff8e852e1766e8101afc20c58e110f09c-3582x2030.png" alt="Spotify Wrapped-Visualisierung mit Kibana Dashboards" /><h2>Fazit</h2><p>In diesem Blogbeitrag sind wir etwas tiefer in die Feinheiten der Spotify-Daten eingetaucht. Wir haben einige einfache und schnelle Wege aufgezeigt, wie man Visualisierungen erstellen und ausführen kann. Es ist einfach fantastisch, so viel Kontrolle über den eigenen Hörverlauf zu haben. Schaut euch auch die anderen Teile der Serie an:</p><ul><li><p><a href="https://www.elastic.co/search-labs/blog/spotify-wrapped-create-in-kibana">Teil 1: So erstellen Sie Ihr eigenes Spotify Wrapped in Kibana</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/elasticsearch-anomaly-detection-jobs">Teil 3: Populationsjobs zur Anomalieerkennung</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/find-relationships-in-data">Teil 4: Beziehungen in Daten erkennen</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/vectors-spotify-wrapped-part-05">Teil 5: Finde deinen besten Musikfreund mit Vektoren</a></p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/spotify-wrapped-data-analysis-visualization</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/spotify-wrapped-data-analysis-visualization</guid>
    <category><![CDATA[Kibana]]></category>
    <category><![CDATA[Analysen]]></category>
    <dc:creator><![CDATA[Philipp Kahr]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7f8cddbca1a54cd5/6a17e5efe9ea87717ba9c585/e04f85e87b5b4e69b6e2df9367840a56985b96a1-1792x1024.png" length="0" type="image/png"/>
    <pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>