@@ -562,17 +562,26 @@ object FactorGenerationStage extends DatagenStage with Logging {
562
562
personLikesNumMessages
563
563
},
564
564
// tags
565
- " personNumTags" -> Factor (PersonHasInterestTagType ) { case Seq (interest) =>
566
- frequency(interest, value = $" TagId" , by = Seq ($" PersonId" ))
567
- },
568
- " personNumFriendTags" -> Factor (PersonHasInterestTagType , PersonKnowsPersonType ) { case Seq (interest, personKnowsPerson) =>
569
- val personNumTags = frequency(interest, value = $" TagId" , by = Seq ($" PersonId" ), agg = count)
570
- .select($" personId" .as(" Person1Id" ), $" frequency" )
565
+ " personNumFriendTags" -> Factor (PersonType , PersonHasInterestTagType , PersonKnowsPersonType ) { case Seq (person, interest, personKnowsPerson) =>
566
+ // direct tags
567
+ val personComments = person
568
+ .as(" Person" )
569
+ .join(interest.as(" interest" ), $" interest.PersonId" === $" Person.id" , " leftouter" )
571
570
572
- val friendTags = personNumTags.as( " personNumTags " )
573
- .join(undirectedKnows(personKnowsPerson) .as(" knows " ), $" personNumTags.Person1Id " === $ " knows.Person2Id " , " leftouter " )
571
+ val numPersonTags = frequency(personComments, value = $ " TagId " , by = Seq ($ " PersonId " ), agg = count )
572
+ .select($ " PersonId " .as(" Person1Id " ), $" frequency " .as( " numDirectTags " ) )
574
573
575
- val numFriendTags = frequency(friendTags, value = $" frequency" , by = Seq ($" knows.Person1Id" ), agg = sum)
574
+ // tags of friends
575
+ val friendTags = numPersonTags.as(" numPersonTags1" )
576
+ .join(undirectedKnows(personKnowsPerson).as(" knows" ), $" numPersonTags1.Person1Id" === $" knows.Person1Id" , " leftouter" )
577
+ .join(numPersonTags.as(" numPersonTags2" ), $" numPersonTags2.Person1Id" === $" knows.Person2Id" , " leftouter" )
578
+
579
+ val numFriendTags = frequency(
580
+ friendTags,
581
+ value = $" numPersonTags2.numDirectTags" ,
582
+ by = Seq ($" numPersonTags1.Person1Id" , $" numPersonTags1.numDirectTags" ),
583
+ agg = sum
584
+ )
576
585
numFriendTags
577
586
},
578
587
// forums
0 commit comments