opmon/mozilla_vpn.toml (142 lines of code) (raw):

[project] name = "Mozilla VPN" platform = "fenix" # not really but needs some platform. I'm overwriting everything xaxis = "submission_date" start_date = "2023-12-02" skip = false is_rollout = false skip_default_metrics = true compact_visualization = false metrics = [ "session_count", "avg_session_duration", "active_subscribers", "avg_sum_session_duration", "cnt_session_starts", "cnt_session_ends", "cnt_sessions_start_and_end", "cnt_negative_session_lengths" ] [project.population] data_source = "base_table" monitor_entire_population = true dimensions = ["app"] group_by_dimension = "app" [data_sources] [data_sources.base_table] from_expression = """ ( SELECT "vpnsession" as source_table, DATE(v.submission_timestamp) AS submission_date, CONCAT(client_info.os, " - vpn_session") as app, CASE v.normalized_app_id WHEN "mozillavpn" THEN v.client_info.client_id ELSE v.metrics.uuid.session_installation_id END AS client_id, v.metrics.uuid.session_session_id AS session_id, v.metrics.datetime.session_session_start AS session_start, v.metrics.datetime.session_session_end AS session_end, FROM `moz-fx-data-shared-prod.mozilla_vpn.vpnsession` AS v UNION ALL SELECT "daemonsession" AS source_table, DATE(d.submission_timestamp) AS submission_date, CONCAT(client_info.os, " - daemon_session") AS app, d.metrics.uuid.session_installation_id AS client_id, d.metrics.uuid.session_daemon_session_id AS session_id, d.metrics.datetime.session_daemon_session_start AS session_start, d.metrics.datetime.session_daemon_session_end AS session_end, FROM `moz-fx-data-shared-prod.mozilla_vpn.daemonsession` AS d ) """ client_id_column = "client_id" [data_sources.session_duration_table] from_expression = """ ( SELECT submission_date, app, client_id, session_id, --IF(MAX(session_end) > MIN(session_start), TIMESTAMP_DIFF(MAX(session_end), MIN(session_start), MINUTE), NULL) AS session_duration, TIMESTAMP_DIFF(MAX(session_end), MIN(session_start), MINUTE) AS session_duration, COUNT(session_start) AS cnt_session_starts, COUNT(session_end) as cnt_session_ends FROM ( SELECT DATE(v.submission_timestamp) AS submission_date, CONCAT(client_info.os, " - vpn_session") as app, CASE v.normalized_app_id WHEN "mozillavpn" then v.client_info.client_id ELSE v.metrics.uuid.session_installation_id END AS client_id, v.metrics.uuid.session_session_id AS session_id, v.metrics.datetime.session_session_start as session_start, v.metrics.datetime.session_session_end as session_end, FROM `moz-fx-data-shared-prod.mozilla_vpn.vpnsession` v UNION ALL SELECT DATE(d.submission_timestamp) AS submission_date, CONCAT(client_info.os, " - daemon_session") AS app, d.metrics.uuid.session_installation_id AS client_id, d.metrics.uuid.session_daemon_session_id as session_id, d.metrics.datetime.session_daemon_session_start as session_start, d.metrics.datetime.session_daemon_session_end as session_end, FROM `moz-fx-data-shared-prod.mozilla_vpn.daemonsession` d ) GROUP BY submission_date, app, client_id, session_id ) """ client_id_column = "client_id" [dimensions] [dimensions.app] data_source = "base_table" select_expression = "app" [metrics] [metrics.session_count] data_source = "base_table" select_expression = "COUNT(DISTINCT session_id)" type = "scalar" statistics.sum = {} [metrics.avg_session_duration] data_source = "session_duration_table" select_expression = "AVG(session_duration)" type = "scalar" statistics.mean = {} statistics.percentile = {} [metrics.active_subscribers] data_source = "base_table" select_expression = "COUNT(DISTINCT client_id)" type = "scalar" statistics.sum = {} [metrics.avg_sum_session_duration] data_source = "session_duration_table" select_expression = "SUM(IF(session_duration > 0, session_duration, NULL))" type = "scalar" statistics.mean = {} statistics.percentile = {} [metrics.cnt_session_starts] data_source = "session_duration_table" select_expression = "COUNTIF(cnt_session_starts > 0)" type = "scalar" statistics.sum = {} [metrics.cnt_session_ends] data_source = "session_duration_table" select_expression = "COUNTIF(cnt_session_ends > 0)" type = "scalar" statistics.sum = {} [metrics.cnt_sessions_start_and_end] data_source = "session_duration_table" select_expression = "COUNTIF(cnt_session_starts > 0 AND cnt_session_ends > 0)" type = "scalar" statistics.sum = {} [metrics.cnt_negative_session_lengths] data_source = "session_duration_table" select_expression = "COUNTIF(session_duration < 0)" type = "scalar" statistics.sum = {}