Bearloga has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/374669 )

Change subject: Breakdown API calls by referer class
......................................................................


Breakdown API calls by referer class

Bug: T172452
Change-Id: Ic70d7054e02569eb8545dd347026c7f77321ab2c
---
M modules/api.R
M modules/key_performance_metrics/api_usage.R
A tab_documentation/referer_breakdown.md
M ui.R
M utils.R
5 files changed, 95 insertions(+), 27 deletions(-)

Approvals:
  Bearloga: Verified; Looks good to me, approved



diff --git a/modules/api.R b/modules/api.R
index dc8e332..5fd6cd1 100644
--- a/modules/api.R
+++ b/modules/api.R
@@ -3,6 +3,7 @@
     tidyr::spread(referrer, calls) %>%
     polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, input$smoothing_fulltext_search)) 
%>%
     polloi::make_dygraph(xlab = "Date", ylab = "Searches", title = "Daily 
Full-text search API usage by referrer", legend_name = "Searches") %>%
+    dyLegend(width = 1000, show = "always") %>%
     dyRangeSelector %>%
     dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = "bottom") 
%>%
     dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = "bottom")
@@ -13,6 +14,7 @@
     tidyr::spread(referrer, calls) %>%
     polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, input$smoothing_morelike_search)) 
%>%
     polloi::make_dygraph(xlab = "Date", ylab = "Searches", title = "Daily 
Morelike search API usage by referrer", legend_name = "Searches") %>%
+    dyLegend(width = 1000, show = "always") %>%
     dyRangeSelector
 })
 
@@ -21,6 +23,7 @@
     tidyr::spread(referrer, calls) %>%
     polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, input$smoothing_open_search)) %>%
     polloi::make_dygraph(xlab = "Date", ylab = "Searches", title = "Daily 
OpenSearch API usage by referrer", legend_name = "Searches") %>%
+    dyLegend(width = 1000, show = "always") %>%
     dyRangeSelector %>%
     dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = "bottom") 
%>%
     dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = "bottom")
@@ -30,6 +33,7 @@
   split_dataset$geo %>%
     tidyr::spread(referrer, calls) %>%polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, input$smoothing_geo_search)) %>%
     polloi::make_dygraph(xlab = "Date", ylab = "Searches", title = "Daily Geo 
Search API usage by referrer", legend_name = "Searches") %>%
+    dyLegend(width = 1000, show = "always") %>%
     dyRangeSelector %>%
     dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = "bottom") 
%>%
     dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = "bottom")
@@ -39,6 +43,7 @@
   split_dataset$language %>%
     tidyr::spread(referrer, calls) %>%polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, input$smoothing_language_search)) 
%>%
     polloi::make_dygraph(xlab = "Date", ylab = "Searches", title = "Daily 
Language search API usage by referrer", legend_name = "Searches") %>%
+    dyLegend(width = 1000, show = "always") %>%
     dyRangeSelector %>%
     dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = "bottom") 
%>%
     dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = "bottom")
@@ -49,7 +54,27 @@
     tidyr::spread(referrer, calls) %>%
     polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, input$smoothing_prefix_search)) 
%>%
     polloi::make_dygraph(xlab = "Date", ylab = "Searches", title = "Daily 
Prefix search API usage by referrer", legend_name = "Searches") %>%
+    dyLegend(width = 1000, show = "always") %>%
     dyRangeSelector %>%
     dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = "bottom") 
%>%
     dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = "bottom")
 })
