目标
在本教程中,您将完成以下任务:
- 了解如何创建算术计算字段。
- 创建条件表达式来评估数据并返回不同的结果。
- 了解实现计算字段的不同方法。
场景
假设您管理着一家宠物用品网店。您可能会衡量销售数据,例如商品代码 (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 Cat Food | 29.98 |
3 |
| D-002 | Playful Puppy Toy | 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 步:创建报告并添加数据
片刻之后,您会看到新报告,画布上有一个使用 Pet Store 数据源中的字段的表格。
第 3 步:创建小计字段
在菜单中,选择资源 > 管理添加的数据源。
找到 Pet Store 数据源,然后点击
修改。随即会显示数据源字段面板。
点击
添加字段。系统会显示计算字段编辑器。
在字段名称中,输入
Subtotal。在公式中,输入
Price * Qty Sold。点击保存。
点击所有字段,返回主数据源编辑器。
第 4 步:创建折扣字段
假设您想根据订单金额提供不同的折扣率。创建另一个名为 Discount 的计算字段,用于评估 Subtotal 字段并应用以下折扣。
| 小计值 | 折扣率 |
| 0 - 99 | 0 |
| 100 - 499 | 5% |
| 500 或以上 | 10% |
提示:
- 在此步骤中,您只需计算折扣。您将在下一步中应用此税率,方法是将 Subtotal 字段乘以
1 - Discount。- 使用
CASE表达式对 Subtotal 字段求值。
- 为每个折扣率使用一个
WHEN子句。- 使用
ELSE子句返回 0% 的折扣 (0)。- 以小数值表示折扣。例如,25% 的折扣为
0.25。
解决方案
CASE WHEN Subtotal > 499 THEN 0.1 WHEN Subtotal > 99 THEN 0.05 ELSE 0 END
第 5 步:创建总数字段
创建另一个名为 Total 的计算字段,该字段将 Subtotal 字段乘以 1 - Discount。
解决方案
Subtotal * (1 - 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) * 0.9 WHEN Price * Qty Sold > 100 THEN (Price * Qty Sold) * 0.95 ELSE Price * Qty Sold END
每种方法各有利弊:
将复杂的公式拆分为单独的字段,可以使公式更易于读写,并且更不容易出错。在更多情境中,单独的字段也很有用。例如,如果您为折扣率使用单独的字段,则可以在其他计算中使用该字段,或在报告中显示该字段。创建包含大量离散计算字段的公式有一个缺点,那就是每个字段的作用可能不明显,因此您需要单独修改每个字段,以查看其计算方式。
另一方面,将所有逻辑集中到一个字段中可以使公式更易于理解和修改。但您可能也需要进行大量重复输入,而且复杂的公式可能更难扩展或维护。例如,假设您有 10 个商品层级,每个层级都有不同的订单数量阈值。或者,假设您想对其他产品线使用相同的折扣。在这些情况下,为这些阈值和折扣使用单独的字段可能会更简单或更高效。
中间路径
此解决方案融合了前面介绍的两种方法。它将主要逻辑保留在单个字段中,同时将一些依赖逻辑拆分到单独的字段中:
CASE WHEN Subtotal > Large Order THEN Subtotal * (1 - Large Order Discount) WHEN Subtotal > Medium Order THEN Subtotal * (1 - Medium Order Discount) ELSE Subtotal END
对于此解决方案,请创建单独的字段来保存大订单和中等订单的值及其对应的折扣:
- 大额订单:
499 - 中等订单:
100 - 大额订单折扣:
0.1 - 中等订单折扣:
0.05
此解决方案的优势在于易于阅读、灵活,并且相对容易根据需要进行调整。