Skip to content

Commit

Permalink
refactor filtering in export queries (#4086)
Browse files Browse the repository at this point in the history
  • Loading branch information
ruslandoga committed May 9, 2024
1 parent 953af27 commit 1114686
Showing 1 changed file with 35 additions and 31 deletions.
66 changes: 35 additions & 31 deletions lib/plausible/exports.ex
Original file line number Diff line number Diff line change
Expand Up @@ -245,24 +245,27 @@ defmodule Plausible.Exports do
end

on_ee do
defp sampled(table, date_range) do
from(table)
|> Plausible.Stats.Sampling.add_query_hint()
|> limit_date_range(date_range)
defp sampled(table) do
Plausible.Stats.Sampling.add_query_hint(from(table))
end
else
defp sampled(table, date_range) do
limit_date_range(table, date_range)
defp sampled(table) do
table
end
end

defp limit_date_range(query, nil), do: query
defp export_filter(site_id, date_range) do
filter = dynamic([t], t.site_id == ^site_id)

defp limit_date_range(query, date_range) do
from t in query,
where:
selected_as(:date) >= ^date_range.first and
if date_range do
dynamic(
^filter and
selected_as(:date) >= ^date_range.first and
selected_as(:date) <= ^date_range.last
)
else
filter
end
end

defmacrop date(timestamp, timezone) do
Expand Down Expand Up @@ -333,8 +336,8 @@ defmodule Plausible.Exports do

defp export_visitors_q(site_id, timezone, date_range) do
visitors_sessions_q =
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: selected_as(:date),
select: %{
date: date(s.timestamp, ^timezone),
Expand All @@ -345,8 +348,8 @@ defmodule Plausible.Exports do
}

visitors_events_q =
from e in sampled("events_v2", date_range),
where: e.site_id == ^site_id,
from e in sampled("events_v2"),
where: ^export_filter(site_id, date_range),
group_by: selected_as(:date),
select: %{
date: date(e.timestamp, ^timezone),
Expand Down Expand Up @@ -377,8 +380,8 @@ defmodule Plausible.Exports do
end

defp export_sources_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: [
selected_as(:date),
selected_as(:source),
Expand Down Expand Up @@ -408,8 +411,9 @@ defmodule Plausible.Exports do
end

defp export_pages_q(site_id, timezone, date_range) do
from e in sampled("events_v2", date_range),
where: [site_id: ^site_id, name: "pageview"],
from e in sampled("events_v2"),
where: ^export_filter(site_id, date_range),
where: [name: "pageview"],
group_by: [selected_as(:date), e.pathname],
order_by: selected_as(:date),
select: [
Expand All @@ -426,8 +430,8 @@ defmodule Plausible.Exports do
end

defp export_entry_pages_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: [selected_as(:date), s.entry_page],
order_by: selected_as(:date),
select: [
Expand All @@ -445,8 +449,8 @@ defmodule Plausible.Exports do
end

defp export_exit_pages_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: [selected_as(:date), s.exit_page],
order_by: selected_as(:date),
select: [
Expand All @@ -464,8 +468,8 @@ defmodule Plausible.Exports do
end

defp export_locations_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
where: s.city_geoname_id != 0 and s.country_code != "\0\0" and s.country_code != "ZZ",
group_by: [selected_as(:date), s.country_code, selected_as(:region), s.city_geoname_id],
order_by: selected_as(:date),
Expand All @@ -483,8 +487,8 @@ defmodule Plausible.Exports do
end

defp export_devices_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: [selected_as(:date), s.screen_size],
order_by: selected_as(:date),
select: [
Expand All @@ -499,8 +503,8 @@ defmodule Plausible.Exports do
end

defp export_browsers_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: [selected_as(:date), s.browser, s.browser_version],
order_by: selected_as(:date),
select: [
Expand All @@ -516,8 +520,8 @@ defmodule Plausible.Exports do
end

defp export_operating_systems_q(site_id, timezone, date_range) do
from s in sampled("sessions_v2", date_range),
where: s.site_id == ^site_id,
from s in sampled("sessions_v2"),
where: ^export_filter(site_id, date_range),
group_by: [selected_as(:date), s.operating_system, s.operating_system_version],
order_by: selected_as(:date),
select: [
Expand Down

0 comments on commit 1114686

Please sign in to comment.