+
+output$referer_breakdown_plot <- renderDygraph({
+  temp <- split_dataset %>%
+    dplyr::bind_rows(.id = "api") %>%
+    dplyr::filter(date >= "2017-06-29") %>%
+    dplyr::group_by(date, referrer) %>%
+    dplyr::summarize(calls = sum(calls, na.rm = TRUE)) %>%
+    tidyr::spread(referrer, calls)
+  if (input$referer_breakdown_prop) {
+    temp <- cbind(temp$date, purrr::map_df(temp[, -c(1, 2)], function(x) 
round(100 * x / temp$All, 2)))
+  }
+  temp %>%
+    polloi::smoother(smooth_level = 
polloi::smooth_switch(input$smoothing_global, 
input$smoothing_referer_breakdown)) %>%
+    polloi::make_dygraph(xlab = "Date",
+                         ylab = ifelse(input$referer_breakdown_prop, "API 
Calls Share (%)", "API Calls"),
+                         title = "Daily API usage by referrer", legend_name = 
"API Calls") %>%
+    dyLegend(width = 1000, show = "always") %>%
+    dyRangeSelector
+})
diff --git a/modules/key_performance_metrics/api_usage.R 
b/modules/key_performance_metrics/api_usage.R
index 3732619..1980dda 100644
--- a/modules/key_performance_metrics/api_usage.R
+++ b/modules/key_performance_metrics/api_usage.R
@@ -26,7 +26,7 @@
                    ylab = ifelse(input$kpi_api_usage_series_log_scale, "Calls 
(log10 scale)", "Calls")) %>%
              dySeries("cirrus", label = "full-text via API") %>%
              dySeries("cirrus (more like)", label = "morelike via API") %>%
-             dyLegend(width = 400, show = "always") %>%
+             dyLegend(width = 1000, show = "always") %>%
              dyOptions(
                strokeWidth = 3, colors = RColorBrewer::brewer.pal(7, 
"Set2")[7:1],
                drawPoints = FALSE, pointSize = 3, labelsKMB = TRUE,
@@ -37,29 +37,29 @@
              dyRangeSelector %>%
              dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = 
"bottom") %>%
              dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = 
"bottom"))
+  } else {
+    api_usage_change <- api_usage %>%
+      dplyr::mutate(
+        cirrus = polloi::percent_change(cirrus),
+        `cirrus (more like)` = polloi::percent_change(`cirrus (more like)`),
+        geo = polloi::percent_change(geo),
+        language = polloi::percent_change(language),
+        open = polloi::percent_change(open),
+        prefix = polloi::percent_change(prefix),
+        all = polloi::percent_change(all)
+      ) %>%
+      { .[-1, ] } %>%
+      polloi::smoother(ifelse(smooth_level == "global", 
input$smoothing_global, smooth_level), rename = FALSE) %>%
+      { xts::xts(.[, -1], .$date) }
+    return(dygraph(api_usage_change, main = "Day-to-day % change over time", 
xlab = "Date", ylab = "% change") %>%
+             dyLegend(width = 1000, show = "always") %>%
+             dyOptions(
+               strokeWidth = 3, colors = RColorBrewer::brewer.pal(7, "Set2"),
+               drawPoints = FALSE, pointSize = 3, labelsKMB = TRUE, 
includeZero = TRUE
+             ) %>%
+             dyCSS(css = system.file("custom.css", package = "polloi")) %>%
+             dyRangeSelector %>%
+             dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = 
"bottom") %>%
+             dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = 
"bottom"))
   }
-  api_usage_change <- api_usage %>%
-    dplyr::mutate(
-      cirrus = polloi::percent_change(cirrus),
-      `cirrus (more like)` = polloi::percent_change(`cirrus (more like)`),
-      geo = polloi::percent_change(geo),
-      language = polloi::percent_change(language),
-      open = polloi::percent_change(open),
-      prefix = polloi::percent_change(prefix),
-      all = polloi::percent_change(all)
-    ) %>%
-    { .[-1, ] } %>%
-    polloi::smoother(ifelse(smooth_level == "global", input$smoothing_global, 
smooth_level), rename = FALSE) %>%
-    { xts::xts(.[, -1], .$date) }
-  if (!input$kpi_api_usage_series_include_open) colnames(api_usage_change)[7] 
<- "all except open"
-  return(dygraph(api_usage_change, main = "Day-to-day % change over time", 
xlab = "Date", ylab = "% change") %>%
-           dyLegend(width = 400, show = "always") %>%
-           dyOptions(
-             strokeWidth = 3, colors = RColorBrewer::brewer.pal(7, "Set2"),
-             drawPoints = FALSE, pointSize = 3, labelsKMB = TRUE, includeZero 
= TRUE
-           ) %>%
-           dyCSS(css = system.file("custom.css", package = "polloi")) %>%
-           dyRangeSelector %>%
-           dyEvent(as.Date("2017-01-01"), "R (reportupdater)", labelLoc = 
"bottom") %>%
-           dyEvent(as.Date("2017-06-29"), "U (new UDF)", labelLoc = "bottom"))
 })
