Skip to content

Instantly share code, notes, and snippets.

@sunilnandihalli
Created February 27, 2015 23:59
Show Gist options
  • Save sunilnandihalli/9536c79f574371c5edb8 to your computer and use it in GitHub Desktop.
Save sunilnandihalli/9536c79f574371c5edb8 to your computer and use it in GitHub Desktop.
(defn h [x] (map-indexed #(into [%1] %2) (partition 1 (shuffle x))))
(def win-ids (h [0 1 1 2 3 4]))
(def impression-ids (h [0 0 0 1 1 1 3 3 5 6 6]))
(def click-ids (h [0 1 2 5 2 2]))
(defaggregatefn safe-sum
([] 0)
([total val] (+ total (or val 0)))
([total] [total]))
(defn tt1 []
(let [wins-q (<- [?bid-id ?wins] (win-ids _ ?bid-id) (c/count :> ?wins))
impr-q (<- [?bid-id ?impressions] (impression-ids _ ?bid-id) (c/count :> ?impressions))
clk-q (<- [?bid-id ?clicks] (click-ids _ ?bid-id) (c/count :> ?clicks))]
(?<- (stdout) [?wins ?unique-wins ?impressions ?unique-impressions ?clicks ?unique-clicks]
(wins-q ?bid-id !!wins)
(impr-q ?bid-id !!impressions)
(clk-q ?bid-id !!clicks)
(c/!count !!wins :> ?unique-wins)
(safe-sum !!wins :> ?wins)
(c/!count !!impressions :> ?unique-impressions)
(safe-sum !!impressions :> ?impressions)
(c/!count !!clicks :> ?unique-clicks)
(safe-sum !!clicks :> ?clicks))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment