Skip to content

Commit d7a3d76

Browse files
committed
FactorGen: Optimize generation of personNumFriendsOfFriends factor table
1 parent 5a9b898 commit d7a3d76

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/main/scala/ldbc/snb/datagen/factors/FactorGenerationStage.scala

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -472,11 +472,19 @@ object FactorGenerationStage extends DatagenStage with Logging {
472472
},
473473
// friends
474474
"personNumFriendsOfFriends" -> Factor(PersonKnowsPersonType, PersonType) { case Seq(personKnowsPerson, person1) =>
475-
val foaf = person1
475+
val knows1 = person1
476476
.as("Person1")
477-
.join(undirectedKnows(personKnowsPerson).as("knows1"), $"Person1.id" === $"knows1.Person1Id", "leftouter")
478-
.join(undirectedKnows(personKnowsPerson).as("knows2"), $"knows1.Person2Id" === $"knows2.Person1Id", "leftouter")
479-
frequency(foaf, value = $"knows2.Person2Id", by = Seq($"Person1.id", $"Person1.creationDate", $"Person1.deletionDate"))
477+
.join(undirectedKnows(personKnowsPerson).as("knows"), $"Person1.id" === $"knows.Person1Id", "leftouter")
478+
479+
val personNumFriends = frequency(knows1, value = $"knows.Person2Id", by = Seq($"Person1.id"), agg = count)
480+
.select($"Person1.id".as("Person1Id"), $"frequency")
481+
482+
val knows2 = person1
483+
.as("Person1")
484+
.join(undirectedKnows(personKnowsPerson).as("knows"), $"Person1.id" === $"knows.Person1Id", "leftouter")
485+
.join(personNumFriends.as("personNumFriends"), $"personNumFriends.Person1Id" === $"knows.Person2Id", "leftouter")
486+
487+
frequency(knows2, value = $"frequency", by = Seq($"Person1.id"), agg = sum)
480488
},
481489
// posts
482490
"personNumPosts" -> Factor(PersonType, PostType) { case Seq(person, post) =>

0 commit comments

Comments
 (0)