Dokumen ini menjelaskan cara menggunakan Jelajah Dataplex untuk mendeteksi anomali dalam set data transaksi retail.
Workbench eksplorasi data atau Explore memungkinkan analis data secara interaktif membuat kueri dan menjelajahi set data besar secara real time. Explore membantu Anda mendapatkan insight dari data, dan memungkinkan Anda mengkueri data yang tersimpan di Cloud Storage dan BigQuery. Explore menggunakan platform Spark serverless, sehingga Anda tidak perlu mengelola dan menskalakan infrastruktur dasar.
Tujuan
Tutorial ini menunjukkan kepada Anda cara menyelesaikan tugas-tugas berikut:
- Gunakan workbench SQL Spark dari Explore untuk menulis dan menjalankan kueri Spark SQL.
- Gunakan {i>notebook<i} JupyterLab untuk melihat hasilnya.
- Jadwalkan notebook Anda untuk eksekusi berulang agar Anda dapat memantau data untuk menemukan anomali.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
Menyiapkan data untuk eksplorasi
Download file Parquet,
retail_offline_sales_march
.Buat bucket Cloud Storage bernama
offlinesales_curated
sebagai berikut:- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
- Klik Buat bucket.
- Di halaman Buat bucket, masukkan informasi bucket Anda. Untuk melanjutkan ke
langkah berikutnya, klik Lanjutkan.
- Untuk Beri nama bucket, masukkan nama yang memenuhi persyaratan penamaan bucket.
-
Untuk Pilih tempat untuk menyimpan data, lakukan tindakan berikut:
- Pilih opsi Jenis lokasi.
- Pilih opsi Lokasi.
- Untuk Memilih kelas penyimpanan default untuk data Anda, pilih kelas penyimpanan.
- Untuk Memilih cara mengontrol akses ke objek, pilih opsi Kontrol akses.
- Untuk Setelan lanjutan (opsional), tentukan metode enkripsi, kebijakan retensi, atau label bucket.
- Klik Buat.
Upload file
offlinesales_march_parquet
yang telah Anda download ke bucket Cloud Storageofflinesales_curated
yang Anda buat, dengan mengikuti langkah-langkah dalam Mengupload objek dari sistem file.Buat dataplex lake dan beri nama
operations
, dengan mengikuti langkah-langkah di Membuat lake.Di lake
operations
, tambahkan zona dan beri namaprocurement
, dengan mengikuti langkah-langkah di bagian Menambahkan zona.Di zona
procurement
, tambahkan bucket Cloud Storageofflinesales_curated
yang Anda buat sebagai aset dengan mengikuti langkah-langkah di bagian Add an asset.
Pilih tabel untuk dijelajahi
Di konsol Google Cloud, buka halaman Explore Dataplex.
Di kolom Danau, pilih danau
operations
.Klik danau
operations
.Buka zona
procurement
lalu klik tabel untuk mempelajari metadatanya.Pada gambar berikut, zona pengadaan yang dipilih memiliki tabel bernama
Offline
, yang memiliki metadata:orderid
,product
,quantityordered
,unitprice
,orderdate
, danpurchaseaddress
.Di Spark SQL Editor, klik
Add. Skrip SQL Spark akan muncul.Opsional: Buka skrip dalam tampilan tab terpisah untuk melihat metadata dan skrip baru secara berdampingan. Klik
Lainnya di tab skrip baru, lalu pilih Pisahkan tab ke kanan atau Pisahkan tab ke kiri.
Jelajahi data
Lingkungan menyediakan resource komputasi serverless untuk kueri dan notebook Spark SQL Anda yang dapat dijalankan di dalam lake. Sebelum menulis kueri SQL Spark, buat lingkungan untuk menjalankan kueri Anda.
Pelajari data Anda menggunakan kueri SparkSQL berikut. Di SparkSQL Editor, masukkan kueri ke panel New Script.
Contoh 10 baris tabel
Masukkan kueri berikut:
select * from procurement.offlinesales where orderid != 'orderid' limit 10;
Klik Run.
Mendapatkan jumlah total transaksi dalam set data
Masukkan kueri berikut:
select count(*) from procurement.offlinesales where orderid!='orderid';
Klik Run.
Menemukan jumlah tipe produk yang berbeda dalam {i>dataset<i}
Masukkan kueri berikut:
select count(distinct product) from procurement.offlinesales where orderid!='orderid';
Klik Run.
Temukan produk yang memiliki nilai transaksi besar
Dapatkan gambaran tentang produk yang memiliki nilai transaksi besar dengan mengelompokkan penjualan berdasarkan tipe produk dan harga jual rata-rata.
Masukkan kueri berikut:
select product,avg(quantityordered * unitprice) as avg_sales_amount from procurement.offlinesales where orderid!='orderid' group by product order by avg_sales_amount desc;
Klik Run.
Gambar berikut menampilkan panel Results
yang menggunakan kolom bernama
product
untuk mengidentifikasi item penjualan dengan nilai transaksi besar, yang ditampilkan di
kolom bernama avg_sales_amount
.
Mendeteksi anomali menggunakan koefisien variasi
Kueri terakhir menunjukkan bahwa laptop memiliki jumlah transaksi rata-rata yang tinggi. Kueri berikut menunjukkan cara mendeteksi transaksi laptop yang tidak anomali dalam set data.
Kueri berikut menggunakan metrik "koefisien variasi", rsd_value
, untuk menemukan transaksi yang tidak biasa, dengan penyebaran nilai yang rendah dibandingkan dengan nilai rata-rata. Koefisien variasi yang lebih rendah
menunjukkan lebih sedikit anomali.
Masukkan kueri berikut:
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
Klik Run.
Lihat hasil skrip.
Pada gambar berikut, panel Results menggunakan kolom yang disebut produk untuk mengidentifikasi item penjualan dengan nilai transaksi yang berada dalam koefisien variasi 0,2.
Memvisualisasikan anomali menggunakan notebook JupyterLab
Bangun model ML untuk mendeteksi dan memvisualisasikan anomali dalam skala besar.
Buka notebook di tab terpisah dan tunggu hingga dimuat. Sesi saat Anda menjalankan kueri Spark SQL berlanjut.
Impor paket yang diperlukan dan hubungkan ke tabel eksternal BigQuery yang berisi data transaksi. Jalankan kode berikut:
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()
Jalankan algoritma hutan isolasi untuk menemukan anomali dalam set data:
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())
Tempatkan anomali yang diprediksi menggunakan visualisasi Matplotlib:
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()
Gambar ini menampilkan data transaksi dengan anomali yang ditandai dengan warna merah.
Menjadwalkan notebook
Explore memungkinkan Anda menjadwalkan notebook untuk dijalankan secara berkala. Ikuti langkah-langkah untuk menjadwalkan Jupyter Notebook yang Anda buat.
Dataplex membuat tugas penjadwalan untuk menjalankan notebook Anda secara berkala. Untuk memantau progres tugas, klik View Schedule.
Bagikan atau ekspor notebook ini
Explore memungkinkan Anda berbagi notebook dengan orang lain di organisasi menggunakan izin IAM.
Tinjau peran. Memberikan atau mencabut peran Dataplex Viewer (roles/dataplex.viewer
), Dataplex Editor (roles/dataplex.editor
), dan Dataplex Administrator (roles/dataplex.admin
) kepada pengguna untuk notebook ini. Setelah Anda membagikan
notebook, pengguna dengan peran pelihat atau editor di level lake dapat menavigasi
ke lake dan bekerja di notebook bersama.
Untuk membagikan atau mengekspor notebook, lihat Membagikan notebook atau Mengekspor notebook.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
-
Hapus bucket:
gcloud storage buckets delete BUCKET_NAME
-
Hapus instance:
gcloud compute instances delete INSTANCE_NAME
Langkah selanjutnya
- Pelajari Jelajah Dataplex lebih lanjut.
- Menjadwalkan skrip dan notebook.