File size: 1,095 Bytes
8da2481 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | defmodule Plausible.Stats.Base do
use Plausible
alias Plausible.Stats.{TableDecider, SQL}
import Ecto.Query
def base_event_query(query) do
events_q = query_events(query)
if TableDecider.events_join_sessions?(query) do
sessions_q =
from(
s in query_sessions(query),
select: %{session_id: s.session_id},
where: s.sign == 1,
group_by: s.session_id
)
from(
e in events_q,
join: sq in subquery(sessions_q),
on: e.session_id == sq.session_id
)
else
events_q
end
end
defp query_events(query) do
q =
from(e in "events_v2",
where: ^SQL.WhereBuilder.build(:events, query),
where: ^SQL.WhereBuilder.derived_name_filter(query)
)
on_ee do
q = Plausible.Stats.Sampling.add_query_hint(q, query)
end
q
end
def query_sessions(query) do
q = from(s in "sessions_v2", where: ^SQL.WhereBuilder.build(:sessions, query))
on_ee do
q = Plausible.Stats.Sampling.add_query_hint(q, query)
end
q
end
end
|