@@ -486,7 +486,7 @@ object FactorGenerationStage extends DatagenStage with Logging {
486
486
frequency(person, value = $" id" , by = Seq ($" firstName" ))
487
487
},
488
488
// friends
489
- " personNumFriendsOfFriends " -> Factor (PersonKnowsPersonType , PersonType ) { case Seq (personKnowsPerson, person1) =>
489
+ " personNumFriendsOfFriendsOfFriends " -> Factor (PersonKnowsPersonType , PersonType ) { case Seq (personKnowsPerson, person1) =>
490
490
// direct friends
491
491
val knows1 = person1
492
492
.as(" Person1" )
@@ -511,7 +511,21 @@ object FactorGenerationStage extends DatagenStage with Logging {
511
511
agg = sum
512
512
).select($" Person1Id" , $" creationDate" , $" deletionDate" , $" numFriends" , $" frequency" .as(" numFriendsOfFriends" ))
513
513
514
- personNumFriendsOfFriends
514
+ // friends of friends of friends
515
+ val personFriendsOfFriendsOfFriends = personNumFriendsOfFriends.as(" personNumFriendsOfFriends1" )
516
+ .join(undirectedKnows(personKnowsPerson).as(" knows" ), $" personNumFriendsOfFriends1.Person1Id" === $" knows.Person1Id" , " leftouter" )
517
+ .join(personNumFriendsOfFriends.as(" personNumFriendsOfFriends2" ),$" personNumFriendsOfFriends2.Person1Id" === $" knows.Person2Id" , " leftouter" )
518
+
519
+ val personNumFriendsOfFriendsOfFriends = frequency(
520
+ personFriendsOfFriendsOfFriends,
521
+ value = $" personNumFriendsOfFriends2.numFriendsOfFriends" ,
522
+ by = Seq ($" personNumFriendsOfFriends1.Person1Id" ,
523
+ $" personNumFriendsOfFriends1.creationDate" , $" personNumFriendsOfFriends1.deletionDate" ,
524
+ $" personNumFriendsOfFriends1.numFriends" , $" personNumFriendsOfFriends1.numFriendsOfFriends" ),
525
+ agg = sum
526
+ ).select($" Person1Id" , $" creationDate" , $" deletionDate" , $" numFriends" , $" numFriendsOfFriends" , $" frequency" .as(" numFriendsOfFriendsOfFriends" ))
527
+
528
+ personNumFriendsOfFriendsOfFriends
515
529
},
516
530
// posts
517
531
" personNumFriendOfFriendPosts" -> Factor (PersonType , PersonKnowsPersonType , PostType ) { case Seq (person, personKnowsPerson, post) =>
0 commit comments