google-apps-script - 如何基于二级,甚至三级过滤器进行过滤?
问题描述
我有一张纸如下:
我需要计算当特定产品是他们的主要购买时购买了多少加售。
例如,产品 A 应返回 2(订单 102 和 108)。
Order ID Date Type Customer ID Product
100 2019-01-10 Main 21 A
102 2019-01-10 Upsell 21 B
104 2019-01-10 Main 22 A
106 2019-01-10 Main 23 A
108 2019-01-11 Upsell 23 C
110 2019-01-11 Main 24 A
... ... ... ... ...
现在我FILTER
在一个类似于这样的单元格中使用了一个令人讨厌的复杂:
=COUNTA(FILTER(A:A, C:C = "Upsell", D:D = FILTER(D:D, C:C = "Main", E:E = "A")))
但是,这似乎不起作用。它也不会完全满足需要。从技术上讲,如果有人后来还购买了产品 A 以外的任何其他产品作为他们的主要购买,那么在搜索产品 A 的加售数量时,他们的任何加售仍然会被计算在内。
有没有更简单/更可靠的方法来做到这一点?
是否可以在可以执行此操作的 Google Apps 脚本中设置循环?(遍历每个匹配的行,找到所有包含相同客户 ID 且在主要购买后 2 天或直到他们下一次主要购买之前加售的行?)
解决方案
您可以尝试重叠范围:
=COUNTA(FILTER(A3:A8,D2:D7=D3:D8,C3:C8="Upsell",C2:C7="Main",E2:E7="A"))
假设 A1:E7 有你的桌子,
C2:C7="Main",E2:E7="A"
将是产品 A 主过滤器C3:C8="Upsell"
下一个产品是追加销售吗?D2:D7=D3:D8
购买加售商品和主要商品的客户是否相同?FILTER
以及COUNT
相应的加售订单 ID。
推荐阅读
- javascript - jQuery Select2:如何为多值选择框添加占位符文本
- c# - 似乎全局异常处理程序正在重新抛出 **BadHttpRequestException: Unexpected end of request content** 作为未处理的异常
- lua - 如何删除 Tarantool 中的索引?
- java - 在 Spring boot 中完成初始进程后异步运行进程
- sql - 基于具有多个连接的时间戳和 Postgres 中时间戳之间的依赖关系搜索数据
- gstreamer - 如何使用 gstreamer 播放原始数据?
- reactjs - 赛普拉斯拖放“反应可排序树”元素
- swift - 通过 Parse Server 设置条形码扫描仪数据库:Swift
- python - 查找具有最多重叠项目的列表
- angularjs - 我如何忽略/修复 Raven 扫描 npm 库依赖项的漏洞