diff --git a/README.md b/README.md index 42bc6ef81c92..2a9a574b0649 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,9 @@ Docs | Contributing

+ + Featured on osalt.dev +

[Plausible Analytics](https://plausible.io/) is an open source, privacy-first web analytics tool. Lightweight, cookie-free [alternative to Google Analytics](https://plausible.io/blog/remove-google-analytics). Available in managed cloud or self-hosted community edition. diff --git a/lib/plausible/stats/query_optimizer.ex b/lib/plausible/stats/query_optimizer.ex index 27a9452c45eb..d4061b167126 100644 --- a/lib/plausible/stats/query_optimizer.ex +++ b/lib/plausible/stats/query_optimizer.ex @@ -159,6 +159,9 @@ defmodule Plausible.Stats.QueryOptimizer do Enum.find(query.dimensions, &Time.time_dimension?/1) end + + + defp build_split_query(:events, metrics, query) do { :events, @@ -178,13 +181,9 @@ defmodule Plausible.Stats.QueryOptimizer do end) filters = - if "event:page" in query.dimensions do - Filters.rename_dimensions_used_in_filter(query.filters, %{ - "event:page" => "visit:entry_page" - }) - else - query.filters - end + Filters.rename_dimensions_used_in_filter(query.filters, %{ + "event:page" => "visit:entry_page" + }) { :sessions, diff --git a/lib/plausible/stats/sql/where_builder.ex b/lib/plausible/stats/sql/where_builder.ex index 18353d34cba0..bf855c5aefc5 100644 --- a/lib/plausible/stats/sql/where_builder.ex +++ b/lib/plausible/stats/sql/where_builder.ex @@ -200,8 +200,12 @@ defmodule Plausible.Stats.SQL.WhereBuilder do filter_field(db_field_name(key), filter) end + defp add_filter(:sessions, query, [op, "event:page" | rest] = _filter) do + add_filter(:sessions, query, [op, "visit:entry_page" | rest]) + end + defp add_filter(:sessions, _query, [_, "event:" <> _ | _rest]) do - # Cannot apply sessions filters directly on session query where clause. + # Cannot apply other event filters directly on session query where clause. true end diff --git a/lib/plausible/stats/table_decider.ex b/lib/plausible/stats/table_decider.ex index dcce1d8f5cae..102b78aedd46 100644 --- a/lib/plausible/stats/table_decider.ex +++ b/lib/plausible/stats/table_decider.ex @@ -51,7 +51,7 @@ defmodule Plausible.Stats.TableDecider do conflicting_event_metrics = event_only_metrics -- @revenue_metrics cond do - # event:page is a special case handled in QueryOptimizer.split_sessions_query + # event:page is a special case handled in QueryOptimizer.build_split_query event_only_dimensions == ["event:page"] -> :ok