识别数据集中的类似元素以检测垃圾邮件发送者

时间:2018-03-19 19:19:23

标签: sql excel database join similarity

我正在尝试在我的数据集中识别垃圾邮件发送者。

我的数据集包含列表ID,用户ID,电子邮件ID和电话号码。列表ID是唯一键,单个人可以有多个列表。

我使用模糊查找来查找电话号码之间的相似性索引,并使用模糊查找来生成电子邮件ID之间的相似性索引。

我正在尝试加入三个表格,每个匹配项都反映在第一个表格的前面。

我尝试使用VLOOKUP和数据模型但由于缺少公共行而失败。

输入:

Listing ID   User ID        Email ID        Phone no.
1               A               A1              A2
2               A               A1              A2
3               A               A1              A2
4               A               A1              A2
5               A               A1              A2
6               A               A1              A2
7               B               B1              B2
8               B               B1              B2
9               B               B1              B2
10              C               C1              C2
11              C               C1              C2

电话号码的模糊观察分析

Primary_Profile  Primary_Phone  Match_Profile  Match_Phone Similarity_Index
A                   A2              B             B2        0.9
B                   B2              A             A2        0.9
B                   B2              C             C2        0.7

电子邮件ID的模糊LookUp分析

Primary_Profile Primary_Email   Matching_Profile    Matching_Email  Similarity_Index
B                B1                 G                    G1          0.8

期望的结果

Listing ID  User ID Email ID    Phone no.   Profile Match   Sim Index   Sim Type
1           A           A1          A2          B           0.9         Phone
2           A           A1          A2          B           0.9         Phone
3           A           A1          A2          B           0.9         Phone
4           A           A1          A2          B           0.9         Phone
5           A           A1          A2          B           0.9         Phone
6           A           A1          A2          B           0.9         Phone
7           B           B1          B2          A           0.9         Phone
8           B           B1          B2          A           0.9         Phone
9           B           B1          B2          A           0.9         Phone
7           B           B1          B2          C           0.7         Phone
8           B           B1          B2          C           0.7         Phone
9           B           B1          B2          C           0.9         Phone
7           B           B1          B2          G           0.8         Email
8           B           B1          B2          G           0.8         Email
9           B           B1          B2          G           0.8         Email

1 个答案:

答案 0 :(得分:0)

使用这样的联合。注意我分别用#a,#b和#c替换了表名,并使用了通用列。

 select a.col1, a.col2, a.col3, a.col4, b.col3, b.col5 , 'Phone' Sim_type from #A a
 join #b b on a.col2=b.col1
 union all
 select a.col1, a.col2, a.col3, a.col4, b.col3, b.col5, 'Email' from #A a
 join #c b on a.col2=b.col1
 order by   Sim_type desc, b.col5 desc, a.col1, a.col2, a.col3