GSP850

Übersicht
BigQuery kann auch für komplexere Datenanalysen verwendet werden. In diesem Lab analysieren Sie Fußball-Ereignisdaten, um aus dem Dataset echte statistische Erkenntnisse zu gewinnen.
Die in diesem Lab verwendeten Daten stammen aus den folgenden Quellen:
- Pappalardo et al., (2019) A public data set of spatio-temporal match events in soccer competitions, Nature Scientific Data 6:236, https://www.nature.com/articles/s41597-019-0247-7
- Pappalardo et al. (2019) PlayerRank: Data-driven Performance Evaluation and Player Ranking in Soccer via a Machine Learning Approach. ACM Transactions on Intelligent Systems and Technologies (TIST) 10, 5, Article 59 (September 2019), 27 pages. DOI: https://doi.org/10.1145/3343172
Ziele
Aufgaben in diesem Lab:
- Fußball-Ereignisdaten mit verschiedenen BigQuery-Funktionen analysieren
- Abfragen schreiben und ausführen, die mit verschachtelten Daten in BigQuery-Tabellen arbeiten
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:
- Schaltfläche „Google Cloud Console öffnen“
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
-
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}}
Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}}
Sie finden das Passwort auch im Bereich „Details zum Lab“.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos.
Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
-
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
Aufgabe 1: BigQuery öffnen
Die BigQuery Console enthält eine Schnittstelle, mit der sich Tabellen abfragen lassen. Dabei werden auch öffentliche Datasets berücksichtigt, die in BigQuery gespeichert sind.
- Wählen Sie in der Cloud Console im Navigationsmenü die Option BigQuery aus:
Zuerst wird das Fenster Willkommen bei BigQuery in der Cloud Console geöffnet, das neben allgemeinen Informationen auch einen Link zur Kurzanleitung und zu den Versionshinweisen enthält.
- Klicken Sie auf Fertig.
Die BigQuery Console wird geöffnet.
Hinweis: Wie Sie das Dataset und die Tabellen erstellen, erfahren Sie im Lab Fußballdaten mit BigQuery aufnehmen. In diesem Lab liegt das Hauptaugenmerk auf dem Abfragen der Daten.
Nachdem die Tabellen erstellt wurden, sehen Sie in etwa Folgendes:
In diesem Abschnitt wurde die BigQuery-Oberfläche verwendet, um auf die Console zuzugreifen. Die Console bietet eine einfache Möglichkeit, einem Dataset Informationen hinzuzufügen. BigQuery verwendet Tabellen, um Daten strukturiert darzustellen.
Im nächsten Abschnitt erfahren Sie, wie Sie komplexere Abfragen erstellen.
Aufgabe 2: Verschachtelte Fußball-Ereignisdaten analysieren
In diesem Abschnitt führen Sie einige Abfragen aus, die JOINs mit der Array-Funktion von BigQuery verwenden, um die Fußball-Ereignisdaten besser zu steuern.
- Klicken Sie im Abfrageeditor auf SQL-Abfrage erstellen.
- Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrageeditor ein:
SELECT
Events.playerId,
(Players.firstName || ' ' || Players.lastName) AS playerName,
SUM(IF(Tags2Name.Label = 'assist', 1, 0)) AS numAssists
FROM
`soccer.events` Events,
Events.tags Tags
LEFT JOIN
`soccer.tags2name` Tags2Name ON
Tags.id = Tags2Name.Tag
LEFT JOIN
`soccer.players` Players ON
Events.playerId = Players.wyId
GROUP BY
playerId, playerName
ORDER BY
numAssists DESC
Assists werden in der Tabelle events nicht als separates skalares Feld markiert. Sie müssen also das Feld tags untersuchen.
Dies geschieht durch einen korrelierten Cross Join zwischen der Tabelle events und dem Feld tags. Hierbei wird eine FROM-Anweisung mit Komma genutzt, die einen impliziten Join darstellt, um eine Zeile pro Tag (aus „tags“) und Ereignis (aus „event“) anstatt nur eine Zeile pro Ereignis zu erstellen. Die Tag-ID, die Assists entspricht, wird in der Tabelle tags2name gefunden. Die Anzahl der Vorkommen dieses Tags wird pro Spieler gezählt und die Tabelle players ruft die Spielernamen anhand ihrer IDs ab.
- Klicken Sie auf Ausführen. Die Ergebnisse werden unter dem Abfragefenster angezeigt.
Klicken Sie auf Fortschritt prüfen.
Prüfen, ob die Abfrage ausgeführt wurde
In diesem Abschnitt wurde eine komplexere Abfrage in BigQuery erstellt. Joins in BigQuery und die Verwendung von Arrays sind eine leistungsstarke Möglichkeit, Daten zu aggregieren.
Im nächsten Abschnitt erfahren Sie, wie Sie Verschachtelung und Arrays mit BigQuery verwenden.
Aufgabe 3: Durchschnittliche Passdistanz pro Mannschaft berechnen
In diesem Abschnitt führen Sie einige Abfragen aus, die die verschachtelten Felder in den Fußball-Ereignisdaten und die Array-Funktion sowie den Datentyp STRUCT von BigQuery verwenden, um einige interessante Fragen zu beantworten.
Wie stark unterscheiden sich die Mannschaften hinsichtlich ihrer durchschnittlichen Passdistanz (sowohl insgesamt als auch bei den erfolgreichen Pässen)?
Um diese Frage zu beantworten, untersuchen Sie das Feld positions in der Tabelle events. Sie sehen, dass es sich um ein wiederkehrendes Feld handelt, das pro Ereignis ein oder mehrere Paare von (x, y)-Werten enthält. Laut Wyscout, einem führenden Datenunternehmen der Fußballbranche, das diese Daten bereitgestellt hat, stellen diese die Ausgangs- und ggf. Zielpositionen dar, die mit dem Ereignis verbunden sind, auf einer Skala von 0 bis 100, die den Prozentsatz des Spielfelds aus der Sicht der angreifenden Mannschaft darstellt.
Der Screenshot unten zeigt die Positionen, die einigen verschiedenen Ereignistypen für einige Beispielereignisse entsprechen.
Aus den Daten geht hervor, dass Pässe als Attribut zwei Paare von (x, y)-Werten haben, die die Ausgangs- und Zielposition darstellen. Die Passdistanz kann also berechnet werden, indem die Differenzen der x- und y-Koordinaten ermittelt und dann mit den durchschnittlichen Abmessungen eines Fußballfelds (laut Wikipedia 105 × 68 m; es gibt keine Standardgröße) und der Formel für zweidimensionalen Abstand in geschätzte Meter umgerechnet werden.
- Klicken Sie im Abfrageeditor auf SQL-Abfrage erstellen.
- Geben Sie die folgende Abfrage in den Abfrageeditor ein:
WITH
Passes AS
(
SELECT
*,
/* 1801 is known Tag for 'accurate' from tags2name table */
(1801 IN UNNEST(tags.id)) AS accuratePass,
(CASE
WHEN ARRAY_LENGTH(positions) != 2 THEN NULL
ELSE
/* Translate 0-100 (x,y) coordinate-based distances to absolute positions
using "average" field dimensions of 105x68 before combining in 2D dist calc */
SQRT(
POW(
(positions[ORDINAL(2)].x - positions[ORDINAL(1)].x) * 105/100,
2) +
POW(
(positions[ORDINAL(2)].y - positions[ORDINAL(1)].y) * 68/100,
2)
)
END) AS passDistance
FROM
`soccer.events`
WHERE
eventName = 'Pass'
)
SELECT
Passes.teamId,
Teams.name AS team,
Teams.area.name AS teamArea,
COUNT(Passes.Id) AS numPasses,
AVG(Passes.passDistance) AS avgPassDistance,
SAFE_DIVIDE(
SUM(IF(Passes.accuratePass, Passes.passDistance, 0)),
SUM(IF(Passes.accuratePass, 1, 0))
) AS avgAccuratePassDistance
FROM
Passes
LEFT JOIN
`soccer.teams` Teams ON
Passes.teamId = Teams.wyId
WHERE
Teams.type = 'club'
GROUP BY
teamId, team, teamArea
ORDER BY
avgPassDistance
Der Code in der ersten WITH-Anweisung filtert die Tabelle events nur nach Pässen und fügt ein Feld accuratePass hinzu, indem er das Feld „tags“ untersucht.
Die Passdistanz wird berechnet, indem die Anfangs- und Endkoordinaten (x, y) mit ORDINAL extrahiert und die oben genannten Konzepte und Formeln angewendet werden. Die letzte SELECT-Anweisung aggregiert die Passdaten auf Mannschaftsebene (Filterung nur nach Vereinsmannschaften), einschließlich der durchschnittlichen Passdistanz bei allen Pässen und nur bei erfolgreichen Pässen.
- Klicken Sie auf Ausführen. Die Ergebnisse werden unter dem Abfragefenster angezeigt.
Hinweis: Bei Tausenden von Pässen verschiedener Mannschaften gibt es einige Unterschiede in der durchschnittlichen Passdistanz. Die niedrigste durchschnittliche Passdistanz liegt bei weniger als 18 Metern (Neapel und PSG), die höchste bei mehr als 23 Metern (Eibar).
Die durchschnittliche Passdistanz der erfolgreichen Pässe zeigt eine ähnliche Verteilung, wobei die Werte der Mannschaften etwas näher beieinander liegen.
Klicken Sie auf Fortschritt prüfen.
Prüfen, ob die Abfrage ausgeführt wurde
In diesem Abschnitt wurde BigQuery verwendet, um die Anzahl der Pässe und die durchschnittliche Passdistanz pro Mannschaft herauszufinden. Dazu haben Sie die Array-Verarbeitung verwendet, um wiederkehrende Werte in einem einzelnen Feld zu extrahieren, und dann den Abstand zwischen dem Ausgangs- und Zielpunkt jedes Passes berechnet.
Im nächsten Abschnitt erfahren Sie, wie Sie die Verschachtelung anderer Koordinatendaten entpacken, um Informationen zu Schussdistanzen zu erhalten.
Aufgabe 4: Schussdistanz analysieren
In diesem Abschnitt erstellen Sie eine neue Abfrage, um die Schussdistanz zu analysieren.
Welchen Einfluss hat die Schussdistanz auf die Wahrscheinlichkeit, dass ein Tor erzielt wird?
Um diese Frage zu beantworten, gehen Sie ähnlich wie im vorherigen Abschnitt vor. Verwenden Sie die (x, y)-Werte aus dem Feld positions in der Tabelle events für Schüsse.
Hinweis: Wie in der vorherigen Abfrage werden die geschätzten Abmessungen eines Fußballfelds mit den Abständen der x- und y-Koordinaten als Eingaben für die Entfernungsformel verwendet.
- Klicken Sie im Abfrageeditor auf SQL-Abfrage erstellen.
- Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrageeditor ein:
WITH
Shots AS
(
SELECT
*,
/* 101 is known Tag for 'goals' from goals table */
(101 IN UNNEST(tags.id)) AS isGoal,
/* Translate 0-100 (x,y) coordinate-based distances to absolute positions
using "average" field dimensions of 105x68 before combining in 2D dist calc */
SQRT(
POW(
(100 - positions[ORDINAL(1)].x) * 105/100,
2) +
POW(
(50 - positions[ORDINAL(1)].y) * 68/100,
2)
) AS shotDistance
FROM
`soccer.events`
WHERE
/* Includes both "open play" & free kick shots (including penalties) */
eventName = 'Shot' OR
(eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty'))
)
SELECT
ROUND(shotDistance, 0) AS ShotDistRound0,
COUNT(*) AS numShots,
SUM(IF(isGoal, 1, 0)) AS numGoals,
AVG(IF(isGoal, 1, 0)) AS goalPct
FROM
Shots
WHERE
shotDistance <= 50
GROUP BY
ShotDistRound0
ORDER BY
ShotDistRound0
Die erste WITH-Anweisung filtert die Tabelle events nach Schüssen, fügt ein Feld isGoal hinzu, indem sie das Feld tags untersucht, und berechnet die Schussdistanz auf dieselbe Weise wie die Passdistanz im vorherigen Abschnitt, wobei jedoch die Mitte des Tores (100, 50) als Endpunkt verwendet wird.
Die letzte SELECT-Anweisung aggregiert die Anzahl der Schüsse, die Anzahl der Tore und den Prozentsatz der Tore aus Schüssen nach Entfernung, gerundet auf den nächsten Meter.
- Klicken Sie auf Ausführen. Die Ergebnisse werden unter dem Abfragefenster angezeigt.
Wie erwartet haben Schüsse aus kurzer Distanz eine viel höhere Trefferrate. Bei 2–3 Metern liegt sie bei fast 70 %, bei 8 Metern bei weniger als 25% und bei 25 Metern und mehr sinkt sie weiter.
Ergebnisse visualisieren
Durch die Visualisierung der Daten lassen sich Trends leichter erkennen und verstehen.
- Klicken Sie im Abschnitt „Abfrageergebnisse“ auf DIAGRAMM.
- Wählen Sie als Diagrammtyp die Option Streudiagramm aus.
- Erstellen Sie mit den Funktionen von Google Sheets ein Streudiagramm wie das folgende:
Bei 11–12 Metern gibt es einen leichten Anstieg der Erfolgsrate, was wahrscheinlich daran liegt, dass Elfmeter (die von Natur aus eine viel höhere Erfolgsrate haben als die meisten anderen Schüsse) einen großen Prozentsatz der Schüsse aus dieser Entfernung ausmachen.
Klicken Sie auf Fortschritt prüfen.
Prüfen, ob die Abfrage ausgeführt wurde
In diesem Abschnitt wurde BigQuery verwendet, um eine Ansicht der Schussdistanz im Vergleich zur Rate erfolgreicher Tore zu erstellen. Mit dieser Analyse lässt sich die Wahrscheinlichkeit eines Tores basierend auf der Schussdistanz besser einschätzen.
Im nächsten Abschnitt führen Sie eine ähnliche Analyse durch, um die Auswirkungen des Schusswinkels auf den Erfolg des Schusses zu untersuchen.
Aufgabe 5: Schusswinkel analysieren
In diesem Abschnitt ändern Sie die vorherige Abfrage, um die Auswirkungen des Schusswinkels auf die Schüsse zu untersuchen.
In diesem Fall ist der berechnete Winkel der Winkel zwischen dem Ausgangspunkt des Schusses und der Torlinie, wie unten dargestellt (Bildquelle: Ian Dragulet).
Ist der Ausgangspunkt nahe am Tor und in der Mitte, werden die Winkel größer. Dies korreliert also etwas mit der oben durchgeführten Abstandsberechnung. Die Berechnung des Schusswinkels erfolgt mithilfe der trigonometrischen Funktionen von BigQuery aufgrund der (x, y)-Daten.
- Klicken Sie im Abfrageeditor auf SQL-Abfrage erstellen.
- Geben Sie die folgende Abfrage in den Abfrageeditor ein:
WITH
Shots AS
(
SELECT
*,
/* 101 is known Tag for 'goals' from goals table */
(101 IN UNNEST(tags.id)) AS isGoal,
/* Translate 0-100 (x,y) coordinates to absolute positions using "average"
field dimensions of 105x68 before using in various distance calcs;
LEAST used to cap shot locations to on-field (x, y) (i.e. no exact 100s) */
LEAST(positions[ORDINAL(1)].x, 99.99999) * 105/100 AS shotXAbs,
LEAST(positions[ORDINAL(1)].y, 99.99999) * 68/100 AS shotYAbs
FROM
`soccer.events`
WHERE
/* Includes both "open play" & free kick shots (including penalties) */
eventName = 'Shot' OR
(eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty'))
),
ShotsWithAngle AS
(
SELECT
Shots.*,
/* Law of cosines to get 'open' angle from shot location to goal, given
that goal opening is 7.32m, placed midway up at field end of (105, 34) */
SAFE.ACOS(
SAFE_DIVIDE(
( /* Squared distance between shot and 1 post, in meters */
(POW(105 - shotXAbs, 2) + POW(34 + (7.32/2) - shotYAbs, 2)) +
/* Squared distance between shot and other post, in meters */
(POW(105 - shotXAbs, 2) + POW(34 - (7.32/2) - shotYAbs, 2)) -
/* Squared length of goal opening, in meters */
POW(7.32, 2)
),
(2 *
/* Distance between shot and 1 post, in meters */
SQRT(POW(105 - shotXAbs, 2) + POW(34 + 7.32/2 - shotYAbs, 2)) *
/* Distance between shot and other post, in meters */
SQRT(POW(105 - shotXAbs, 2) + POW(34 - 7.32/2 - shotYAbs, 2))
)
)
/* Translate radians to degrees */
) * 180 / ACOS(-1)
AS shotAngle
FROM
Shots
)
SELECT
ROUND(shotAngle, 0) AS ShotAngleRound0,
COUNT(*) AS numShots,
SUM(IF(isGoal, 1, 0)) AS numGoals,
AVG(IF(isGoal, 1, 0)) AS goalPct
FROM
ShotsWithAngle
GROUP BY
ShotAngleRound0
ORDER BY
ShotAngleRound0
Diese Abfrage ähnelt der obigen Abfrage zur Schussdistanz, mit Ausnahme einer anfänglichen WITH-Anweisung zum Extrahieren der Schusskoordinaten (um die Winkelberechnung zu vereinfachen, wenn sie mehrmals benötigt werden) und einer detaillierteren trigonometrischen Berechnung unter Verwendung des Kosinussatzes, um in der zweiten WITH-Anweisung den Schusswinkel zu erhalten.
Die letzte SELECT-Anweisung aggregiert nach dem auf den nächsten Grad gerundeten Schusswinkel.
- Klicken Sie auf Ausführen. Die Ergebnisse werden unter dem Abfragefenster angezeigt.
Der Schusswinkel scheint im Allgemeinen positiv mit der Erfolgsrate zu korrelieren. Bei Winkeln unter 20° liegt die Erfolgsrate im einstelligen Bereich, bei größeren Winkeln ist sie deutlich höher (wobei die Stichprobengröße bei Winkeln über ca. 60° relativ gering ist).
Wenn Sie im Abschnitt „Abfrageergebnisse“ auf Diagramme klicken und Streudiagramm als Diagrammtyp auswählen, können Sie den vollständigen Trend wie unten dargestellt visualisieren.
Das Diagramm zeigt, dass die Beziehung zwischen Schusswinkel und Erfolgsrate bis etwa 100° relativ linear ist. Die größten Winkel sind nur bei Schüssen aus kurzer Distanz möglich, daher korreliert dies teilweise mit der oben gezeigten Auswirkung der Entfernung. Bei 35° und 38° gibt es einen leichten Anstieg der Erfolgsrate, da dies die häufigsten Schusswinkel für Elfmeter sind, die einen großen Prozentsatz der Schüsse in diesem Bereich ausmachen (der Anteil ist viel höher als bei den meisten anderen Schüssen).
Klicken Sie auf Fortschritt prüfen.
Prüfen, ob die Abfrage ausgeführt wurde
Im nächsten Abschnitt können Sie Ihr in diesem Lab erworbenes Wissen testen.
Aufgabe 6: Quiz
Absolvieren Sie das kurze Quiz zu den Themen dieses Labs und testen Sie Ihr Wissen über BigQuery.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
Sie sind auf dem besten Weg, die Data Science des Sports zu verstehen. Sie haben BigQuery erfolgreich verwendet, um die durchschnittliche Passdistanz sowie den Zusammenhang zwischen Schussdistanz und Schusswinkel und Torerfolg zu analysieren. Die verwendeten Abfragen korrelierten Cross Joins und die Array- und trigonometrischen Funktionen von BigQuery, um verschachtelte Daten zu untersuchen und die für die Analyse erforderlichen Entfernungs- und Winkelberechnungen durchzuführen.
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 25. Januar 2024 aktualisiert
Lab zuletzt am 25. Januar 2024 getestet
© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.