In diesem Dokument wird beschrieben, wie Sie mit Dataplex Explore Anomalien in einem Einzelhandelstransaktions-Dataset erkennen.
Mit der Data Exploration Workbench oder Explore können Datenanalysten große Datasets in Echtzeit interaktiv abfragen und untersuchen. Mit Explore können Sie Informationen aus Ihren Daten gewinnen und in Cloud Storage und BigQuery gespeicherte Daten abfragen. Explore verwendet eine serverlose Spark-Plattform, sodass Sie die zugrunde liegende Infrastruktur nicht verwalten und skalieren müssen.
Lernziele
In diesem Anleitung werden die folgenden Aufgaben erläutert:
- Spark SQL Workbench von Explores zum Schreiben und Ausführen von Spark SQL-Abfragen verwenden.
- Verwenden Sie ein JupyterLab-Notebook, um die Ergebnisse anzusehen.
- Planen Sie Ihr Notebook für eine wiederkehrende Ausführung, damit Sie Ihre Daten auf Anomalien überwachen können.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Google Cloud-Projekt erstellen oder auswählen.
-
Erstellen Sie ein Google Cloud-Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch einen Namen für das Google Cloud-Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch den Namen Ihres Google Cloud-Projekts.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Google Cloud-Projekt erstellen oder auswählen.
-
Erstellen Sie ein Google Cloud-Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch einen Namen für das Google Cloud-Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch den Namen Ihres Google Cloud-Projekts.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
Daten für die Erkundung vorbereiten
Laden Sie die Parquet-Datei
retail_offline_sales_march
herunter.Erstellen Sie so einen Cloud Storage-Bucket mit dem Namen
offlinesales_curated
:- Wechseln Sie in der Google Cloud Console zur Cloud Storage-Seite Buckets.
- Klicken Sie auf Bucket erstellen.
- Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein. Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
- Geben Sie unter Bucket benennen einen Namen ein, der den Anforderungen für Bucket-Namen entspricht.
-
Gehen Sie unter Speicherort für Daten auswählen folgendermaßen vor:
- Wählen Sie eine Option für Standorttyp aus.
- Wählen Sie eine Standort-Option aus.
- Wählen Sie unter Standardspeicherklasse für Ihre Daten auswählen eine Speicherklasse aus.
- Wählen Sie unter Zugriffssteuerung für Objekte auswählen eine Option für die Zugriffssteuerung aus.
- Geben Sie für Erweiterte Einstellungen (optional) eine Verschlüsselungsmethode, eine Aufbewahrungsrichtlinie oder Bucket-Labels an.
- Klicken Sie auf Erstellen.
Laden Sie die heruntergeladene Datei
offlinesales_march_parquet
in den von Ihnen erstellten Cloud Storage-Bucketofflinesales_curated
hoch. Folgen Sie dazu der Anleitung unter Objekt aus einem Dateisystem hochladen.Erstellen Sie einen Dataplex-Lake und nennen Sie ihn
operations
. Folgen Sie dazu der Anleitung unter Lake erstellen.Fügen Sie im Lake
operations
eine Zone hinzu und nennen Sie sieprocurement
. Folgen Sie dazu den Schritten unter Zone hinzufügen.Fügen Sie in der Zone
procurement
den von Ihnen erstellten Cloud Storage-Bucketofflinesales_curated
als Asset hinzu. Folgen Sie dazu der Anleitung unter Asset hinzufügen.
Wählen Sie die gewünschte Tabelle aus.
Rufen Sie in der Google Cloud Console die Dataplex-Seite Expl. Datenanalyse auf.
Wählen Sie im Feld Lake den Lake
operations
aus.Klicken Sie auf den Lake
operations
.Rufen Sie die Zone
procurement
auf und klicken Sie auf die Tabelle, um die zugehörigen Metadaten anzusehen.In der folgenden Abbildung enthält die ausgewählte Beschaffungszone eine Tabelle mit dem Namen
Offline
mit den Metadaten:orderid
,product
,quantityordered
,unitprice
,orderdate
undpurchaseaddress
.Klicken Sie im Spark SQL-Editor auf
Hinzufügen. Ein Spark SQL-Skript wird angezeigt.Optional: Öffnen Sie das Skript in der geteilten Tabansicht, um die Metadaten und das neue Skript nebeneinander zu sehen. Klicken Sie im neuen Script-Tab auf
Mehr und wählen Sie Tab rechts teilen oder Tab links teilen aus.
Öffentliche Daten durchsuchen
Eine Umgebung stellt serverlose Computing-Ressourcen für Ihre Spark SQL-Abfragen und -Notebooks zur Ausführung in einem Lake bereit. Bevor Sie Spark SQL-Abfragen schreiben, erstellen Sie eine Umgebung, in der Sie Ihre Abfragen ausführen können.
Untersuchen Sie Ihre Daten mit den folgenden SparkSQL-Abfragen. Geben Sie die Abfrage im SparkSQL Editor im Bereich Neues Script ein.
Beispiel für 10 Tabellenzeilen
Geben Sie die folgende Abfrage ein:
select * from procurement.offlinesales where orderid != 'orderid' limit 10;
Klicken Sie auf Ausführen.
Gesamtzahl der Transaktionen im Dataset abrufen
Geben Sie die folgende Abfrage ein:
select count(*) from procurement.offlinesales where orderid!='orderid';
Klicken Sie auf Ausführen.
Die Anzahl der verschiedenen Produkttypen im Dataset ermitteln
Geben Sie die folgende Abfrage ein:
select count(distinct product) from procurement.offlinesales where orderid!='orderid';
Klicken Sie auf Ausführen.
Produkte mit einem hohen Transaktionswert finden
Sie können herausfinden, welche Produkte einen hohen Transaktionswert haben, indem Sie die Verkäufe nach Produkttyp und durchschnittlichem Verkaufspreis aufschlüsseln.
Geben Sie die folgende Abfrage ein:
select product,avg(quantityordered * unitprice) as avg_sales_amount from procurement.offlinesales where orderid!='orderid' group by product order by avg_sales_amount desc;
Klicken Sie auf Ausführen.
In der folgenden Abbildung sehen Sie einen Results
-Bereich, in dem die Spalte product
verwendet wird, um die Verkaufsartikel mit großen Transaktionswerten zu identifizieren. Diese werden in der Spalte avg_sales_amount
angezeigt.
Anomalien mithilfe des Variationskoeffizienten erkennen
Die letzte Abfrage ergab, dass Laptops einen hohen durchschnittlichen Transaktionsbetrag haben. Die folgende Abfrage zeigt, wie Laptop-Transaktionen im Dataset erkannt werden, die nicht anomal sind.
Die folgende Abfrage verwendet den Messwert „Variationskoeffizient“ rsd_value
, um Transaktionen zu ermitteln, die nicht ungewöhnlich sind, bei denen die Werteverteilung im Vergleich zum Durchschnittswert gering ist. Ein niedrigerer Variationskoeffizient
deutet auf weniger Anomalien hin.
Geben Sie die folgende Abfrage ein:
WITH stats AS ( SELECT product, AVG(quantityordered * unitprice) AS avg_value, STDDEV(quantityordered * unitprice) / AVG(quantityordered * unitprice) AS rsd_value FROM procurement.offlinesales GROUP BY product) SELECT orderid, orderdate, product, (quantityordered * unitprice) as sales_amount, ABS(1 - (quantityordered * unitprice)/ avg_value) AS distance_from_avg FROM procurement.offlinesales INNER JOIN stats USING (product) WHERE rsd_value <= 0.2 ORDER BY distance_from_avg DESC LIMIT 10
Klicken Sie auf Ausführen.
Skriptergebnisse ansehen.
In der folgenden Abbildung wird in einem Ergebnisbereich eine Spalte namens „product“ verwendet, um Verkaufsartikel mit Transaktionswerten zu identifizieren, die innerhalb des Variantenkoeffizienten 0,2 liegen.
Anomalien mit einem JupyterLab-Notebook visualisieren
Erstellen Sie ein ML-Modell, um Anomalien in großem Maßstab zu erkennen und zu visualisieren.
Öffnen Sie das Notebook in einem separaten Tab und warten Sie, bis es geladen ist. Die Sitzung, in der Sie die Spark SQL-Abfragen ausgeführt haben, wird fortgesetzt.
Importieren Sie die erforderlichen Pakete und stellen Sie eine Verbindung zur externen BigQuery-Tabelle her, die die Transaktionsdaten enthält. Führen Sie den folgenden Code aus:
from google.cloud import bigquery from google.api_core.client_options import ClientOptions import os import warnings warnings.filterwarnings('ignore') import pandas as pd project = os.environ['GOOGLE_CLOUD_PROJECT'] options = ClientOptions(quota_project_id=project) client = bigquery.Client(client_options=options) client = bigquery.Client() #Load data into DataFrame sql = '''select * from procurement.offlinesales limit 100;''' df = client.query(sql).to_dataframe()
Führen Sie den Algorithmus der Isolationsgesamtstruktur aus, um die Anomalien im Dataset zu erkennen:
to_model_columns = df.columns[2:4] from sklearn.ensemble import IsolationForest clf=IsolationForest(n_estimators=100, max_samples='auto', contamination=float(.12), \ max_features=1.0, bootstrap=False, n_jobs=-1, random_state=42, verbose=0) clf.fit(df[to_model_columns]) pred = clf.predict(df[to_model_columns]) df['anomaly']=pred outliers=df.loc[df['anomaly']==-1] outlier_index=list(outliers.index) #print(outlier_index) #Find the number of anomalies and normal points here points classified -1 are anomalous print(df['anomaly'].value_counts())
Stellen Sie die vorhergesagten Anomalien mit einer Matplotlib-Visualisierung dar:
import numpy as np from sklearn.decomposition import PCA pca = PCA(2) pca.fit(df[to_model_columns]) res=pd.DataFrame(pca.transform(df[to_model_columns])) Z = np.array(res) plt.title("IsolationForest") plt.contourf( Z, cmap=plt.cm.Blues_r) b1 = plt.scatter(res[0], res[1], c='green', s=20,label="normal points") b1 =plt.scatter(res.iloc[outlier_index,0],res.iloc[outlier_index,1], c='green',s=20, edgecolor="red",label="predicted outliers") plt.legend(loc="upper right") plt.show()
Auf diesem Bild sind die Transaktionsdaten zu sehen. Die Anomalien sind rot hervorgehoben.
Notebook planen
Mit Explore können Sie die regelmäßige Ausführung eines Notebooks planen. Führen Sie die Schritte zum Planen des von Ihnen erstellten Jupyter-Notebooks aus.
Dataplex erstellt eine Planungsaufgabe, um das Notebook regelmäßig auszuführen. Klicken Sie auf Zeitpläne ansehen, um den Fortschritt der Aufgabe zu beobachten.
Notebook freigeben oder exportieren
Mit Explore können Sie ein Notebook mithilfe von IAM-Berechtigungen für andere in Ihrer Organisation freigeben.
Sehen Sie sich die Rollen an. Nutzern für dieses Notebook die Rollen Dataplex Viewer (roles/dataplex.viewer
), Dataplex Editor (roles/dataplex.editor
) und Dataplex Administrator (roles/dataplex.admin
) zuweisen oder entziehen. Nachdem Sie ein Notebook freigegeben haben, können Nutzer mit der Rolle „Viewer“ oder „Editor“ auf Lake-Ebene zum Lake wechseln und an dem freigegebenen Notebook arbeiten.
Informationen zum Freigeben oder Exportieren eines Notebooks finden Sie unter Notebook freigeben bzw. Notebook exportieren.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
Google Cloud-Projekt löschen:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
- Löschen Sie den Bucket:
gcloud storage buckets delete BUCKET_NAME
- Löschen Sie die Instanz:
gcloud compute instances delete INSTANCE_NAME
Nächste Schritte
- Weitere Informationen zum Dataplex-Explore.
- Planen Sie Skripts und Notebooks.