目标
在本教程中,您将完成以下操作:
- 了解如何创建算术计算字段。
- 创建条件表达式,以评估您的数据并返回不同的结果。
- 了解实现计算字段的不同方法。
场景
假设您管理一家在线宠物用品商店。您可能会衡量销售数据,例如产品代码 (SKU)、商品名称、价格和销售数量。示例如下:
| SKU | 推荐项 | 价格 | 销售数量 |
|---|---|---|---|
| D-001 | Healthy Dog 狗粮 | 79.96 |
16 |
| B-002 | 鹦鹉栖木 | 74.97 |
8 |
| B-001 | Pretty Bird 鸟食 | 31.96 |
20 |
| C-002 | Hungry Kitty 猫粮 | 29.98 |
3 |
| D-002 | Playful Puppy 玩具 | 17.97 |
11 |
| C-001 | Happy Cat 猫薄荷 |
14.97 |
4 |
数据洞察中的计算字段可帮助您处理和扩展此数据。在本练习中,您将使用计算字段执行以下任务:
- 计算每笔订单的总价值。
- 对超过一定金额的订单应用折扣。
- 将销售额划分为各个部门。
样本数据
如需按书面说明完成本练习,请使用以下样本数据。否则,请使用您自己的数据(并相应地调整字段名称)。您需要有权访问 Google 表格。或者,您也可以使用文件上传连接器将数据导入数据洞察。
将此数据复制并粘贴到文本文件中:
SKU,Item,Price,Qty Sold D-001,Healthy Dog Dog Food,79.96,16 B-002,Parrot Perch,74.97,8 B-001,Pretty Bird Bird Seed,31.96,20 C-002,Hungry Kitty Cat Food,29.98,3 D-002,Playful Puppy Toy,17.97,11 C-001,Happy Cat Catnip,14.97,4
第 1 步:准备数据
- 复制上一个框中的样本数据。
- 打开文本编辑器,粘贴样本数据,然后将文件另存为
pet-store-data.csv。
在 Google 表格中,依次选择文件 > 导入 。
选择上传 ,然后上传您在第 2 步中创建的样本数据文件。
选择替换电子表格 。
将电子表格命名为
Pet Store。
第 2 步:创建报告并添加数据
- 在数据洞察中创建新报告。
- 在为报告添加数据 面板中,选择 Google 表格 连接器。
- 选择您刚刚创建的
Pet Store电子表格和工作表。 - 保留默认选项。
- 点击添加 。
稍后,您将看到新报告,画布上会有一个表格,该表格使用 Pet Store 数据源中的字段。
第 3 步:创建小计字段
在菜单中,依次选择资源 > 管理添加的数据源 。
找到 Pet Store 数据源,然后点击
修改 。随即会显示数据源字段 面板。
点击
添加字段。随即会显示计算字段编辑器。
在字段名称中,输入
Subtotal。在公式 中,输入
Price * Qty Sold。点击保存 。
点击所有字段 ,返回到主数据源编辑器。
第 4 步:创建折扣字段
假设您想根据订单价值提供不同的折扣率。创建另一个名为 Discount 的计算字段,用于评估小计 字段并应用以下折扣。
| 小计价值 | 折扣率 |
| 0 - 99 | 0 |
| 100 - 499 | 5% |
| 500 或更多 | 10% |
提示:
- 在此步骤中,您只需计算折扣。您将在下一步中应用折扣,方法是将小计 字段乘以折扣 字段。
- 使用
CASE表达式 评估 小计 字段。
- 为每个折扣率使用一个
WHEN子句。- 使用
ELSE子句返回全价(0% 折扣)。- 以小数值表示折扣。例如,25% 的折扣表示为 .25。
解决方案
CASE WHEN Subtotal > 499 THEN .9 WHEN Subtotal > 100 THEN .95 ELSE 1 END
第 5 步:创建总计字段
创建另一个名为 Total 的计算字段,用于将小计 字段乘以折扣 字段。
解决方案
Subtotal * Discount
第 6 步:创建部门字段
创建最后一个名为 Department 的计算字段,用于解析 SKU 字段并根据 SKU 分配新值。您将把与狗、猫和鸟相关的商品划分为不同的部门。
提示: 再次使用
CASE语句,这次使用STARTS_WITH(或REGEXP_MATCH)函数。
解决方案
CASE WHEN STARTS_WITH(SKU, "C") THEN "Cat" WHEN STARTS_WITH(SKU, "D") THEN "Dog" WHEN STARTS_WITH(SKU, "B") THEN "Bird" ELSE "Misc" END
第 7 步:在报告中查看数据
- 保存部门 字段后,点击左侧的所有字段 ,返回到数据源编辑器。
- 点击完成 ,然后关闭“管理数据源”面板。
现在,您可以按照以下步骤将新的计算字段添加到图表中:
- 选择该表格。
- 将您创建的每个计算字段添加到表格中,方法是将它们从数据 面板拖到表格中或表格的设置 面板中。
替代解决方案
之前的解决方案将问题分解为各个部分,并创建离散字段来处理每个部分,就像您对小计、折扣和总计字段所做的那样。
另一种方法是在单个计算字段中执行所有计算。例如,您可以将本教程的第 3-5 步合并为一个字段:
CASE WHEN Price * Qty Sold > 499 THEN (Price * Qty Sold) * .9 WHEN Price * Qty Sold > 100 THEN (Price * Qty Sold) * .95 ELSE Price * Qty Sold END
每种方法都有其优点和缺点:
将复杂的公式分解为单独的字段可以使公式更易于阅读和编写,并且不易出错。单独的字段在更多情况下也很有用。例如,使用单独的字段表示折扣率可让您在其他计算中使用该字段,或在报告中显示该字段。使用大量离散计算字段创建公式的一个缺点是,您可能不清楚每个字段的作用,因此需要单独修改它们才能了解它们的计算方式。
另一方面,将所有逻辑集中到一个字段中可以使公式更易于理解和修改。但您可能还需要进行大量重复输入,并且复杂的公式可能更难扩展或维护。例如,假设您有 10 个产品层级,每个层级都有不同的订单数量阈值。或者,假设您想对不同的产品线使用相同的折扣。在这些情况下,为这些阈值和折扣使用单独的字段可能更轻松或更高效。
中间路径
此解决方案融合了前面介绍的两种方法。它将主要逻辑保留在单个字段中,同时将一些依赖逻辑分解为单独的字段:
CASE WHEN Subtotal > Large Order THEN Subtotal * Large Order Discount WHEN Subtotal > Medium Order THEN Subtotal * Medium Order Discount ELSE Subtotal END
对于此解决方案,我们创建了单独的字段来保存大订单和中订单的值以及相应的折扣。


此解决方案的优点是易于阅读、灵活且相对容易根据需要进行调整。