diff --git a/tab_documentation/referer_breakdown.md 
b/tab_documentation/referer_breakdown.md
new file mode 100644
index 0000000..61ddb1f
--- /dev/null
+++ b/tab_documentation/referer_breakdown.md
@@ -0,0 +1,23 @@
+API Calls by Referrer Class
+=======
+
+All types of API calls are aggregated by date and referrer class.
+
+**Internal** is traffic referred by Wikimedia sites, specifically: 
mediawiki.org, wikibooks.org, wikidata.org, wikinews.org, wikimedia.org, 
wikimediafoundation.org, wikipedia.org, wikiquote.org, wikisource.org, 
wikiversity.org, wikivoyage.org, and wiktionary.org (See [Webrequest 
source](https://git.wikimedia.org/blob/analytics%2Frefinery%2Fsource.git/master/refinery-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fwikimedia%2Fanalytics%2Frefinery%2Fcore%2FWebrequest.java#L203)
 for more information.)
+
+Outages and inaccuracies
+------
+
+On 2017-06-29 we started to break down the API calls by referer class. 
+
+Questions, bug reports, and feature suggestions
+------
+For technical, non-bug questions, [email 
Mikhail](mailto:[email protected]?subject=Dashboard%20Question) or 
[Chelsy](mailto:[email protected]?subject=Dashboard%20Question). If you 
experience a bug or notice something wrong or have a suggestion, [open a ticket 
in 
Phabricator](https://phabricator.wikimedia.org/maniphest/task/create/?projects=Discovery)
 in the Discovery board or [email 
Deb](mailto:[email protected]?subject=Dashboard%20Question).
+
+<hr style="border-color: gray;">
+<p style="font-size: small;">
+  <strong>Link to this dashboard:</strong> <a 
href="https://discovery.wmflabs.org/metrics/#referer_breakdown";>https://discovery.wmflabs.org/metrics/#referer_breakdown</a>
+  | Page is available under <a 
href="https://creativecommons.org/licenses/by-sa/3.0/"; title="Creative Commons 
Attribution-ShareAlike License">CC-BY-SA 3.0</a>
+  | <a href="https://phabricator.wikimedia.org/diffusion/WDRN/"; title="Search 
Metrics Dashboard source code repository">Code</a> is licensed under <a 
href="https://phabricator.wikimedia.org/diffusion/WDRN/browse/master/LICENSE.md";
 title="MIT License">MIT</a>
+  | Part of <a href="https://discovery.wmflabs.org/";>Discovery Dashboards</a>
+</p>
diff --git a/ui.R b/ui.R
index 8b20615..d6b6ce6 100644
--- a/ui.R
+++ b/ui.R
@@ -60,7 +60,8 @@
                            menuSubItem(text = "Open Search", tabName = 
"open_search"),
                            menuSubItem(text = "Geo Search", tabName = 
"geo_search"),
                            menuSubItem(text = "Prefix Search", tabName = 
"prefix_search"),
-                           menuSubItem(text = "Language Search", tabName = 
"language_search")),
+                           menuSubItem(text = "Language Search", tabName = 
"language_search"),
+                           menuSubItem(text = "Referrer Breakdown", tabName = 
"referer_breakdown")),
                   menuItem(text = "Zero Results",
                            menuSubItem(text = "Summary", tabName = 
"failure_rate"),
                            menuSubItem(text = "Search Type Breakdown", tabName 
= "failure_breakdown"),
@@ -248,6 +249,18 @@
                 dygraphOutput("language_aggregate"),
                 includeMarkdown("./tab_documentation/language_basic.md")
         ),
+        tabItem(tabName = "referer_breakdown",
+                fluidRow(
+                  column(
+                    HTML("<label class = \"control-label\" style = 
\"margin-bottom:-30px;\">Type</label>"),
+                    shiny::checkboxInput("referer_breakdown_prop", label = 
"Use Proportion", value = FALSE),
+                    width = 2
+                  ),
+                  column(polloi::smooth_select("smoothing_referer_breakdown"), 
width = 10)
+                ),
+                dygraphOutput("referer_breakdown_plot"),
+                includeMarkdown("./tab_documentation/referer_breakdown.md")
+        ),
         tabItem(tabName = "failure_rate",
                 polloi::smooth_select("smoothing_failure_rate"),
                 polloi::automata_select(input_id = "failure_rate_automata"),
diff --git a/utils.R b/utils.R
index 70db0ed..3d9ad46 100644
--- a/utils.R
+++ b/utils.R
@@ -91,7 +91,14 @@
     dplyr::filter(!is.na(api), !is.na(referer_class), !is.na(calls)) %>%
     dplyr::distinct(date, api, referer_class, .keep_all = TRUE) %>%
     dplyr::arrange(api, date) %>%
-    dplyr::mutate(referer_class = 
polloi::capitalize_first_letter(referer_class)) %>%
+    dplyr::mutate(referer_class = forcats::fct_recode(
+      referer_class,
+      `None (direct)` = "none",
+      `Search engine` = "external (search engine)",
+      `External (but not search engine)` = "external",
+      Internal = "internal",
+      Unknown = "unknown"
+    )) %>%
     tidyr::spread(referer_class, calls) %>%
     dplyr::mutate(All = ifelse(is.na(All), rowSums(.[, -c(1, 2)], na.rm = 
TRUE), All)) %>%
     tidyr::gather(referrer, calls, -c(date, api)) %>%

-- 
To view, visit https://gerrit.wikimedia.org/r/374669
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic70d7054e02569eb8545dd347026c7f77321ab2c
Gerrit-PatchSet: 3
Gerrit-Project: wikimedia/discovery/rainbow
Gerrit-Branch: develop
Gerrit-Owner: Chelsyx <[email protected]>
Gerrit-Reviewer: Bearloga <[email protected]>
Gerrit-Reviewer: Chelsyx <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to