Auf der Seite Continuous Integration im Bereich Plattform des Menüs Admin können Sie Einstellungen für die Looker-Funktion Continuous Integration (CI) konfigurieren. Konfigurieren Sie die CI-Einstellungen für Looker (Google Cloud Core), um die Qualität und Zuverlässigkeit Ihrer LookML-Projekte zu gewährleisten. Mit CI werden Abfragefehler verhindert und Probleme mit SQL, Datentests, Inhalten und LookML erkannt, bevor sie in die Produktion gelangen. Sie können auch CI-Validatoren so konfigurieren, dass sie automatisch ausgeführt werden, wenn eine Pull-Anfrage an Ihr LookML-Repository gesendet wird. So wird Ihr Entwicklungs-Workflow optimiert.
Compliance-Funktionen von Continuous Integration
Looker CI ist nicht in den Autorisierungsgrenzen für FedRAMP High, FedRAMP Moderate oder DoD Impact Level 5 (IL5) enthalten.
Bevor Sie die Looker CI-Einstellung für Ihre Looker-Instanz aktivieren, sollten Sie sich mit Ihrer Genehmigungsstelle beraten, um festzustellen, ob die Compliance-Angebote von Looker CI den spezifischen Sicherheits- und behördlichen Anforderungen Ihrer Organisation entsprechen.
Bei Looker (Google Cloud Core)-Instanzen werden mit jedem Assured Workloads-Kontrollpaket, das verfügbar wird, Looker CI-Funktionen als Standardangebote hinzugefügt, sobald die Änderungsanforderungen und -prozesse des Pakets erfüllt sind.
Continuous Integration aktivieren
Mit der Looker-Funktion Continuous Integration (CI) können Sie Tests für Ihr LookML-Projekt ausführen, um zuverlässigere, effizientere und benutzerfreundlichere Daten zu liefern. Mit den CI-Validierungen können Sie Probleme mit SQL, Datentests, Inhalten und LookML erkennen, bevor sie in der Produktion auftreten. So können Sie Ihre LookML-Dateien überprüfen und Abfragefehler für Ihre Nutzer verhindern. Sie können die CI-Validatoren auch so konfigurieren, dass sie automatisch nach einem Zeitplan oder wenn eine Pull-Anfrage an Ihr LookML-Repository gesendet wird ausgeführt werden.
Ein Looker-Administrator kann CI für Ihre Instanz mit dem Ein/Aus-Schalter Continuous Integration aktivieren aktivieren.
Looker CI-Nutzer
Wenn Sie Continuous Integration für Ihre Instanz aktivieren, erstellt Looker automatisch 10 Looker CI-Nutzer in der Nutzergruppe Looker CI-Nutzer mit der Rolle Looker CI-Nutzer. Ein Looker-Administrator kann die Looker CI-Nutzer auf der Seite Nutzer im Tab Dienstkonten aufrufen.
Wenn in Ihrer Instanz Zugriffsberechtigungen verwendet werden, um den Zugriff auf Explores zu steuern, müssen die Looker CI-Nutzer in diese Zugriffsberechtigungen aufgenommen werden. Sie können die CI-Nutzer einbeziehen, indem Sie der Gruppe Looker CI Users die entsprechenden Nutzerattributwerte zuweisen. Eine Anleitung dazu finden Sie auf der Dokumentationsseite Administratoreinstellungen – Nutzerattribute.
Integrationen
Mit Continuous Integration können Sie CI-Suites automatisch ausführen lassen, wenn in Ihrem Remote-Git-Repository Pull-Anfragen oder Commits erfolgen. Sie können Continuous Integration so konfigurieren, dass es in die folgenden Git-Anbieter integriert wird:
- GitHub (mit der Looker CI-GitHub-App)
- GitLab (Looker API und GitLab CI verwenden)
- Bitbucket (Looker API und Bitbucket Pipelines verwenden)
- GitHub Actions (Looker API und GitHub Actions verwenden)
GitHub
Wenn Sie ein cloudbasiertes GitHub-Repository als Remote-Repository für Ihr LookML-Projekt haben, können Sie Continuous Integration so konfigurieren, dass CI-Suites automatisch ausgeführt werden, wenn LookML-Entwickler Pull-Anfragen an Ihr LookML-Repository senden.
Bei Looker (Google Cloud Core)-Instanzen, die private Verbindungen oder Hybridverbindungen mit Private Service Connect verwenden, oder bei Instanzen innerhalb eines VPC Service Controls-Perimeters muss Ihre Netzwerkkonfiguration eingehenden und ausgehenden Traffic zu und von GitHub zulassen. In den meisten Fällen ist diese Netzwerkkonfiguration bereits eingerichtet, wenn Sie Ihre Looker (Google Cloud Core)‑Instanz für die Verbindung zu GitHub konfigurieren. Weitere Informationen zum Konfigurieren von ausgehenden Verbindungen finden Sie auf der Dokumentationsseite Ausgehender Zugriff von Looker (Google Cloud Core) auf externe Dienste über Private Service Connect.
Damit CI-Suites automatisch in Ihrem Repository ausgeführt werden können, sind für Continuous Integration die folgenden Berechtigungen erforderlich:
- Lesezugriff auf die Metadaten und Pull-Anfragen Ihres Repositorys
- Lese- und Schreibzugriff auf Commit-Status, Repository-Hooks und Workflows Ihres Repositorys
Diese Berechtigungen werden nicht eingerichtet, wenn Sie eine Git-Verbindung für Ihr LookML-Projekt in der Looker-IDE einrichten. Wenn Sie Pull-Anfrage-Trigger für CI-Ausführungen verwenden möchten, muss Ihr LookML-Projekt mit einer Git-Verbindung eingerichtet sein (wie auf der Seite Git-Verbindung einrichten und testen beschrieben). Außerdem müssen Sie die CI-GitHub-App wie im Abschnitt CI-GitHub-App konfigurieren beschrieben konfigurieren.
GitHub-Tabelle
In der Tabelle GitHub auf der Seite Continuous Integration (Kontinuierliche Integration) werden die GitHub-Repositories aufgeführt, die für die LookML-Projekte in Ihrer Looker-Instanz konfiguriert sind. Diese GitHub-Repositories wurden von Ihren LookML-Entwicklern wie auf der Dokumentationsseite Git-Verbindung einrichten und testen beschrieben konfiguriert.
Für jedes aufgeführte GitHub-Repository wird in der Tabelle angezeigt, ob das Repository mit der CI GitHub-App konfiguriert wurde:
- Installiert: Dem Repository wurde die Looker CI-GitHub-Anwendung gewährt, die es ermöglicht, CI automatisch auszuführen, wenn LookML-Entwickler Pull-Anfragen an Ihr LookML-Repository senden.
- Nicht installiert: Das Repository wurde nicht für die Pull-Anfrage-Integration mit Looker CI eingerichtet. Informationen zum Konfigurieren des Repositorys für die CI-Pull-Anfrage-Integration finden Sie im Abschnitt CI-GitHub-App konfigurieren.
CI-GitHub-App konfigurieren
So gewähren Sie der CI-GitHub-Anwendung Zugriff auf ein Repository:
- Klicken Sie in Looker auf der Seite Continuous Integration (Kontinuierliche Integration) auf die Schaltfläche GitHub-App konfigurieren. Daraufhin wird ein Browserfenster mit der GitHub-Apps-Webseite geöffnet.
- Wählen Sie das GitHub-Konto aus, in dem Ihr LookML gespeichert ist.
- Wählen Sie im Bereich Repository-Zugriff die Option Alle Repositories aus, um CI-Integrationen für alle Git-Repositories zuzulassen, die dem Ressourceninhaber gehören. Alternativ können Sie Nur ausgewählte Repositories auswählen, um die Repositories festzulegen, für die Sie Continuous Integration verwenden möchten.
- Klicken Sie auf Speichern.
Wenn die Looker CI-GitHub-Anwendung erfolgreich für das Repository gewährt wurde, wird in Looker in der GitHub-Tabelle auf der Seite Continuous Integration (Kontinuierliche Integration) für das Repository Installiert angezeigt.
GitLab
Sie können Looker Continuous Integration-Ausführungen über GitLab CI auslösen. Dazu verwenden Sie die Looker API und das offizielle Looker Python SDK (looker-sdk).
Führen Sie die folgenden Schritte aus, um einen Looker-CI-Lauf über eine GitLab-CI-Pipeline auszulösen:
- CI/CD-Variablen in GitLab konfigurieren
- Python-Skript für GitLab CI erstellen
- GitLab CI-Workflow konfigurieren
CI/CD-Variablen in GitLab konfigurieren
Rufen Sie in Ihrem GitLab-Projekt Einstellungen > CI/CD > Variablen auf und erstellen Sie die folgenden CI/CD-Variablen. Legen Sie für jede Variable Masked fest, um vertrauliche Werte zu schützen:
LOOKERSDK_BASE_URL: die API-URL Ihrer Looker-Instanz (z. B.https://example.cloud.looker.com)LOOKERSDK_CLIENT_ID: Die API3-Client-ID, die auf der Seite Nutzer in Looker generiert wurde.LOOKERSDK_CLIENT_SECRET: Der entsprechende API3-Clientschlüssel, der auf der Seite „Verwaltung“ Nutzer in Looker generiert wurde.
Python-Script für GitLab CI erstellen
Erstellen Sie in Ihrem Repository ein Python-Skript mit dem Namen run_looker_ci.py. In diesem Skript wird das Looker SDK verwendet, um den CI-Lauf auszulösen und abzufragen, bis er abgeschlossen ist:
import os
import sys
import time
import looker_sdk
from looker_sdk import models as mdls
# Retrieve required settings from environment variables
project_id = os.getenv("LOOKER_PROJECT_ID")
suite_id = os.getenv("LOOKER_SUITE_ID")
# GitLab CI specific environment variables
branch = os.getenv("CI_COMMIT_REF_NAME")
commit = os.getenv("CI_COMMIT_SHA")
if not all([project_id, suite_id, branch, commit]):
print("Error: Missing required environment variables (LOOKER_PROJECT_ID, LOOKER_SUITE_ID, or GitLab vars).")
sys.exit(1)
# Initialize the Looker SDK.
# The SDK automatically picks up LOOKERSDK_BASE_URL, LOOKERSDK_CLIENT_ID, and LOOKERSDK_CLIENT_SECRET.
print("Initializing Looker SDK...")
try:
sdk = looker_sdk.init40()
except Exception as e:
print(f"Failed to initialize Looker SDK: {e}")
sys.exit(1)
# Configure the request body
print(f"Starting Looker CI run for project '{project_id}', suite '{suite_id}'...")
print(f"Branch: {branch} | Commit: {commit}")
request_body = mdls.CreateContinuousIntegrationRunRequest(
suite_id=suite_id,
branch=branch,
commit=commit
)
# Trigger the CI run
try:
run = sdk.create_continuous_integration_run(
project_id=project_id,
body=request_body
)
run_id = getattr(run, "run_id", getattr(run, "id", None))
print(f"Looker CI run created successfully. Run ID: {run_id}")
except looker_sdk.error.SDKError as e:
print(f"Failed to create Looker CI run: {e}")
sys.exit(1)
# Poll for completion
run_status = run.status
terminal_statuses = ["cancelled", "error", "passed", "failed"]
while run_status not in terminal_statuses:
print(f"Run {run_id} status is '{run_status}'. Waiting 15 seconds...")
time.sleep(15)
try:
run = sdk.get_continuous_integration_run(
project_id=project_id,
run_id=run_id
)
run_status = run.status
except looker_sdk.error.SDKError as e:
print(f"Error while polling Looker CI run status: {e}")
sys.exit(1)
print(f"Final Looker CI run status: {run_status}")
if run_status != "passed":
print("Looker CI run did not pass. Failing the GitLab CI job.")
sys.exit(1)
print("Looker CI run passed successfully!")
GitLab CI-Workflow konfigurieren
Erstellen oder aktualisieren Sie im Stammverzeichnis Ihres Repositorys die Pipeline-Konfigurationsdatei .gitlab-ci.yml, um looker-sdk zu installieren und run_looker_ci.py auszuführen:
stages:
- test
looker-ci:
stage: test
image: python:3.10
variables:
LOOKER_PROJECT_ID: "LOOKER_PROJECT_ID"
LOOKER_SUITE_ID: "LOOKER_SUITE_ID"
script:
- pip install looker-sdk
- python run_looker_ci.py
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
Ersetzen Sie Folgendes:
LOOKER_PROJECT_ID: die ID des Looker-Projekts, das Sie testen möchtenLOOKER_SUITE_ID: die ID der CI-Suite, die Sie ausführen möchten
Bitbucket
Sie können Looker-Continuous-Integration-Ausführungen über Bitbucket-Pipelines mit der Looker API und dem offiziellen Looker Python SDK (looker-sdk) auslösen.
Führen Sie die folgenden Schritte aus, um einen Looker-CI-Lauf über Bitbucket Pipelines auszulösen:
- Repository-Variablen in Bitbucket konfigurieren
- Python-Skript für Bitbucket Pipelines erstellen
- Bitbucket-Pipelines-Workflow konfigurieren
Repository-Variablen in Bitbucket konfigurieren
Rufen Sie in Ihrem Bitbucket-Repository Repository settings > Repository variables auf und erstellen Sie die folgenden Repository-Variablen. Legen Sie für jede Variable Secured fest, um vertrauliche Werte zu schützen:
LOOKERSDK_BASE_URL: die API-URL Ihrer Looker-Instanz (z. B.https://example.cloud.looker.com)LOOKERSDK_CLIENT_ID: Die API3-Client-ID, die auf der Seite Nutzer in Looker generiert wurde.LOOKERSDK_CLIENT_SECRET: Der entsprechende API3-Clientschlüssel, der auf der Looker-Seite „Verwaltung“ Nutzer generiert wird.
Python-Script für Bitbucket Pipelines erstellen
Erstellen Sie in Ihrem Repository ein Python-Skript mit dem Namen run_looker_ci.py. In diesem Skript wird das Looker SDK verwendet, um den CI-Lauf auszulösen und abzufragen, bis er abgeschlossen ist:
import os
import sys
import time
import looker_sdk
from looker_sdk import models as mdls
# Retrieve required settings from environment variables
project_id = os.getenv("LOOKER_PROJECT_ID")
suite_id = os.getenv("LOOKER_SUITE_ID")
# Bitbucket Pipelines specific environment variables
branch = os.getenv("BITBUCKET_BRANCH")
commit = os.getenv("BITBUCKET_COMMIT")
if not all([project_id, suite_id, branch, commit]):
print("Error: Missing required environment variables (LOOKER_PROJECT_ID, LOOKER_SUITE_ID, or Bitbucket vars).")
sys.exit(1)
# Initialize the Looker SDK.
# The SDK automatically picks up LOOKERSDK_BASE_URL, LOOKERSDK_CLIENT_ID, and LOOKERSDK_CLIENT_SECRET.
print("Initializing Looker SDK...")
try:
sdk = looker_sdk.init40()
except Exception as e:
print(f"Failed to initialize Looker SDK: {e}")
sys.exit(1)
# Configure the request body
print(f"Starting Looker CI run for project '{project_id}', suite '{suite_id}'...")
print(f"Branch: {branch} | Commit: {commit}")
request_body = mdls.CreateContinuousIntegrationRunRequest(
suite_id=suite_id,
branch=branch,
commit=commit
)
# Trigger the CI run
try:
run = sdk.create_continuous_integration_run(
project_id=project_id,
body=request_body
)
run_id = getattr(run, "run_id", getattr(run, "id", None))
print(f"Looker CI run created successfully. Run ID: {run_id}")
except looker_sdk.error.SDKError as e:
print(f"Failed to create Looker CI run: {e}")
sys.exit(1)
# Poll for completion
run_status = run.status
terminal_statuses = ["cancelled", "error", "passed", "failed"]
while run_status not in terminal_statuses:
print(f"Run {run_id} status is '{run_status}'. Waiting 15 seconds...")
time.sleep(15)
try:
run = sdk.get_continuous_integration_run(
project_id=project_id,
run_id=run_id
)
run_status = run.status
except looker_sdk.error.SDKError as e:
print(f"Error while polling Looker CI run status: {e}")
sys.exit(1)
print(f"Final Looker CI run status: {run_status}")
if run_status != "passed":
print("Looker CI run did not pass. Failing the Bitbucket Pipeline.")
sys.exit(1)
print("Looker CI run passed successfully!")
Bitbucket Pipelines-Workflow konfigurieren
Erstellen oder aktualisieren Sie im Stammverzeichnis Ihres Repositorys die Datei bitbucket-pipelines.yml, um looker-sdk zu installieren und run_looker_ci.py auszuführen:
image: python:3.10
pipelines:
pull-requests:
'**':
- step:
name: Looker CI
script:
- export LOOKER_PROJECT_ID="LOOKER_PROJECT_ID"
- export LOOKER_SUITE_ID="LOOKER_SUITE_ID"
- pip install looker-sdk
- python run_looker_ci.py
Ersetzen Sie Folgendes:
LOOKER_PROJECT_ID: die ID des Looker-Projekts, das Sie testen möchtenLOOKER_SUITE_ID: die ID der CI-Suite, die Sie ausführen möchten
GitHub Actions
Sie können Looker Continuous Integration-Ausführungen über GitHub Actions mit der Looker API und dem offiziellen Looker Python SDK (looker-sdk) auslösen.
So lösen Sie einen Looker-CI-Lauf über einen GitHub Actions-Workflow aus:
- Repository-Secrets in GitHub konfigurieren
- Python-Skript für GitHub Actions erstellen
- GitHub Actions-Workflow konfigurieren
Repository-Secrets in GitHub konfigurieren
Wechseln Sie in Ihrem GitHub-Repository zu Settings > Secrets and variables > Actions und erstellen Sie die folgenden Repository-Secrets:
LOOKERSDK_BASE_URL: die API-URL Ihrer Looker-Instanz (z. B.https://example.cloud.looker.com)LOOKERSDK_CLIENT_ID: Die API3-Client-ID, die auf der Seite Nutzer in Looker generiert wurde.LOOKERSDK_CLIENT_SECRET: Der entsprechende API3-Clientschlüssel, der auf der Looker-Seite „Verwaltung“ Nutzer generiert wird.
Python-Skript für GitHub Actions erstellen
Erstellen Sie in Ihrem Repository ein Python-Skript mit dem Namen run_looker_ci.py. In diesem Skript wird das Looker SDK verwendet, um den CI-Lauf auszulösen und abzufragen, bis er abgeschlossen ist:
import os
import sys
import time
import looker_sdk
from looker_sdk import models as mdls
# Retrieve required settings from environment variables
project_id = os.getenv("LOOKER_PROJECT_ID")
suite_id = os.getenv("LOOKER_SUITE_ID")
# GitHub Actions specific environment variables
# GITHUB_HEAD_REF is the branch name for PRs.
# GITHUB_REF_NAME can be used as a fallback for non-PR events.
branch = os.getenv("GITHUB_HEAD_REF") or os.getenv("GITHUB_REF_NAME")
# GITHUB_PR_SHA is the head commit SHA for PRs.
# GITHUB_SHA can be used as a fallback for non-PR events.
commit = os.getenv("GITHUB_PR_SHA") or os.getenv("GITHUB_SHA")
if not all([project_id, suite_id, branch, commit]):
print("Error: Missing required environment variables (LOOKER_PROJECT_ID, LOOKER_SUITE_ID, or GitHub vars).")
sys.exit(1)
# Initialize the Looker SDK.
# The SDK automatically picks up LOOKERSDK_BASE_URL, LOOKERSDK_CLIENT_ID, and LOOKERSDK_CLIENT_SECRET.
print("Initializing Looker SDK...")
try:
sdk = looker_sdk.init40()
except Exception as e:
print(f"Failed to initialize Looker SDK: {e}")
sys.exit(1)
# Configure the request body
print(f"Starting Looker CI run for project '{project_id}', suite '{suite_id}'...")
print(f"Branch: {branch} | Commit: {commit}")
request_body = mdls.CreateContinuousIntegrationRunRequest(
suite_id=suite_id,
branch=branch,
commit=commit
)
# Trigger the CI run
try:
run = sdk.create_continuous_integration_run(
project_id=project_id,
body=request_body
)
run_id = getattr(run, "run_id", getattr(run, "id", None))
print(f"Looker CI run created successfully. Run ID: {run_id}")
except looker_sdk.error.SDKError as e:
print(f"Failed to create Looker CI run: {e}")
sys.exit(1)
# Poll for completion
run_status = run.status
terminal_statuses = ["cancelled", "error", "passed", "failed"]
while run_status not in terminal_statuses:
print(f"Run {run_id} status is '{run_status}'. Waiting 15 seconds...")
time.sleep(15)
try:
run = sdk.get_continuous_integration_run(
project_id=project_id,
run_id=run_id
)
run_status = run.status
except looker_sdk.error.SDKError as e:
print(f"Error while polling Looker CI run status: {e}")
sys.exit(1)
print(f"Final Looker CI run status: {run_status}")
if run_status != "passed":
print("Looker CI run did not pass. Failing the GitHub Action.")
sys.exit(1)
print("Looker CI run passed successfully!")
GitHub Actions-Workflow konfigurieren
Erstellen Sie in Ihrem Repository eine Workflow-Datei unter .github/workflows/looker-ci.yml mit der folgenden Konfiguration:
name: Looker CI
on:
pull_request:
branches:
- main
jobs:
run-looker-ci:
runs-on: ubuntu-latest
env:
# Automatically picked up by the Looker SDK
LOOKERSDK_BASE_URL: ${{ secrets.LOOKERSDK_BASE_URL }}
LOOKERSDK_CLIENT_ID: ${{ secrets.LOOKERSDK_CLIENT_ID }}
LOOKERSDK_CLIENT_SECRET: ${{ secrets.LOOKERSDK_CLIENT_SECRET }}
# Passed directly to the script
LOOKER_PROJECT_ID: "LOOKER_PROJECT_ID"
LOOKER_SUITE_ID: "LOOKER_SUITE_ID"
GITHUB_PR_SHA: ${{ github.event.pull_request.head.sha }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install looker-sdk
- name: Run Looker CI
run: python run_looker_ci.py
Ersetzen Sie Folgendes:
LOOKER_PROJECT_ID: die ID des Looker-Projekts, das Sie testen möchtenLOOKER_SUITE_ID: die ID der CI-Suite, die Sie ausführen möchten
dbt Cloud-Konfiguration
Wenn Sie dbt Cloud verwenden, können Sie Continuous Integration so konfigurieren, dass CI-Suites automatisch ausgeführt werden, wenn ein dbt Cloud-CI-Job abgeschlossen ist. Durch den CI-Suite-Lauf wird sichergestellt, dass Änderungen an Ihren dbt-Modellen Ihr LookML-Projekt nicht beschädigen.
Führen Sie die folgenden Schritte im Abschnitt dbt Cloud Configuration aus, um die dbt Cloud-Einbindung zu konfigurieren:
- Geben Sie im Feld dbt Cloud Host URL die URL zu Ihrem dbt Cloud-Konto ein.
- Geben Sie im Feld dbt Cloud API Key ein dbt Cloud-Dienstkonto-Token ein.
- Klicken Sie auf Test Connection. Looker prüft, ob eine Verbindung zu Ihrem dbt Cloud-Konto hergestellt werden kann, und ruft dann Ihre dbt Cloud-Konto-ID ab.
- Klicken Sie auf Speichern.
Nutzerattribute
Sie können Nutzerattribute konfigurieren, die von Continuous Integration während Validierungsläufen überschrieben werden können. Nutzerattribute werden in Verbindung mit der dbt Cloud-Integration verwendet, um Looker auf temporäre Schemas zu verweisen, die von dbt Cloud CI-Jobs erstellt wurden.
So konfigurieren Sie Standardwerte für Nutzerattribute für CI im Bereich Nutzerattribute:
- Wählen Sie im Feld Nutzerattribut ein Nutzerattribut aus der Drop-down-Liste aus. Wenn kein Nutzerattribut ausgewählt ist, verwendet Looker für CI-Läufe das Nutzerattribut, das im Feld Primärer Datensatz in Ihrer Datenbankverbindung definiert ist.
- Geben Sie im Feld Wert für CI-Ausführung den Wert ein, der für dieses Nutzerattribut für CI-Ausführungen verwendet werden soll.
- Klicken Sie auf Speichern.
Sie können mehrere Nutzerattribut- und ‑wertpaare hinzufügen. Jedes Nutzerattribut, das im Bereich Nutzerattribute konfiguriert ist, kann in Ihren CI Suite-Konfigurationen als Überschreibung ausgewählt werden.
Wenn Sie ein Nutzerattribut und ein Wertpaar löschen möchten, klicken Sie auf Entfernen.