Dokumen ini menjelaskan cara Anda membangun arsitektur yang dijelaskan dalam Smart API untuk memprediksi kecenderungan pelanggan untuk membeli menggunakan Apigee, BigQuery ML, dan Spanner. Dalam arsitektur tersebut, Anda menggunakan produk ini untuk men-deploy API yang dapat memprediksi seberapa besar kemungkinan pelanggan akan melakukan pembelian.
Petunjuk ini ditujukan bagi developer API dan data spesialis yang ingin menghasilkan lebih banyak pendapatan melalui platform omni-channel dan e-commerce dengan memberikan pengalaman yang lebih dipersonalisasi kepada pengguna. Anda dianggap sudah memahami Apigee, BigQuery ML, Spanner, Google Cloud CLI, dan Apache Maven.
Arsitektur
Diagram berikut menunjukkan arsitektur dan proses yang digunakan dalam solusi ini:
Untuk mengetahui detailnya, lihat Smart API untuk memprediksi kecenderungan pelanggan untuk membeli menggunakan Apigee, BigQuery ML, dan Spanner.
Tujuan
- Membuat set data kecenderungan pembelian pelanggan di BigQuery.
- Mengimpor data katalog produk ke database Spanner.
- Impor dan deploy proxy API Apigee.
- Integrasikan data kecenderungan pembelian pelanggan dari BigQuery dengan katalog produk dan informasi harga dari database Spanner.
- Buat tampilan gabungan dari rekomendasi produk.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Slot Fleksibel BigQuery dan BigQuery ML
- Spanner
- Apigee
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the AI Platform Training & Prediction, BigQuery, BigQuery Reservation, BigQuery Storage, Cloud Spanner, Cloud Storage, Cloud Storage API, Dataflow, Google Cloud, Cloud Storage JSON, Service Management, Service Usage APIs.
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
- roles/apigee.admin
- roles/bigquery.user
- roles/bigquery.dataViewer
- roles/spanner.admin
- roles/spanner.databaseAdmin
- roles/resourcemanager.projectIamAdmin
- roles/serviceusage.serviceUsageConsumer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Jika Anda belum memiliki akun Apigee, siapkan Apigee untuk menyediakan instance Apigee. Penyediaan dapat memerlukan waktu hingga satu jam.
- Konfigurasikan organisasi Apigee Anda untuk mengizinkan akses eksternal.
Jika Anda menyelesaikan prosedur ini dan memutuskan untuk tidak mempertahankan deployment, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Membuat set data rekomendasi e-commerce menggunakan BigQuery ML
Di bagian ini, Anda akan menggunakan kueri SQL standar di ML BigQuery untuk membuat model ML, melatihnya pada data pelanggan di BigQuery, lalu men-deploy-nya.
Data pelanggan yang Anda gunakan berasal dari set data Contoh Google Analytics, yang dihosting secara publik di BigQuery. Set data ini menyediakan 12 bulan (Agustus 2016 hingga Agustus 2017) data Analytics 360 yang di-obfuscate dari Google Merchandise Store, sebuah toko e-commerce sungguhan yang menjual merchandise bermerek Google.
Anda tidak perlu mengekspor data atau membangun pipeline deployment dan pelatihan model. BigQuery melakukan penskalaan otomatis untuk menangani resource komputasi apa pun yang Anda butuhkan.
Model ML yang Anda buat untuk solusi ini menggunakan faktorisasi matriks, yaitu metode umum dan efektif untuk membuat sistem rekomendasi berdasarkan data preferensi pengguna.
Memproses data sampel
Saat menggunakan faktorisasi matriks, Anda mengevaluasi masukan pengguna yang eksplisit atau implisit untuk menentukan preferensi pelanggan. Untuk menggunakan masukan eksplisit, set data harus berisi data tentang preferensi produk pengguna, seperti rating bintang antara 1 dan 5. Jika tidak ada masukan eksplisit yang tersedia, Anda harus menggunakan metrik perilaku lainnya untuk menyimpulkan preferensi pelanggan, seperti melihat total waktu yang dihabiskan pengguna di halaman detail produk. Solusi ini menggunakan data durasi sesi untuk menyimpulkan preferensi pelanggan.
Untuk melatih model faktorisasi matriks, Anda memerlukan tabel dengan kolom yang mengidentifikasi pelanggan, item yang diberi rating, dan rating implisit. Di bagian
ini, Anda akan membuat tabel tersebut dengan kolom userid
, itemId
, dan
session_duration
. Kolom session_duration
berisi durasi sesi pengguna di halaman produk item tertentu.
Untuk membuat tabel menggunakan data dari set data Contoh Analytics, lakukan tindakan berikut:
Di Google Cloud Marketplace, buka halaman Contoh Analytics.
Klik View Dataset. Halaman ruang kerja SQL BigQuery akan terbuka dengan set data Contoh Analytics dipilih.
Di bagian Explorer, di samping project Anda, klik
View actions, lalu klik Create dataset.Pada dialog Create dataset yang muncul, lakukan hal berikut:
- Di kolom Dataset ID, masukkan
bqml
. - Dalam daftar Data location, pilih us (multiple domains in United States).
- Klik Buat set data.
- Di kolom Dataset ID, masukkan
Klik Go to dataset, lalu klik Compose New Query.
Di Query Editor, buat tabel yang berisi data pelatihan dengan menjalankan pernyataan SQL berikut:
CREATE OR REPLACE TABLE bqml.aggregate_web_stats AS ( WITH durations AS ( --calculate pageview durations SELECT CONCAT(fullVisitorId,'-', CAST(visitNumber AS STRING),'-', CAST(hitNumber AS STRING) ) AS visitorId_session_hit, LEAD(time, 1) OVER ( PARTITION BY CONCAT(fullVisitorId,'-',CAST(visitNumber AS STRING)) ORDER BY time ASC ) - time AS pageview_duration FROM `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`, UNNEST(hits) AS hit ), prodview_durations AS ( --filter for product detail pages only SELECT CONCAT(fullVisitorId,'-',CAST(visitNumber AS STRING)) AS userId, productSKU AS itemId, IFNULL(dur.pageview_duration, 1) AS pageview_duration, FROM `bigquery-public-data.google_analytics_sample.ga_sessions_2017*` t, UNNEST(hits) AS hits, UNNEST(hits.product) AS hits_product JOIN durations dur ON CONCAT(fullVisitorId,'-', CAST(visitNumber AS STRING),'-', CAST(hitNumber AS STRING)) = dur.visitorId_session_hit WHERE eCommerceAction.action_type = "2" ), aggregate_web_stats AS( --sum pageview durations by userId, itemId SELECT userId, itemId, SUM(pageview_duration) AS session_duration FROM prodview_durations GROUP BY userId, itemId ) SELECT * FROM aggregate_web_stats );
Tabel
bqml.aggregate_web_stats
dibuat dan diisi dengan data pelatihan.Untuk melihat contoh data, di Query Editor, jalankan pernyataan SQL berikut:
SELECT * FROM bqml.aggregate_web_stats LIMIT 10;
Output tersebut akan menampilkan tabel yang memiliki satu baris untuk setiap User-ID yang menyertakan ID item yang dilihat pengguna, dan durasi sesinya. Outputnya mirip dengan yang berikut ini:
Baris | userId | itemId | session_duration |
---|---|---|---|
1 | 6703373209489429228-1 | GGOEAXXX0808 | 19523 |
2 | 868731560082458910-1 | GGOEAXXX0808 | 8312 |
3 | 4805474958539278422-1 | GGOEAXXX0808 | 62892 |
4 | 8353360074725418910-3 | GGOEAXXX0808 | 4883 |
5 | 8253742246691621007-2 | GGOEAXXX0808 | 10 |
6 | 7211254729136975568-1 | GGOEAXXX0808 | 96090 |
7 | 66777488032155805-1 | GGOEAXXX0808 | 3893 |
8 | 0804312527321649470-1 | GGOEAXXX0808 | 7539 |
9 | 2965429397557124425-1 | GGOEAXXX0808 | 21776 |
10 | 8459600677575627508-1 | GGOEAXXX0808 | 6265 |
Membeli slot fleksibel
Jika Anda menggunakan harga on demand untuk BigQuery, agar dapat melatih model faktorisasi matriks, Anda harus membeli slot fleksibel, lalu membuat reservasi dan penetapan untuk BigQuery. Jika menggunakan harga tetap dengan BigQuery, Anda dapat melewati bagian ini dan membuka Membuat, melatih, dan men-deploy model.
Untuk membeli slot fleksibel, Anda harus memiliki peran IAM yang menyertakan izin bigquery.reservations.create
. Izin ini diberikan kepada project owner, dan disertakan dalam peran IAM Admin BigQuery (roles/bigquery.admin
) dan BigQuery Resource Admin (roles/bigquery.resourceAdmin
).
Di konsol Google Cloud, buka halaman BigQuery:
Klik Pengelolaan kapasitas, lalu klik Reservasi.
Jika Anda dialihkan ke halaman BigQuery Reservasi API untuk mengaktifkan API, klik Enable. Jika tidak, lanjutkan ke langkah berikutnya.
Di tab Reservasi, klik Beli Slot.
Di halaman Beli Slot, lakukan tindakan berikut:
- Dalam daftar Durasi komitmen, pilih Flex.
- Dalam daftar Location, pilih us (multiple domains in United States)
- Dalam daftar Jumlah slot, pilih 500.
- Klik Next.
Di kolom Konfirmasi pembelian, ketik
CONFIRM
, lalu klik Pembelian.
Klik Lihat Komitmen Slot.
Tunggu hingga 20 menit hingga kapasitas disediakan. Setelah kapasitas disediakan, kolom Status komitmen slot akan menampilkan
.Klik Buat Reservasi, lalu tetapkan opsi berikut:
- Di Nama reservasi, masukkan
model
. - Dalam daftar Location, pilih us (multiple domains in United States)
- Pada Jumlah slot, masukkan
500
. - Klik Simpan. Tindakan ini akan mengembalikan Anda ke halaman Reservations.
- Di Nama reservasi, masukkan
Di samping reservasi
model
, di kolom Tindakan, pilih Buat Tugas.Di bagian Select an organization, folder, or project, klik Browse.
Masukkan nama project yang Anda gunakan untuk solusi ini, atau pilih dari daftar.
Klik Pilih, lalu klik Buat.
Membuat, melatih, dan men-deploy model
Untuk membuat, melatih, dan men-deploy model faktorisasi matriks, lakukan hal berikut:
- Di halaman BigQuery Konsol Google Cloud, klik Compose new query.
Jalankan pernyataan SQL
CREATE MODEL
:CREATE OR REPLACE MODEL bqml.retail_recommender` OPTIONS(model_type='matrix_factorization', user_col='userId', item_col='itemId', rating_col='session_duration', feedback_type='implicit' ) AS SELECT * FROM bqml.aggregate_web_stats;
Setelah pelatihan selesai, model yang dilatih akan di-deploy sebagai model bqml.retail_recommender
.
Menggunakan model terlatih untuk membuat prediksi
Di bagian ini, untuk mendapatkan prediksi dari model bqml.retail_recommender
yang di-deploy, Anda menggunakan fungsi SQL ML.RECOMMEND
.
Pada halaman BigQuery konsol Google Cloud, buat kueri dan dapatkan prediksi yang mewakili 5 rekomendasi teratas untuk userId yang ditentukan:
DECLARE MY_USERID STRING DEFAULT "0824461277962362623-1"; SELECT * FROM ML.RECOMMEND(MODEL `bqml.retail_recommender`, (SELECT MY_USERID as userID) ) ORDER BY predicted_session_duration_confidence DESC LIMIT 5;
Output-nya menampilkan baris untuk keyakinan durasi sesi yang diprediksi (lebih tinggi lebih baik), ID pengguna terkait, dan ID item yang dilihat pengguna. Outputnya mirip dengan yang berikut ini:
Baris predicted_session_duration_confidence userId itemId 1 29011.10454702254 0824461277962362623-1 GGOEGAAX0574 2 28212.99840462358 0824461277962362623-1 GGOEGDHQ015399 3 28126.79442866013 0824461277962362623-1 GGOEGETR014599 4 27303.60852083874 0824461277962362623-1 GGOEGAAX0338 5 25692.370609851147 0824461277962362623-1 GGOEGEFR024199 Untuk mendapatkan 5 prediksi teratas bagi semua pengguna, jalankan pernyataan SQL berikut. Pernyataan tersebut menghasilkan banyak baris, sehingga output ditulis ke tabel, kemudian sepuluh data pertama diambil sehingga Anda dapat melihat contoh data.
-- Create output table of top 5 predictions CREATE OR REPLACE TABLE bqml.prod_recommendations AS ( WITH predictions AS ( SELECT userId, ARRAY_AGG(STRUCT(itemId, predicted_session_duration_confidence) ORDER BY predicted_session_duration_confidence DESC LIMIT 5) as recommended FROM ML.RECOMMEND(MODEL bqml.retail_recommender) GROUP BY userId ) SELECT userId, itemId, predicted_session_duration_confidence FROM predictions p, UNNEST(recommended) ); -- Show table SELECT * FROM bqml.prod_recommendations ORDER BY userId LIMIT 10;
Output-nya menampilkan beberapa ID pengguna, ID item yang dilihat pengguna, dan keyakinan durasi sesi yang diprediksi. Outputnya mirip dengan hal berikut ini:
Baris userId itemId predicted_session_duration_confidence 1 000170187170673177-6 GGOEGDHQ015399 15931.156936770309 2 000170187170673177-6 GGOEGAAX0574 20178.608474922632 3 000170187170673177-6 GGOEGAAX0338 20247.337545389437 4 000170187170673177-6 GGOEGETR014599 15524.355852692066 5 000170187170673177-6 GGOEGEFR024199 16443.307099088597 6 000338059556124978-1 GGOEGAAX0338 18143.067737280064 7 000338059556124978-1 GGOEGAAX0279 16531.718889063464 8 000338059556124978-1 GGOEGAAX0574 20916.672241880347 9 000338059556124978-1 GGOEGETR014599 16155.674211782945 10 000338059556124978-1 GGOEGEFR024199 18417.17554202264
Menyiapkan data Spanner
Di bagian berikut ini, Anda akan menggunakan gcloud CLI dan Maven. Anda dapat menjalankan perintah untuk kedua alat dari Cloud Shell. Tidak diperlukan penginstalan untuk menggunakan alat ini.
Di Cloud Shell, clone repositori GitHut rekomendasi produk yang berisi skrip dan paket proxy API rekomendasi produk untuk menyiapkan data dalam database Spanner:
git clone https://github.com/apigee/devrel/tree/main/references/product-recommendations cd product-recommendations-v1
Buat akun layanan
datareader
dan tetapkan peran IAM ke akun tersebut. Akun layanan digunakan untuk mengakses data di BigQuery dan database Spanner dari proxy API.gcloud iam service-accounts create datareader --display-name="Data reader for BigQuery and Spanner Demo" gcloud iam service-accounts list | grep datareader gcloud iam service-accounts create datareader --display-name="Data reader for Apigee, BigQuery, and Spanner Demo" gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA" --role="roles/spanner.databaseUser" --quiet gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA" --role="roles/spanner.databaseReader" --quiet gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA" --role="roles/bigquery.dataViewer" --quiet gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA" --role="roles/bigquery.user" --quiet
Menetapkan variabel lingkungan:
# For Apigee export PROJECT_ID=APIGEE_PROJECT export ORG=$PROJECT_ID export ENV=eval export ENVGROUP_HOSTNAME=API_DOMAIN_NAME export SA=datareader@$PROJECT_ID.iam.gserviceaccount.com # For Cloud Spanner export SPANNER_INSTANCE=product-catalog export SPANNER_DATABASE=product-catalog-v1 export REGION=regional-us-east1
Ganti kode berikut:
APIGEE_PROJECT
: nama project Apigee Anda.API_DOMAIN_NAME
: nama host yang dikonfigurasi di halaman Admin > Lingkungan > Grup di UI Apigee.
Di halaman BigQuery Konsol Google Cloud, pilih tabel
prod_recommendations
, lalu klik tab Preview untuk melihat hasilnya.- Salin nilai
userId
apa pun. Di Cloud Shell, tetapkan variabel lingkungan:
export CUSTOMER_USERID=USER_ID
Ganti
USER_ID
dengan nilaiuserId
yang Anda salin di langkah sebelumnya.
- Salin nilai
Di Cloud Shell, tampilkan hasil rekomendasi produk yang diurutkan untuk nilai
CUSTOMER_USERID
yang ditentukan:bq query --nouse_legacy_sql \ "SELECT * FROM \`$PROJECT_ID.bqml.prod_recommendations\` AS A where A.userid = \"$CUSTOMER_USERID\"" \ ORDER BY A.predicted_session_duration_confidence DESC
Output menampilkan ID pengguna individual, ID item yang dilihat pengguna, dan keyakinan durasi sesi yang diprediksi. Outputnya mirip dengan hal berikut ini:
+-----------------------+----------------+--------------------------------------------+ | userId | itemId | predicted_session_duration_confidence | +-----------------------+----------------+--------------------------------------------+ | 6929470170340317899-1 | GGOEGAAX0037 | 40161.10446942589 | | 6929470170340317899-1 | GGOEYDHJ056099 | 27642.28480729123 | | 6929470170340317899-1 | GGOEGAAX0351 | 27204.111219270915 | | 6929470170340317899-1 | GGOEGDWC020199 | 25863.861349754334 | | 6929470170340317899-1 | GGOEGAAX0318 | 24585.509088154067 | +-----------------------+----------------+--------------------------------------------+
Membuat database Spanner dan mengimpor data katalog produk
Di Cloud Shell, buat instance Spanner di region yang ditentukan, buat database katalog produk, dan impor data:
./setup_spanner.sh
Skrip menggunakan variabel lingkungan
CUSTOMER_USERID
dan menampilkan entri yang dibuat.Katalog produk Spanner hanya berisi item yang digunakan dalam langkah pelatihan BigQuery untuk pengguna tertentu. Oleh karena itu, jika Anda mengubah variabel lingkungan
CUSTOMER_USERID
setelah membuat data katalog produk di database Spanner, Anda harus menjalankan ulang skrip shellsetup_spanner.sh
untuk mengisi ulang data.Verifikasi data di database Spanner:
gcloud spanner databases execute-sql $SPANNER_DATABASE --sql='SELECT * FROM products'
Output menampilkan ID produk dan informasi deskriptif dari katalog produk Spanner, termasuk harga dan jalur gambar. Outputnya mirip dengan hal berikut ini:
productid name description price discount image GGOEGAAX0037 Aviator Sunglasses The ultimate sunglasses 42.42 0 products_Images/sunglasses.jpg GGOEGAAX0318 Bamboo glass jar Bamboo glass jar 19.99 0 products_Images/bamboo-glass-jar.jpg GGOEGAAX0351 Loafers Most comfortable loafers 38.99 0 products_Images/loafers.jpg GGOEGDWC020199 Hair dryer Hottest hair dryer 84.99 0 products_Images/hairdryer.jpg GGOEYDHJ056099 Coffee Mug Best Coffee Mug 4.2 0 products_Images/mug.jpg
Men-deploy proxy Apigee
Di bagian ini, Anda akan menjalankan perintah Maven untuk membuat resource berikut:
- Proxy bernama
product-recommendations-v1
- Produk API bernama
product-recommendations-v1-$ENV
- Pengguna developer aplikasi bernama
demo@any.com
- Aplikasi bernama
product-recommendations-v1-app-$ENV
Untuk membuat resource, Maven menggunakan file pom.xml
dari repositori
GitHub. File berisi petunjuk dan langkah penginstalan.
Bagian profil file pom.xml
berisi nilai untuk apigee.org
,
apigee.env
, api.northbound.domain
, gcp.projectid
, googletoken.email
, dan
api.userid
. Nilai ini bervariasi menurut project dan ditetapkan menggunakan command
line. Contoh berikut menunjukkan bagian file pom.xml
yang
berisi nilai:
<profile>
<id>eval</id>
<properties>
<apigee.profile>eval</apigee.profile>
<apigee.org>${apigeeOrg}</apigee.org>
<apigee.env>${apigeeEnv}</apigee.env>
<api.northbound.domain>${envGroupHostname}</api.northbound.domain>
<gcp.projectid>${gcpProjectId}</gcp.projectid>
<apigee.googletoken.email>${googleTokenEmail}</apigee.googletoken.email>
<api.userid>${customerUserId}</api.userid>
</properties>
</profile>
Anda menetapkan nilai ini lebih awal saat menyiapkan data Spanner.
Untuk men-deploy proxy, lakukan hal berikut:
Di Cloud Shell, instal proxy dan artefak terkaitnya, lalu uji API:
mvn -P eval clean install -Dbearer=$(gcloud auth print-access-token) \ -DapigeeOrg=$ORG \ -DapigeeEnv=$ENV \ -DenvGroupHostname=$ENVGROUP_HOSTNAME \ -DgcpProjectId=$PROJECT_ID \ -DgoogleTokenEmail=$SA \ -DcustomerUserId=$CUSTOMER_USERID
Output menunjukkan eksekusi langkah-langkah penginstalan dan hasil panggilan API pengujian integrasi. Ada satu panggilan ke endpoint
/openapi
dan panggilan lainnya ke endpoint/products
. Hasil pengujian memverifikasi bahwa proxy API telah diinstal, di-deploy, dan beroperasi. Output juga menampilkan kredensial aplikasi, yang dapat Anda gunakan untuk panggilan pengujian API berikutnya.
Menguji API rekomendasi
Di Cloud Shell, tetapkan variabel lingkungan untuk Kunci API aplikasi dengan melakukan panggilan curl ke Apigee API:
APIKEY=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://apigee.googleapis.com/v1/organizations/$ORG/developers/demo@any.com/apps/product-recommendations-v1-app-$ENV \ | jq -r .credentials[0].consumerKey)
Catat nilai
APIKEY
. Anda memerlukan informasi ini jika nantinya Anda membuat aplikasi AppSheet secara opsional.Guna mendapatkan hasil untuk nilai
CUSTOMER_USERID
yang Anda tentukan saat menginstal proxy API, lakukan panggilan pengujian:curl -s https://$ENVGROUP_HOSTNAME/v1/recommendations/products \ -H "x-apikey:$APIKEY" | jq
API yang ditentukan oleh Spesifikasi OpenAPI (OAS) memungkinkan permintaan menentukan header berikut:
x-apikey
: Kunci konsumen aplikasi dari skema keamanan.x-userid
: ID pengguna yang membuat permintaan. Jika tidak diberikan, nilai ini akan ditetapkan secara default ke nilaiCUSTOMER_USERID
yang dikonfigurasi di proxy.cache-control
: Jumlah waktu untuk meng-cache respons. Header ini memungkinkan Anda meng-cache respons selama 300 detik atau menggantinya dengan menentukanno-cache
.
Untuk mengubah nilai CUSTOMER_USERID
atau mengontrol penyimpanan dalam cache, Anda dapat menetapkan nilai header seperti yang ditunjukkan dalam contoh panggilan berikut:
curl -s "https://$ENVGROUP_HOSTNAME/v1/recommendations/products" \
-H "x-apikey:$APIKEY" \
-H "x-userid:$CUSTOMER_USERID" \
-H "Cache-Control:no-cache" | jq
Respons terhadap panggilan contoh serupa dengan berikut ini:
{
"products": [
{
"productid": "GGOEGAAX0037",
"name": "Aviator Sunglasses",
"description": "The ultimate sunglasses",
"price": "42.42",
"image": "products_Images/sunglasses.jpg"
},
{
"productid": "GGOEYDHJ056099",
"name": "Coffee Mug",
"description": "Best Coffee Mug",
"price": "4.2",
"image": "products_Images/mug.jpg"
},
{
"productid": "GGOEGAAX0351",
"name": "Loafers",
"description": "Most comfortable loafers",
"price": "38.99",
"image": "products_Images/loafers.jpg"
},
{
"productid": "GGOEGDWC020199",
"name": "Hairdryer",
"description": "Hotest hairdryer",
"price": "84.99",
"image": "products_Images/hairdryer.jpg"
},
{
"productid": "GGOEGAAX0318",
"name": "Bamboo glass jar",
"description": "Bamboo glass jar",
"price": "19.99",
"image": "products_Images/bamboo-glass-jar.jpg"
}
]
}
Kebijakan Apigee
Kebijakan Apigee yang tercantum di bagian berikut digunakan dalam paket proxy API.
Pra-alur
- SpikeArrest
- Melindungi layanan BigQuery backend dari lonjakan traffic.
- Kuota
- Membatasi permintaan API berdasarkan aplikasi konsumen dan developer. Batas throttle dikonfigurasi dalam produk API.
- ResponsCache - uri
- Kurangi permintaan ke data warehouse BigQuery dengan meng-cache respons dari layanan.
Alur produk
- ApplyMessage - buat permintaan kueri
- Tetapkan permintaan HTTP dengan kueri SQL untuk mengambil daftar rekomendasi produk dari set data BigQuery.
- Kebijakan JavaScript dan ExtractVariable
- Format data dari layanan BigQuery dan buat pesan respons yang lebih mudah digunakan.
- LookupCache - Sesi Spanner
- Cari ID sesi database Spanner dari cache Apigee.
- Info Layanan - Sesi Spanner
- Buat permintaan ke layanan Spanner dan buat sesi database jika cache Apigee tidak memiliki ID sesi atau ID-nya sudah tidak berlaku.
- filledCache - Sesi Spanner
- Isi ID sesi Spanner ke cache Apigee.
- ServiceCallout - pencarian katalog produk
- Ambil detail produk dari database katalog produk Spanner.
- JavaScript - memformat data produk
- Buat pesan respons API yang sesuai dengan OAS dengan memformat data dari database katalog produk.
Alur OpenAPI
- TetapkanMessage - JSON OAS
- Tetapkan respons JSON OAS untuk API.
Opsional: Membuat aplikasi AppSheet menggunakan Apigee sebagai sumber data
Untuk menampilkan rekomendasi produk kepada pengguna akhir situs e-commerce dan kepada pengguna bisnis, Anda dapat membuat aplikasi AppSheet seperti yang ditunjukkan di bagian ini.
Membuat akun AppSheet
Buat akun AppSheet menggunakan alamat email Anda.
Membuat sumber data
AppSheet menggunakan proxy API sebagai sumber data untuk aplikasi baru Anda. Untuk membuat sumber data, lakukan hal berikut:
- Login ke AppSheet.
- Di halaman Akun Saya, klik Sumber > Sumber Data Baru.
- Dalam dialog Add a new data source, masukkan nama proxy
product-recommendations-v1
, lalu klik Apigee. Dalam dialog Add Apigee API connection information, setel opsi berikut:
- Pilih Manual.
- Di kolom Kunci API Apigee, masukkan kunci API untuk aplikasi Anda,
yang digunakan untuk menguji proxy. Jika Anda tidak memiliki kunci API, dapatkan di Cloud Shell dengan menjalankan
echo $APIKEY.
Di kolom Jalur Dasar API Apigee, masukkan:
https://ENVGROUP_HOSTNAME/v1/recommendations
Ganti ENVGROUP_HOSTNAME dengan nama host yang dikonfigurasi di UI Apigee untuk Admin > Environments > Groups.
Di kolom Jalur Resource API, masukkan akhiran jalur
products
.Klik Uji.
Setelah pengujian berhasil diselesaikan, klik Authorize Access.
Setelah Anda mengizinkan akses, konsol AppSheet akan menampilkan kartu baru untuk product-recommendations-v1.
Membuat aplikasi
- Buka halaman products-template app AppSheet.
- Klik Salin dan Sesuaikan. Dialog Clone your App akan ditampilkan.
- Di kolom App name, masukkan nama proxy,
product-recommendations-v1
, lalu klik Copy app. Tunggu beberapa beberapa saat sampai aplikasi Anda selesai dibuat. - Di halaman Selamat datang di aplikasi Anda, klik Sesuaikan aplikasi. Secara default, aplikasi menggunakan sumber data sampel di Spreadsheet Google.
Ubah sumber data agar cocok dengan sumber data Apigee yang Anda buat sebelumnya:
- Klik + Tabel Baru, lalu klik rekomendasi produk v1.
- Pada dialog Choose a Sheet/Table, pilih products.
- Dalam dialog Create a new table, klik Read-Only, lalu klik Add This Table.
Aplikasi ditampilkan dengan tab products 2 dan tampilan data yang berbeda. Tampilan data baru memiliki nilai yang berbeda untuk deskripsi dan harga setiap item. Perhatikan bahwa urutan item tidak sama dengan urutan prediksi.
Ubah urutan item yang ditampilkan dari sumber data dengan menghapus pengurutan default AppSheet:
- Di menu navigasi samping, pilih UX.
- Di bagian Tampilan Utama, pilih produk 2.
- Di bagian View Options, di samping Sort by, hapus entri untuk name, Ascending. Perhatikan bahwa urutan yang ditampilkan di AppSheet sekarang sama dengan hasil panggilan API, dengan item terakhir dari respons di bagian bawah.
Simpan aplikasi.
Anda juga dapat menghapus UX dan tabel Produk asli, serta mengganti nama tabel "produk 2" dan tampilan menjadi "Rekomendasi Produk".
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam prosedur ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
Untuk menghindari biaya berulang, hapus reservasi Slot BigQuery Flex, set data BigQuery, dan model AI Platform.
Menghapus reservasi Slot BigQuery Flex
- Di halaman BigQuery konsol Google Cloud, pilih Capacity management, lalu klik tab Reservasi.
- Buka entri model.
- Di samping reservasi, klik View actions, lalu klik Delete.
- Di samping entri model, klik View actions, lalu klik Delete.
Di Cloud Shell, hapus deployment, proxy, dan artefak terkaitnya:
mvn -P eval process-resources -Dbearer=$(gcloud auth print-access-token) \ -DapigeeOrg=$ORG -DapigeeEnv=$ENV -Dskip.integration=true \ apigee-config:apps apigee-config:apiproducts apigee-config:developers -Dapigee.config.options=delete \ apigee-enterprise:deploy -Dapigee.options=clean
Hapus resource Spanner:
./cleanup_spanner.sh
Menghapus set data BigQuery
- Di halaman BigQuery Konsol Google Cloud, di bagian Resource, luaskan project yang Anda gunakan untuk solusi ini.
- Pilih set data bqml, lalu klik Delete dataset.
- Di jendela overlay yang muncul, masukkan
bqml
, lalu klik Delete.
Menghapus model AI Platform
Di konsol Google Cloud, buka halaman AI Platform Models.
Dalam daftar model, klik rpm_bqml_model.
Di halaman Model Details, centang kotak untuk versi V_1 (default).
Klik Lainnya, lalu klik Hapus.
Setelah versi selesai dihapus, klik Back untuk kembali ke daftar model.
Pilih kotak centang untuk model rpm_bqml_model.
Klik Lainnya, lalu klik Hapus.
Di Cloud Shell, hapus akun layanan:
gcloud iam service-accounts delete $SA
Langkah selanjutnya
- Pelajari cara memanggil layanan Google Cloud dari proxy API Apigee.
- Untuk arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.