Konrad Scorciapino @konr
Mauro Lopes @maurolopes23
[[1000 :person/name "Quercus" 1]
[1000 :person/job "Philosopher" 1]
[1000 :person/city "São Paulo" 1]
[1000 :person/city "Richmond" 2]]
{:find [?job]
:in [?name]
:where [[?p :person/name ?name]
[?p :person/job ?job]]}
{:find [?name]
:in [?job]
:where [[?p :person/name ?name]
[?p :person/job ?job]]}
{:find [?name ?job]
:in []
:where [[?p :person/name ?name]
[?p :person/job ?job]]}
(approach)
(services)
{:as-of #inst "2014-11-15T13:37:42Z"
:args ["pur-8"]
:query
{:find [?name (max ?amount)]]
:in [?purchase-id]
:where [[$pur ?purchase :purchase/id ?purchase-id]
[$pur ?purchase :purchase/customer-id ?customer-id]
[$cus ?customer :customer/id ?customer-id]
[$cus ?customer :customer/name ?name]
[$pur ?purchase2 :purchase/customer-id ?customer-id]
[$pur ?purchase2 :purchase/amount ?amount]]}}
{:query
{:find [?purchase-amount ?bill-amount]]
:where [[$pur ?purchase :purchase/id]
[$pur ?purchase :purchase/bill-id ?bill-id]
[$pur ?purchase :purchase/amount ?purchase-amount]
[$bil ?bill :bill/id ?bill-id]
[$bil ?bill :bill/amount ?bill-amount]]}}
{:query
{:find [?purchase-amount ?bill-amount]]
:in [?shard-index ?shard-count] ;; <--------
:where [[$pur ?purchase :purchase/id]
[(mod ?purchase ?shard-count) ?shard-index] ;; <--------
[$pur ?purchase :purchase/bill-id ?bill-id]
[$pur ?purchase :purchase/amount ?purchase-amount]
[$bil ?bill :bill/id ?bill-id]
[$bil ?bill :bill/amount ?bill-amount]]}
:args [0 35]} ;; <--------
{:as-of #inst "2014-11-15T13:37:42Z"
:args ["pur-8"]
:query
{:find [?name (max ?amount)]]
:in [?purchase-id]
:where [[$pur ?purchase :purchase/id ?purchase-id]
[$pur ?purchase :purchase/customer-id ?customer-id]
[$cus ?customer :customer/id ?customer-id]
[$cus ?customer :customer/name ?name]
[$pur ?purchase2 :purchase/customer-id ?customer-id]
[$pur ?purchase2 :purchase/amount ?amount]]}}
"<Our tooling> helps me find corner cases, trace back the origin of data, and figure out why it ended up that way (...)" - Software Engineer
"I like how it's both a querying and analysing tool (...) having a timestamp from an analysis I made, I can choose to reproduce the results or redo it using up-to-date data just minutes before a meeting" - Data analyst