Skip to content

Commit

Permalink
select_merge_as more
Browse files Browse the repository at this point in the history
  • Loading branch information
macobo committed Jun 28, 2024
1 parent 31a5b34 commit 97207e4
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
4 changes: 2 additions & 2 deletions lib/plausible/stats/base.ex
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ defmodule Plausible.Stats.Base do
total_query = Query.set_dimensions(query, [])

q
|> select_merge(^total_visitors_subquery(site, total_query, query.include_imported))
|> select_merge_as([], total_visitors_subquery(site, total_query, query.include_imported))
|> select_merge_as([], %{
percentage:
fragment(
Expand All @@ -205,7 +205,7 @@ defmodule Plausible.Stats.Base do

# :TRICKY: Subquery is used due to event:goal breakdown above doing an UNION ALL
subquery(q)
|> select_merge(^total_visitors_subquery(site, total_query, query.include_imported))
|> select_merge_as([], total_visitors_subquery(site, total_query, query.include_imported))
|> select_merge_as([e], %{
conversion_rate:
fragment(
Expand Down
2 changes: 2 additions & 0 deletions lib/plausible/stats/sql/fragments.ex
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ defmodule Plausible.Stats.SQL.Fragments do
}
end

defp update_literal_map_values(ast, _), do: ast

@doc """
Convenience Ecto macro for wrapping a map passed to select_merge_as such that each
expression gets wrapped in dynamic and set as selected_as.
Expand Down
23 changes: 11 additions & 12 deletions lib/plausible/stats/sql/query_builder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -124,19 +124,19 @@ defmodule Plausible.Stats.SQL.QueryBuilder do

from(e in q,
array_join: goal in Expression.event_goal_join(events, page_regexes),
select_merge: %{
^shortname(query, dimension) => fragment("?", goal)
},
group_by: goal,
where: goal != 0 and (e.name == "pageview" or goal < 0)
)
|> select_merge_as([e, goal], %{
shortname(query, dimension) => fragment("?", goal)
})
end

defp dimension_group_by(q, query, dimension) do
key = shortname(query, dimension)

q
|> select_merge(^Expression.dimension(key, dimension, query))
|> select_merge_as([], Expression.dimension(key, dimension, query))
|> group_by([], selected_as(^key))
end

Expand All @@ -160,13 +160,9 @@ defmodule Plausible.Stats.SQL.QueryBuilder do
Enum.reduce(unquote(list), unquote(q), fn metric_or_dimension, q ->
key = shortname(unquote(query), metric_or_dimension)

select_merge_as(
q,
[e, s],
%{
key => field(unquote(table_name), ^key)
}
)
select_merge_as(q, [e, s], %{
key => field(unquote(table_name), ^key)
})
end)
end
end
Expand All @@ -182,7 +178,10 @@ defmodule Plausible.Stats.SQL.QueryBuilder do
|> Query.set_dimensions([])

q
|> select_merge(^Base.total_visitors_subquery(site, total_query, query.include_imported))
|> select_merge_as(
[],
Base.total_visitors_subquery(site, total_query, query.include_imported)
)
|> select_merge_as([e], %{
conversion_rate:
fragment(
Expand Down

0 comments on commit 97207e4

Please sign in to comment.