In diesem Dokument wird beschrieben, wie Sie mit Dataplex-Explores erkennen, Anomalien in einem Einzelhandelstransaktions-Dataset.
Die Workbench für die Datenerkundung (Explore) ermöglicht es Fachkräften für Datenanalyse, große Datasets in Echtzeit. Mit dem explorativen Analysetool gewinnen Sie Erkenntnisse aus Ihren Daten und können Daten, die in Cloud Storage und BigQuery gespeichert sind. Anwendungsbereiche eine serverlose Spark-Plattform, sodass Sie die zugrunde liegende Infrastruktur.
Lernziele
In diesem Anleitung werden die folgenden Aufgaben erläutert:
- Verwenden Sie die Spark SQL-Workbench von Explore, um Spark SQL-Abfragen zu schreiben und auszuführen.
- Verwenden Sie ein JupyterLab-Notebook, um die Ergebnisse aufzurufen.
- Planen Sie Ihr Notebook für eine wiederkehrende Ausführung, Daten auf Anomalien.
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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
Daten für die Erkundung vorbereiten
Laden Sie die Parquet-Datei
retail_offline_sales_march
herunter.So erstellen Sie einen Cloud Storage-Bucket mit dem Namen
offlinesales_curated
:- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Laden Sie die heruntergeladene Datei
offlinesales_march_parquet
in denofflinesales_curated
von Ihnen erstellter Cloud Storage-Bucket, durch folgen Sie den Schritten unter Objekt aus einem Dateisystem hochladen.Erstellen Sie einen Dataplex-Lake und nennen Sie ihn
operations
. Gehen Sie dazu so vor: die Schritte unter Lake erstellen.Fügen Sie im
operations
-Lake eine Zone hinzu und nennen Sie sieprocurement
, indem Sie die Schritte unter Zone hinzufügen aus.Fügen Sie in der Zone
procurement
den Parameterofflinesales_curated
hinzu. Cloud Storage-Bucket, den Sie als Asset erstellt haben, indem Sie Informationen zum Hinzufügen von Assets
Wählen Sie die Tabelle aus, die Sie sich ansehen möchten
Rufen Sie in der Google Cloud Console die Dataplex-Funktion Explore auf. Seite.
Wählen Sie im Feld See den See
operations
aus.Klicken Sie auf den See
operations
.Gehen Sie zur Zone
procurement
und klicken Sie auf die Tabelle, um deren Metadaten.In der folgenden Abbildung hat die ausgewählte Beschaffungszone eine Tabelle namens
Offline
mit den folgenden Metadaten:orderid
,product
,quantityordered
,unitprice
,orderdate
undpurchaseaddress
.Klicken Sie im Spark SQL Editor auf
Hinzufügen. Ein Spark SQL-Script wird angezeigt.Optional: Öffnen Sie das Skript in der geteilten Tabansicht, um die Metadaten und das neue Skript nebeneinander. Klicken Sie auf
Mehr im neuen Skript Tab und wählen Sie Tab rechts teilen oder Tab links teilen aus.
Öffentliche Daten durchsuchen
Eine Umgebung bietet Rechenressourcen für Ihre Spark SQL-Abfragen und Notebooks zur Ausführung in einem Lake. Bevor Sie Spark SQL-Abfragen schreiben, erstellen Sie eine Umgebung. in dem Ihre Abfragen ausgeführt werden sollen.
Untersuchen Sie Ihre Daten mit den folgenden SparkSQL-Abfragen. Im SparkSQL Editor: Geben Sie die Abfrage im Bereich Neues Skript ein.
Beispiel 10 Zeilen der Tabelle
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 sich ein Bild davon machen, welche Produkte einen hohen Transaktionswert haben, indem Sie die Verkäufe nach Produkttyp und durchschnittlichen Verkaufspreis.
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 eine Spalte namens
product
, um Verkaufsartikel mit hohen Transaktionswerten zu identifizieren, wie in
die Spalte avg_sales_amount
.
Anomalien mithilfe des Variationskoeffizienten erkennen
Die letzte Abfrage ergab, dass Laptops einen hohen durchschnittlichen Transaktionsbetrag haben. In der folgenden Abfrage wird veranschaulicht, wie Laptoptransaktionen erkannt werden, die im Datensatz nicht anormal sind.
In der folgenden Abfrage wird der Messwert „Variationskoeffizient“ verwendet.
rsd_value
, um ungewöhnliche Transaktionen zu ermitteln, bei denen die
Werte im Vergleich zum Durchschnittswert niedrig sind. Einen niedrigeren Variationskoeffizient
weist 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.
Sehen Sie sich die Skriptergebnisse an.
In der folgenden Abbildung wird in einem Ergebnisbereich eine Spalte namens „product“ verwendet, die Verkaufsartikel mit Transaktionswerten identifizieren, die in der Variante enthalten sind einen Koeffizienten von 0,2.
Anomalien mit einem JupyterLab-Notebook visualisieren
Erstellen Sie ein ML-Modell, um Anomalien im großen 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 zu BigQuery her. externe Tabelle, 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 Isolations-Gesamtstruktur 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 mithilfe 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 mit rot hervorgehobenen Anomalien zu sehen.
Notebook planen
Mit dem explorativen Analysetool können Sie die regelmäßige Ausführung eines Notebooks planen. Folgen die Schritte zum Planen des von Ihnen erstellten Jupyter-Notebooks
Dataplex erstellt eine geplante Aufgabe, um Ihr Notebook regelmäßig auszuführen. Klicken Sie zum Überwachen des Aufgabenfortschritts auf Zeitpläne ansehen
Notebook freigeben oder exportieren
Mit „Erkunden“ können Sie ein Notebook über IAM-Berechtigungen:
Prüfen Sie die Rollen. Dataplex-Betrachter gewähren oder widerrufen
(roles/dataplex.viewer
), Dataplex-Bearbeiter
(roles/dataplex.editor
) und Dataplex-Administrator
(roles/dataplex.admin
) Rollen für Nutzer dieses Notebooks. Nachdem Sie eine
können Nutzer mit den Rollen „Viewer“ oder „Editor“ auf Lake-Ebene
auf den Lake
und arbeiten am freigegebenen Notebook.
Informationen zum Freigeben oder Exportieren eines Notebooks finden Sie unter Notebook freigeben oder 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
Delete a Google Cloud project:
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