本教程介绍如何创建一个 API 来预测客户进行购买的可能性。要创建 API,请使用 Apigee、BigQuery ML 和 Cloud Spanner。
本教程面向 API 开发人员和数据专家,他们希望通过为用户提供更加个性化的体验,通过全渠道和电子商务平台产生更多收入。本文假定您熟悉 BigQuery、Apigee、Google Cloud CLI 和 Apache Maven。
您创建的 API 使用在线预测根据您网站上的用户行为采取实时操作。在线预测将机器学习 (ML) 数据分析与商品目录和其他信息相结合,有助于您跨多个渠道为客户提供更好的体验。您创建的 API 的架构如下图所示:
下图显示了以下架构:
- 移动应用向部署在 Apigee 平台上的 API 发送请求。该请求会提取已登录用户的商品推荐数据。
- API 代理从 BigQuery 数据集中获取用户 ID 的商品推荐数据。
- API 代理发出外呼,以从 Cloud Spanner 实例上的商品主数据库中提取数据。
- API 代理聚合来自商品推荐和商品主要数据集的数据。
- 向移动应用返回响应。
目标
- 在 BigQuery 中创建客户购买意愿数据集。
- 将商品目录数据导入 Cloud Spanner 数据库。
- 导入和部署 Apigee API 代理。
- 将 BigQuery 的客户购买意愿数据与 Cloud Spanner 数据库中的商品目录和价格信息集成。
- 创建商品推荐的聚合视图。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- BigQuery 和 BigQuery ML 灵活槽
- Cloud Spanner
- Apigee
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
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.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
- 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_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- 如果您还没有 Apigee X 帐号,请设置 Apigee 以预配 Apigee X 实例。预配最多可能需要一个小时。
- 配置 Apigee X 组织以允许外部访问。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
使用 BigQuery ML 创建电子商务推荐数据集
在本部分中,您将使用 BigQuery ML 中的标准 SQL 查询来创建 ML 模型,使用 BigQuery 中的客户数据对其进行训练,然后进行部署。您无需导出数据或构建模型训练和部署流水线。BigQuery 会自动扩缩来处理所需的任何计算资源。
您在本教程中创建的机器学习模型使用矩阵分解,这是一种根据用户偏好数据创建推荐系统的常见且有效的方法。
在本教程中,您将使用在 BigQuery 上公开托管的 Google Analytics(分析)示例数据集。此数据集提供来自 Google Merchandise Store(销售 Google 品牌商品的真实电子商务商店)的 12 个月(2016 年 8 月至 2017 年 8 月)经过模糊处理的 Analytics 360 数据。
处理示例数据
使用矩阵分解时,可评估显式或隐式用户反馈以确定客户偏好。为了使用显式反馈,数据集必须包含有关用户商品偏好的数据,例如 1 到 5 的星级。如果没有显式反馈可用,则必须使用其他行为指标来推断客户偏好,例如查看用户在商品详情页面上花费的总时间。在本教程中,您将使用会话时长数据来推断客户偏好。
如需训练矩阵分解模型,您需要一个表,其中的列可用于标识客户、所评级商品和隐式评级。在本部分中,您将使用 userid
、itemId
和 session_duration
列创建此类表。session_duration
列包含用户在给定项目的商品页面上的会话时长。
要使用 Analytics(分析)示例数据集中的数据创建表,请执行以下操作:
在 Google Cloud Marketplace 中,转到 Analytics(分析)示例页面。
点击查看数据集。BigQuery SQL 工作区页面打开,其中选择了 Analytics(分析)示例数据集。
在浏览器部分中,点击您的项目旁边的
查看操作,然后点击创建数据集。在出现的创建数据集对话框中,执行以下操作:
- 在数据集 ID 字段中,输入
bqml
。 - 在数据位置列表中,选择 us(美国的多个区域)。
- 点击创建数据集。
- 在数据集 ID 字段中,输入
点击转到数据集,然后点击编写新查询。
在查询编辑器中,运行以下 SQL 语句以创建包含训练数据的表:
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 );
创建
bqml.aggregate_web_stats
表并填充训练数据。如需查看数据示例,请在查询编辑器中运行以下 SQL 语句:
SELECT * FROM bqml.aggregate_web_stats LIMIT 10;
在输出显示的表中,每个用户 ID 对应一行,其中包含用户查看的项 ID 及其会话的时长。输出内容类似如下:
行 | 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 |
购买灵活槽
如果您对 BigQuery 使用按需定价,为了训练矩阵分解模型,您必须购买灵活槽,然后为其创建预留和分配。如果您在 BigQuery 中使用固定价格,则可以跳过本部分,转到创建、训练和部署模型。
如需购买灵活槽,您必须拥有一个包含 bigquery.reservations.create
权限的 IAM 角色。此权限授予项目所有者,且包含在 BigQuery Admin (roles/bigquery.admin
) 和 BigQuery Resource Admin (roles/bigquery.resourceAdmin
) IAM 角色中。
在 Google Cloud 控制台中,进入 BigQuery 页面:
点击容量管理,然后点击预留。
如果系统将您重定向到 BigQuery Reservation API 页面以启用该 API,请点击启用。否则,请继续下一步。
在预留标签页中,点击购买槽。
在购买槽页面上,执行以下操作:
- 在承诺期限列表中,选择灵活。
- 在位置列表中,选择 us(美国的多个区域)。
- 在槽数列表中,选择 500。
- 点击下一步。
在确认购买字段中,输入
CONFIRM
,然后点击购买。
点击查看槽承诺。
请等待 20 分钟,让系统完成容量预配。预配容量之后,槽承诺状态列会显示
。点击创建预留,然后设置以下选项:
- 在预留名称中,输入
model
。 - 在位置列表中,选择 us(美国的多个区域)。
- 在槽数中,输入
500
。 - 点击保存。这将返回到预留页面。
- 在预留名称中,输入
在
model
预留旁边的操作列中,选择创建分配。在选择组织、文件夹或项目中,点击浏览。
输入要在其中完成本教程的项目的名称,或从列表中选择该项目。
点击选择,然后点击创建。
创建、训练和部署模型
如需创建、训练和部署矩阵分解模型,请执行以下操作:
- 在 Google Cloud 控制台 BigQuery 页面中,点击 编写新查询。
运行
CREATE MODEL
SQL 语句: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;
训练完成后,经过训练的模型将部署为 bqml.retail_recommender
模型。
使用经过训练的模型进行预测
在本部分中,如需使用已部署的 bqml.retail_recommender
模型进行预测,请使用 ML.RECOMMEND
SQL 函数。
在 Google Cloud 控制台 BigQuery 页面中,编写查询并获取代表指定 userId 的前 5 条建议的预测:
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;
输出会显示预测会话时长置信度(越高越好)、关联的用户 ID 和用户查看的项目 ID 的行。输出内容类似如下:
行 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 如需获取所有用户的前 5 项预测,请运行以下 SQL 语句。该语句会生成多行,因此将输出写入表中,然后检索前十条记录,以便您能查看数据示例。
-- 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;
输出会显示多个用户 ID、用户查看的内容 ID 以及预测的会话时长置信度。输出类似于以下内容:
行 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
设置 Cloud Spanner 数据
在本教程的以下部分中,您将使用 gcloud CLI 和 Maven。您可以通过 Cloud Shell 运行这两个工具的命令。无需安装,即可使用这些工具。
在 Cloud Shell 中,克隆商品推荐 GitHut 代码库,其中包含商品推荐 API 代理软件包以及用于在 Cloud Spanner 数据库中设置数据的脚本:
git clone https://github.com/apigee/devrel/tree/main/references/product-recommendations cd product-recommendations-v1
创建
datareader
服务帐号并为其分配 IAM 角色。该服务帐号用于通过 API 代理访问 BigQuery 和 Cloud Spanner 数据库中的数据。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
设置环境变量:
# For ApigeeX export PROJECT_ID=APIGEEX_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
替换以下内容:
APIGEEX_PROJECT
:您的 Apigee X 项目的名称。API_DOMAIN_NAME
:在 Apigee X 界面中的“管理员 > 环境 > 群组”页面中配置的主机名。
在 Google Cloud 控制台 BigQuery 页面中,选择
prod_recommendations
表,然后点击预览标签页以查看结果。- 复制任意
userId
值。 在 Cloud Shell 中,设置环境变量:
export CUSTOMER_USERID=USER_ID
将
USER_ID
替换为上一步中复制的userId
值。
- 复制任意
在 Cloud Shell 中,显示指定
CUSTOMER_USERID
值的有序商品推荐结果: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
输出会显示个人用户 ID、用户查看的项 ID 以及预测的会话时长置信度。输出类似于以下内容:
+-----------------------+----------------+--------------------------------------------+ | 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 | +-----------------------+----------------+--------------------------------------------+
创建 Cloud Spanner 数据库并导入商品目录数据
在 Cloud Shell 中,在指定区域中创建一个 Cloud Spanner 实例,创建商品目录数据库并导入数据:
./setup_spanner.sh
该脚本使用
CUSTOMER_USERID
环境变量,并显示已创建的条目。Cloud Spanner 商品目录仅包含在特定用户的 BigQuery 训练步骤中使用的项。因此,如果您在 Cloud Spanner 数据库中创建商品目录数据后更改了
CUSTOMER_USERID
环境变量,则必须重新运行setup_spanner.sh
shell 脚本以重新填充数据。验证 Cloud Spanner 数据库中的数据:
gcloud spanner databases execute-sql $SPANNER_DATABASE --sql='SELECT * FROM products'
输出会显示 Spanner 商品目录中的商品 ID 和描述性信息,包括价格和图片路径。输出类似于以下内容:
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
部署 Apigee 代理
在本部分中,您将运行 Maven 命令以创建以下资源:
- 名为
product-recommendations-v1
的代理 - 名为
product-recommendations-v1-$ENV
的 API 商品 - 名为
demo@any.com
的应用开发者用户 - 名为
product-recommendations-v1-app-$ENV
的应用
为了创建资源,Maven 使用 GitHub 代码库中的 pom.xml
文件。该文件包含安装说明和步骤。
pom.xml
文件的配置文件部分包含 apigee.org
、apigee.env
、api.northbound.domain
、gcp.projectid
、googletoken.email
和 api.userid
的值。这些值因项目而异,并且使用命令行设置。以下示例显示了包含值的 pom.xml
文件部分:
<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>
您之前在设置 Cloud Spanner 数据时设置了这些值。
如需部署代理,请执行以下操作:
在 Cloud Shell 中,安装代理及其关联的工件,然后测试 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
输出会显示安装步骤的执行和集成测试 API 调用的结果。其中一个调用
/openapi
端点,另一个调用/products
端点。测试结果会验证 API 代理是否已安装、已部署且可正常运行。输出还显示应用凭据,可用于后续 API 测试调用。
测试 Recommendations API
在 Cloud Shell 中,通过向 Apigee API 进行 curl 调用来为应用的 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)
记下
APIKEY
值;如果您稍后选择创建 AppSheet 应用,则需要此信息。如需获取在安装 API 代理时指定的
CUSTOMER_USERID
值的结果,请进行测试调用:curl -s https://$ENVGROUP_HOSTNAME/v1/recommendations/products \ -H "x-apikey:$APIKEY" | jq
OpenAPI 规范 (OAS) 定义的 API 允许请求指定以下标头:
x-apikey
:安全方案中的应用使用方密钥。x-userid
:发出请求的用户标识符。如果未提供值,则此值默认为代理中配置的CUSTOMER_USERID
值。cache-control
:缓存响应的时间量。此标头可让您将响应缓存 300 秒,或通过指定no-cache
进行替换。
如需更改 CUSTOMER_USERID
值或控制缓存,您可以设置标头值,如以下示例调用所示:
curl -s "https://$ENVGROUP_HOSTNAME/v1/recommendations/products" \
-H "x-apikey:$APIKEY" \
-H "x-userid:$CUSTOMER_USERID" \
-H "Cache-Control:no-cache" | jq
对示例调用的响应如下所示:
{
"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"
}
]
}
Apigee 政策
以下部分列出的 Apigee 政策用于本教程的 API 代理软件包。
预流程
- SpikeArrest
- 避免后端 BigQuery 服务遇到流量激增的情况。
- 配额
- 根据使用方应用和开发者限制 API 请求。API 商品中配置了限制限制。
- ResponseCache - uri
- 通过缓存来自服务的响应来减少对 BigQuery 数据仓库的请求。
商品流程
- AssignMessage - 创建查询请求
- 使用 SQL 查询设置 HTTP 请求,以从 BigQuery 数据集中提取商品推荐列表。
- JavaScript 和 ExtractVariable 政策
- 设置 BigQuery 服务中的数据格式,并创建更方便用户使用的响应消息。
- LookupCache - Cloud Spanner 会话
- 从 Apigee 缓存中查找 Cloud Spanner 数据库会话 ID。
- ServiceCallout - Cloud Spanner 会话
- 如果 Apigee 缓存没有会话 ID 或 ID 已过期,则向 Cloud Spanner 服务发出请求并创建数据库会话。
- PopulateCache - Cloud Spanner 会话
- 将 Cloud Spanner 会话 ID 填充到 Apigee 缓存。
- ServiceCallout - 商品目录查询
- 从 Cloud Spanner 商品目录数据库中提取商品详情。
- JavaScript - 设置商品数据格式
- 通过设置商品目录数据库中的数据格式,创建符合 OAS 的 API 响应消息。
OpenAPI 流程
- AssignMessage - OAS JSON
- 设置 API 的 OAS JSON 响应。
可选:使用 Apigee 作为数据源创建 AppSheet 应用
要向电子商务网站最终用户和企业用户显示商品推荐,您可以创建一个 AppSheet 应用,如本部分所示。
创建 AppSheet 帐号
使用您的电子邮件地址创建 AppSheet 帐号。
创建数据源
AppSheet 使用 API 代理作为新应用的数据源。要创建数据源,请执行以下操作:
- 登录 AppSheet。
- 在我的帐号页面中,点击来源>新数据源。
- 在添加新数据源对话框中,输入代理
product-recommendations-v1
的名称,然后点击 Apigee。 在添加 Apigee API 连接信息对话框中,设置以下选项:
- 选择手动。
- 在 Apigee API 密钥字段中,输入用于测试代理的应用的 API 密钥。如果您没有 API 密钥,请运行
echo $APIKEY.
以在 Cloud Shell 中获取该密钥 在 Apigee API 基本路径字段中,输入以下内容:
https://ENVGROUP_HOSTNAME/v1/recommendations
将 ENVGROUP_HOSTNAME 替换为在 Apigee X 界面中为“管理员 > 环境 > 群组”配置的主机名。
在 API 资源路径字段中,输入路径后缀
products
。点击测试。
测试成功完成后,点击授予访问权限。
授予访问权限后,AppSheet 控制台会显示 product-recommendations-v1 的新图块。
创建应用
- 转到 AppSheet products-template 应用页面。
- 点击复制和自定义。此时将显示克隆您的应用对话框。
- 在应用名称字段中,输入代理的名称
product-recommendations-v1
,然后点击复制应用。稍等片刻,然后应用创建完成。 - 在欢迎使用您的应用页面中,点击自定义应用。默认情况下,该应用使用 Google 表格中的示例数据源。
更改数据源以匹配您之前创建的 Apigee 数据源:
- 点击 + 新建表,然后点击商品推荐 v1。
- 在选择表格/表对话框中,选择商品。
- 在创建新表对话框中,点击只读,然后点击添加此表。
应用会显示商品 2 标签页和不同的数据视图。新数据项目的每项说明和价格具有不同的值。请注意,项的顺序与预测的顺序不同。
移除 AppSheet 默认排序,以更改从数据源返回项的顺序:
- 在侧边导航菜单中,选择用户体验。
- 在主要视图部分中,选择商品 2。
- 在查看选项部分中的排序依据旁边,删除名称,升序的条目。您会注意到,AppSheet 中显示的顺序与 API 调用的结果相同,并且响应中的最后一项位于底部。
保存应用。
您可以选择性地删除原始商品表和用户体验,并将“商品 2”表重命名为“商品推荐”。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
逐个删除资源
为避免重复收费,请删除 BigQuery Flex 槽预留、BigQuery 数据集和 AI Platform 模型。
删除 BigQuery 灵活槽预留
- 在 Google Cloud 控制台 BigQuery 页面中,选择容量管理,然后点击预留标签页。
- 打开模型条目。
- 在预留旁边,点击 查看操作,然后点击删除。
- 在模型条目旁边,点击 查看操作,然后点击删除。
在 Cloud Shell 中,删除部署、代理及其关联的工件:
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
移除 Spanner 资源:
./cleanup_spanner.sh
删除 BigQuery 数据集
- 在 Google Cloud 控制台 BigQuery 页面的资源部分中,展开在其中完成本教程的项目。
- 选择 bqml 数据集,然后点击删除数据集。
- 在出现的叠加窗口中,输入
bqml
,然后点击删除。
删除 AI Platform 模型
在 Google Cloud 控制台中,转到 AI Platform 模型页面。
在模型列表中,点击 rpm_bqml_model。
在模型详情页面上,选中 V_1(默认)版本对应的复选框。
点击更多,然后点击删除。
版本删除完成后,点击返回返回到模型列表。
选中 rpm_bqml_model 模型对应的复选框。
点击更多,然后点击删除。
在 Cloud Shell 中, 删除服务帐号:
gcloud iam service-accounts delete $SA
后续步骤
- 了解如何从 Apigee API 代理调用 Google Cloud 服务。
- 如需查看更多参考架构、图表、教程和最佳实践,请浏览云架构中心。