3.4 两个集合的差集

 

集合 A 和 B 的差集是指由所有属于集合 A 且不属于集合 B 的成员所组成的集合。比如集合 [1,2,3] 与[1,3,5]的交集,是集合[2]。

某商家有网店和实体店铺两种销售渠道,其销售数据分别存储在 SALES_ONLINE 和 SALES_STORE 两个表中。现在要查询在实体店消费总金额超过 1000,在网店没有消费过的客户有哪些。部分数据如下:

SALES_ONLINE:

ID CUSTOMERID ORDERDATE PRODUCTID AMOUNT
1 HANAR 2014/01/01 17 3868.6
2 ERNSH 2014/01/03 42 1005.9
3 LINOD 2014/01/06 64 400.0
4 OTTIK 2014/01/07 10 1194.0
5 OCEAN 2014/01/09 41 319.2

SALES_STORE:

ID CUSTOMERID ORDERDATE SELLERID PRODUCTID AMOUNT
1 EASTC 2014/01/01 1 27 3063.0
2 ERNSH 2014/01/02 8 70 2713.5
3 MAGAA 2014/01/03 2 74 1675.0
4 SAVEA 2014/01/07 7 45 2018.2
5 FOLIG 2014/01/08 8 30 1622.4

SPL 中可以使用符号“\”来计算集合的差集。比如 A\B 就是集合 A 与集合 B 的差集。
脚本:

A
1 =T(“SalesOnline.xlsx”).select(year(ORDERDATE)==2014)
2 =T(“SalesStore.xlsx”).select(year(ORDERDATE)==2014)
3 =A2.groups(CUSTOMERID; count(~):COUNT).select(COUNT>3)
4 =A3.id(CUSTOMERID)\A1.id(CUSTOMERID)

A1:从文件中导入线上销售表,并选出 2014 年的销售记录。
A2:从文件中导入实体店销售表,并选出 2014 年的销售记录。
A3:分组汇总实体店每个客户的总销售次数,并选出超过 3 次的记录。
A4:使用符号“\”计算实体店和线上客户的差集。