Skip to content

Commit

Permalink
Fix time on page using exits
Browse files Browse the repository at this point in the history
  • Loading branch information
ukutaht committed Mar 10, 2022
1 parent 8ddbfb4 commit bd7e40b
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 10 deletions.
2 changes: 1 addition & 1 deletion lib/plausible/google/api.ex
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ defmodule Plausible.Google.Api do
{
"imported_pages",
["ga:date", "ga:hostname", "ga:pagePath"],
["ga:users", "ga:pageviews", "ga:timeOnPage"]
["ga:users", "ga:pageviews", "ga:exits", "ga:timeOnPage"]
},
{
"imported_entry_pages",
Expand Down
4 changes: 3 additions & 1 deletion lib/plausible/imported/site.ex
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,12 @@ defmodule Plausible.Imported do

defp new_from_google_analytics(site_id, "imported_pages", %{
"dimensions" => [date, hostname, page],
"metrics" => [%{"values" => [visitors, pageviews, time_on_page]}]
"metrics" => [%{"values" => [visitors, pageviews, exits, time_on_page]}]
}) do
page = URI.parse(page).path
{visitors, ""} = Integer.parse(visitors)
{pageviews, ""} = Integer.parse(pageviews)
{exits, ""} = Integer.parse(exits)
{time_on_page, _} = Integer.parse(time_on_page)

%{
Expand All @@ -86,6 +87,7 @@ defmodule Plausible.Imported do
page: page,
visitors: visitors,
pageviews: pageviews,
exits: exits,
time_on_page: time_on_page
}
end
Expand Down
7 changes: 4 additions & 3 deletions lib/plausible/stats/breakdown.ex
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ defmodule Plausible.Stats.Breakdown do
where: i.page in ^pages,
select: %{
page: i.page,
pageviews: sum(i.pageviews),
pageviews: fragment("sum(?) - sum(?)", i.pageviews, i.exits),
time_on_page: sum(i.time_on_page)
}
)
Expand All @@ -297,8 +297,9 @@ defmodule Plausible.Stats.Breakdown do
{restime, resviews} = Map.get(res, page, {0, 0})
Map.put(res, page, {restime + time, resviews + pageviews})
end)
|> Enum.map(fn {page, {time, pageviews}} ->
{page, time / pageviews}
|> Enum.map(fn
{page, {_, 0}} -> {page, nil}
{page, {time, pageviews}} -> {page, time / pageviews}
end)
|> Enum.into(%{})
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ defmodule Plausible.ClickhouseRepo.Migrations.CreateImportedVisitors do
add(:page, :string)
add(:visitors, :UInt64)
add(:pageviews, :UInt64)
add(:exits, :UInt64)
add(:time_on_page, :UInt64)
end

Expand Down
10 changes: 5 additions & 5 deletions test/plausible/imported/imported_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -325,15 +325,15 @@ defmodule Plausible.ImportedTest do
[
%{
"dimensions" => ["20210101", "host-a.com", "/"],
"metrics" => [%{"values" => ["1", "1", "700"]}]
"metrics" => [%{"values" => ["1", "1", "0", "700"]}]
},
%{
"dimensions" => ["20210101", "host-b.com", "/some-other-page"],
"metrics" => [%{"values" => ["1", "1", "60"]}]
"metrics" => [%{"values" => ["1", "2", "1", "60"]}]
},
%{
"dimensions" => ["20210101", "host-b.com", "/some-other-page?wat=wot"],
"metrics" => [%{"values" => ["1", "1", "60"]}]
"metrics" => [%{"values" => ["1", "1", "0", "60"]}]
}
],
site.id,
Expand Down Expand Up @@ -363,7 +363,7 @@ defmodule Plausible.ImportedTest do
"bounce_rate" => nil,
"time_on_page" => 60,
"visitors" => 3,
"pageviews" => 3,
"pageviews" => 4,
"name" => "/some-other-page"
},
%{
Expand Down Expand Up @@ -403,7 +403,7 @@ defmodule Plausible.ImportedTest do
[
%{
"dimensions" => ["20210101", "host-a.com", "/page2"],
"metrics" => [%{"values" => ["2", "4", "10"]}]
"metrics" => [%{"values" => ["2", "4", "0", "10"]}]
}
],
site.id,
Expand Down
1 change: 1 addition & 0 deletions test/support/factory.ex
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ defmodule Plausible.Factory do
page: "",
visitors: 1,
pageviews: 1,
exits: 0,
time_on_page: 10
}
end
Expand Down

0 comments on commit bd7e40b

Please sign in to comment.