subscription_platform/dashboards/monitor_saasboard__retention.dashboard.lookml (1,086 lines of code) (raw):

--- - dashboard: monitor_saasboard__retention title: Monitor SaaSboard - Retention layout: newspaper preferred_viewer: dashboards-next description: '' preferred_slug: twy49L634gzYTaHbf0rQtX elements: - name: '' type: text title_text: '' body_text: | <div style="border-radius: 5px; padding: 5px 10px; background: #412399; height: 60px;"> <nav style="font-size: 20px;"> <a href="https://mozilla.cloud.looker.com/dashboards/subscription_platform::monitor_saasboard__active_subscriptions" style="color: #efefef; padding: 5px 25px; float: left; line-height: 40px;"> Active Subscriptions </a> <a href="https://mozilla.cloud.looker.com/dashboards/subscription_platform::monitor_saasboard__subscriptions_growth" style="color: #efefef; padding: 5px 25px; float: left; line-height: 40px;"> Subscriptions Growth </a> <a style="color: #efefef; padding: 5px 25px; float: left; line-height: 40px; border: 1px solid white; font-weight: bold; text-decoration: underline;"> Retention </a> <a href="https://mozilla.cloud.looker.com/dashboards/subscription_platform::monitor_saasboard__churn" style="color: #efefef; padding: 5px 25px; float: left; line-height: 40px;"> Churn </a> <a href="https://mozilla.cloud.looker.com/dashboards/subscription_platform::monitor_saasboard__revenue" style="color: #efefef; padding: 5px 25px; float: left; line-height: 40px;"> Revenue </a> <!--<a href="" style="color: #efefef; padding: 5px 25px; float: left; line-height: 40px;"> Docs </a>--> </nav> </div> row: 0 col: 0 width: 24 height: 2 - name: " (2)" type: text title_text: '' body_text: |- <div style='background-color: #ffffdd; padding: 5px 10px; border: solid 3px #ededed; border-radius: 5px; height:160px'> This dashboard captures the current state and trend of <strong>subscription retention</strong>. <ul> <li>Retention rate is the percentage of active subscriptions out of all subscriptions.</li> <li>A cohort refers to a group of subscriptions that started in a particular month. For example, cohort 2024-02 includes all subscriptions that started in the month of February 2024.</li> </ul> <br> </div> row: 2 col: 0 width: 16 height: 4 - title: Most Recent Data name: Most Recent Data model: subscription_platform explore: daily_active_logical_subscriptions type: single_value fields: [daily_active_logical_subscriptions.date_date] filters: daily_active_logical_subscriptions.date_date: 1 month sorts: [daily_active_logical_subscriptions.date_date desc] limit: 1 column_limit: 50 custom_color_enabled: true show_single_value_title: true show_comparison: false comparison_type: value comparison_reverse_colors: false show_comparison_label: true enable_conditional_formatting: false conditional_formatting_include_totals: false conditional_formatting_include_nulls: false x_axis_gridlines: false y_axis_gridlines: true show_view_names: false show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' limit_displayed_rows: false legend_position: center point_style: none show_value_labels: false label_density: 25 x_axis_scale: auto y_axis_combined: true show_null_points: true interpolation: linear defaults_version: 1 listen: {} row: 2 col: 16 width: 8 height: 4 - name: " (3)" type: text title_text: '' body_text: |- <div style="border-top: solid 2px #e0e0e0;"> <h3><b>Retention Rate</b></h3> </div> row: 6 col: 0 width: 24 height: 2 - title: Retention by Subscription Month Number name: Retention by Subscription Month Number model: subscription_platform explore: logical_subscriptions type: looker_column fields: [retention_by_month.subscription_month_number, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count] sorts: [retention_by_month.subscription_month_number] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_0 _kind_hint: measure table_calculation: retention_rate _type_hint: number x_axis_gridlines: false y_axis_gridlines: true show_view_names: false show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' limit_displayed_rows: false legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" y_axes: [{label: '', orientation: left, series: [{axisId: retention_by_month.retained_subscription_count, id: retention_by_month.retained_subscription_count, name: Retained Subscription Count}], showLabels: true, showValues: true, valueFormat: '', unpinAxis: false, tickDensity: default, type: linear}, {label: '', orientation: right, series: [ {axisId: retention_rate, id: retention_rate, name: Retention Rate}], showLabels: true, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, type: linear}] x_axis_zoom: true y_axis_zoom: true hide_legend: true series_types: retention_rate: line series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#0060E0" retention_rate: "#080808" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 8 col: 0 width: 12 height: 9 - title: Retention by Cohort name: Retention by Cohort model: subscription_platform explore: logical_subscriptions type: looker_column fields: [logical_subscriptions.started_at_month, logical_subscriptions.active_logical_subscription_count, logical_subscriptions.logical_subscription_count] sorts: [logical_subscriptions.started_at_month] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${logical_subscriptions.active_logical_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_0 _kind_hint: measure table_calculation: retention_rate _type_hint: number x_axis_gridlines: false y_axis_gridlines: true show_view_names: false show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' limit_displayed_rows: false legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" y_axes: [{label: '', orientation: left, series: [{axisId: retention_by_month.retained_subscription_count, id: retention_by_month.retained_subscription_count, name: Retained Subscription Count}], showLabels: true, showValues: true, valueFormat: '', unpinAxis: false, tickDensity: default, type: linear}, {label: '', orientation: right, series: [ {axisId: retention_rate, id: retention_rate, name: Retention Rate}], showLabels: true, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, type: linear}] x_axis_label: Cohort x_axis_zoom: true y_axis_zoom: true hide_legend: true series_types: retention_rate: line series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#0060E0" retention_rate: "#000000" logical_subscriptions.active_logical_subscription_count: "#0060E0" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 8 col: 12 width: 12 height: 9 - name: " (4)" type: text title_text: '' body_text: |- <div style="border-top: solid 2px #e0e0e0;"> <h3><b>Retention by Plan Interval</b></h3> </div> row: 17 col: 0 width: 24 height: 2 - title: Retention Rate by Plan Interval name: Retention Rate by Plan Interval model: subscription_platform explore: logical_subscriptions type: looker_line fields: [retention_by_month.subscription_month_number, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count, logical_subscriptions.plan_interval] pivots: [logical_subscriptions.plan_interval] sorts: [retention_by_month.subscription_month_number, logical_subscriptions.plan_interval] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_0 _kind_hint: measure table_calculation: retention_rate _type_hint: number x_axis_gridlines: false y_axis_gridlines: true show_view_names: false show_y_axis_labels: false show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' limit_displayed_rows: false legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true show_null_points: true interpolation: linear y_axes: [{label: '', orientation: left, series: [{axisId: retention_rate, id: 1 month - retention_rate, name: 1 month}, {axisId: retention_rate, id: 1 year - retention_rate, name: 1 year}], showLabels: false, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, type: linear}] x_axis_zoom: true y_axis_zoom: true series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count, retention_by_month.retained_subscription_count] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 19 col: 0 width: 24 height: 6 - title: Retention Rate Table by Plan Interval name: Retention Rate Table by Plan Interval model: subscription_platform explore: logical_subscriptions type: looker_grid fields: [retention_by_month.subscription_month_number, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count, logical_subscriptions.plan_interval, logical_subscriptions.plan_interval_months] pivots: [retention_by_month.subscription_month_number] sorts: [retention_by_month.subscription_month_number, logical_subscriptions.plan_interval_months] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_1 _kind_hint: measure table_calculation: retention_rate _type_hint: number show_view_names: false show_row_numbers: false transpose: false truncate_text: true hide_totals: false hide_row_totals: false size_to_fit: true table_theme: gray limit_displayed_rows: false enable_conditional_formatting: true header_text_alignment: left header_font_size: '12' rows_font_size: '12' conditional_formatting_include_totals: false conditional_formatting_include_nulls: false color_application: collection_id: mozilla palette_id: mozilla-categorical-0 show_sql_query_menu_options: false show_totals: true show_row_totals: true truncate_header: false minimum_column_width: 75 conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0", font_color: !!null '', color_application: {collection_id: mozilla, custom: { id: 0f658052-1e2b-a73a-2781-4709abe9c8ab, label: Custom, type: continuous, stops: [{color: "#FFFFFF", offset: 0}, {color: "#0060E0", offset: 100}]}, options: {steps: 5}}, bold: false, italic: false, strikethrough: false, fields: !!null ''}] series_value_format: retention_rate: name: percent_1 decimals: '1' format_string: "#,##0.0%" label: Percent (1) label_prefix: Percent x_axis_gridlines: false y_axis_gridlines: true show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" y_axes: [{label: !!null '', orientation: left, series: [{axisId: retention_by_month.churned_subscription_count, id: retention_by_month.churned_subscription_count, name: Churned Subscription Count}], showLabels: true, showValues: true, unpinAxis: false, tickDensity: custom, tickDensityCustom: 70, type: linear}, {label: !!null '', orientation: right, series: [{axisId: churn_percentage, id: churn_percentage, name: Churn Percentage}], showLabels: true, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, type: linear}] x_axis_zoom: true y_axis_zoom: true series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count, retention_by_month.retained_subscription_count, logical_subscriptions.plan_interval_months] hidden_pivots: {} show_null_points: true interpolation: linear listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 25 col: 0 width: 24 height: 4 - title: Retention Counts Table by Plan Interval name: Retention Counts Table by Plan Interval model: subscription_platform explore: logical_subscriptions type: looker_grid fields: [retention_by_month.subscription_month_number, retention_by_month.retained_subscription_count, logical_subscriptions.plan_interval, logical_subscriptions.plan_interval_months] pivots: [retention_by_month.subscription_month_number] sorts: [retention_by_month.subscription_month_number, logical_subscriptions.plan_interval_months] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_2 _kind_hint: measure table_calculation: retention_rate _type_hint: number is_disabled: true show_view_names: false show_row_numbers: false transpose: false truncate_text: true hide_totals: false hide_row_totals: false size_to_fit: true table_theme: gray limit_displayed_rows: false enable_conditional_formatting: true header_text_alignment: left header_font_size: '12' rows_font_size: '12' conditional_formatting_include_totals: false conditional_formatting_include_nulls: false color_application: collection_id: mozilla palette_id: mozilla-categorical-0 show_sql_query_menu_options: false show_totals: true show_row_totals: true truncate_header: false minimum_column_width: 75 series_cell_visualizations: retention_by_month.retained_subscription_count: is_active: false palette: palette_id: mozilla-diverging-0 collection_id: mozilla conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0", font_color: !!null '', color_application: {collection_id: mozilla, custom: { id: e1a5fe84-7c35-66f1-5c18-bfca571b6593, label: Custom, type: continuous, stops: [{color: "#FFFFFF", offset: 0}, {color: "#0060E0", offset: 100}]}, options: {steps: 100, stepped: true, mirror: false}}, bold: false, italic: false, strikethrough: false, fields: !!null ''}, {type: along a scale..., value: !!null '', background_color: !!null '', font_color: !!null '', color_application: {collection_id: mozilla, palette_id: mozilla-diverging-0}, bold: false, italic: false, strikethrough: false, fields: !!null ''}] x_axis_gridlines: false y_axis_gridlines: true show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" y_axes: [{label: !!null '', orientation: left, series: [{axisId: retention_by_month.churned_subscription_count, id: retention_by_month.churned_subscription_count, name: Churned Subscription Count}], showLabels: true, showValues: true, unpinAxis: false, tickDensity: custom, tickDensityCustom: 70, type: linear}, {label: !!null '', orientation: right, series: [{axisId: churn_percentage, id: churn_percentage, name: Churn Percentage}], showLabels: true, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, type: linear}] x_axis_zoom: true y_axis_zoom: true series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" defaults_version: 1 hidden_fields: [logical_subscriptions.plan_interval_months] hidden_pivots: {} show_null_points: true interpolation: linear listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 29 col: 0 width: 24 height: 4 - name: " (5)" type: text title_text: '' body_text: |- <div style="border-top: solid 2px #e0e0e0;"> <h3><b>Retention by Cohort</b></h3> </div> row: 33 col: 0 width: 24 height: 2 - title: Subscription Month Number Retention Rate by Cohort name: Subscription Month Number Retention Rate by Cohort model: subscription_platform explore: logical_subscriptions type: looker_line fields: [logical_subscriptions.started_at_month, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count, retention_by_month.subscription_month_number] pivots: [retention_by_month.subscription_month_number] sorts: [logical_subscriptions.started_at_month, retention_by_month.subscription_month_number] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_0 _kind_hint: measure table_calculation: retention_rate _type_hint: number x_axis_gridlines: false y_axis_gridlines: true show_view_names: false show_y_axis_labels: false show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' limit_displayed_rows: false legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true show_null_points: false interpolation: linear x_axis_label: Cohort x_axis_zoom: true y_axis_zoom: true series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" x_axis_datetime_label: "%Y-%m" ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count, retention_by_month.retained_subscription_count] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 35 col: 0 width: 12 height: 8 - title: Cohort Retention Rate by Subscription Month Number name: Cohort Retention Rate by Subscription Month Number model: subscription_platform explore: logical_subscriptions type: looker_line fields: [logical_subscriptions.started_at_month, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count, retention_by_month.subscription_month_number] pivots: [logical_subscriptions.started_at_month] sorts: [logical_subscriptions.started_at_month, retention_by_month.subscription_month_number] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_0 _kind_hint: measure table_calculation: retention_rate _type_hint: number x_axis_gridlines: false y_axis_gridlines: true show_view_names: false show_y_axis_labels: false show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false trellis: '' stacking: '' limit_displayed_rows: false legend_position: center point_style: circle_outline show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true show_null_points: false interpolation: linear x_axis_zoom: true y_axis_zoom: true series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count, retention_by_month.retained_subscription_count] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 35 col: 12 width: 12 height: 8 - title: Retention Rate Table by Cohort name: Retention Rate Table by Cohort model: subscription_platform explore: logical_subscriptions type: looker_grid fields: [logical_subscriptions.started_at_month, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count, retention_by_month.subscription_month_number] pivots: [retention_by_month.subscription_month_number] sorts: [logical_subscriptions.started_at_month, retention_by_month.subscription_month_number] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_1 _kind_hint: measure table_calculation: retention_rate _type_hint: number show_view_names: false show_row_numbers: false transpose: false truncate_text: true hide_totals: false hide_row_totals: false size_to_fit: true table_theme: gray limit_displayed_rows: false enable_conditional_formatting: true header_text_alignment: left header_font_size: '12' rows_font_size: '12' conditional_formatting_include_totals: false conditional_formatting_include_nulls: false color_application: collection_id: mozilla palette_id: mozilla-categorical-0 show_sql_query_menu_options: false show_totals: true show_row_totals: true truncate_header: false minimum_column_width: 75 conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0", font_color: !!null '', color_application: {collection_id: mozilla, custom: { id: 6e202dea-4711-4f97-d43b-bc07da472d7c, label: Custom, type: continuous, stops: [{color: "#FFFFFF", offset: 0}, {color: "#0060E0", offset: 100}]}, options: {steps: 5}}, bold: false, italic: false, strikethrough: false, fields: !!null ''}] series_value_format: retention_rate: name: percent_1 decimals: '1' format_string: "#,##0.0%" label: Percent (1) label_prefix: Percent x_axis_gridlines: false y_axis_gridlines: true y_axes: [{label: !!null '', orientation: left, series: [{axisId: retention_by_month.churned_subscription_count, id: retention_by_month.churned_subscription_count, name: Churned Subscription Count}], showLabels: true, showValues: true, unpinAxis: false, tickDensity: custom, tickDensityCustom: 70, type: linear}, {label: !!null '', orientation: right, series: [{axisId: churn_percentage, id: churn_percentage, name: Churn Percentage}], showLabels: true, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, type: linear}] show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false x_axis_zoom: true y_axis_zoom: true trellis: '' stacking: '' legend_position: center point_style: circle_outline series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true show_null_points: false interpolation: linear ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count, retention_by_month.retained_subscription_count] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 43 col: 0 width: 24 height: 5 - title: Retention Counts Table by Cohort name: Retention Counts Table by Cohort model: subscription_platform explore: logical_subscriptions type: looker_grid fields: [logical_subscriptions.started_at_month, retention_by_month.retained_subscription_count, logical_subscriptions.logical_subscription_count, retention_by_month.subscription_month_number] pivots: [retention_by_month.subscription_month_number] sorts: [logical_subscriptions.started_at_month, retention_by_month.subscription_month_number] limit: 500 column_limit: 50 dynamic_fields: - category: table_calculation expression: "${retention_by_month.retained_subscription_count} / ${logical_subscriptions.logical_subscription_count}" label: Retention Rate value_format: value_format_name: percent_2 _kind_hint: measure table_calculation: retention_rate _type_hint: number show_view_names: false show_row_numbers: false transpose: false truncate_text: true hide_totals: false hide_row_totals: false size_to_fit: true table_theme: gray limit_displayed_rows: false enable_conditional_formatting: true header_text_alignment: left header_font_size: '12' rows_font_size: '12' conditional_formatting_include_totals: false conditional_formatting_include_nulls: false color_application: collection_id: mozilla palette_id: mozilla-categorical-0 show_sql_query_menu_options: false show_totals: true show_row_totals: true truncate_header: false minimum_column_width: 75 series_cell_visualizations: retention_by_month.retained_subscription_count: is_active: false conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0", font_color: !!null '', color_application: {collection_id: mozilla, custom: { id: 5fb21dfb-e30d-02cb-7cef-9d2b3613492b, label: Custom, type: continuous, stops: [{color: "#FFFFFF", offset: 0}, {color: "#0060E0", offset: 100}]}, options: {steps: 5, stepped: true}}, bold: false, italic: false, strikethrough: false, fields: !!null ''}] x_axis_gridlines: false y_axis_gridlines: true y_axes: [{label: !!null '', orientation: left, series: [{axisId: retention_by_month.churned_subscription_count, id: retention_by_month.churned_subscription_count, name: Churned Subscription Count}], showLabels: true, showValues: true, unpinAxis: false, tickDensity: custom, tickDensityCustom: 70, type: linear}, {label: !!null '', orientation: right, series: [{axisId: churn_percentage, id: churn_percentage, name: Churn Percentage}], showLabels: true, showValues: true, valueFormat: 0%, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, type: linear}] show_y_axis_labels: true show_y_axis_ticks: true y_axis_tick_density: default y_axis_tick_density_custom: 5 show_x_axis_label: true show_x_axis_ticks: true y_axis_scale_mode: linear x_axis_reversed: false y_axis_reversed: false plot_size_by_field: false x_axis_zoom: true y_axis_zoom: true trellis: '' stacking: '' legend_position: center point_style: circle_outline series_colors: retention_by_month.churned_subscription_count: "#FF7139" retention_by_month.retained_subscription_count: "#005E5D" show_value_labels: true label_density: 25 x_axis_scale: auto y_axis_combined: true show_null_points: false interpolation: linear ordering: none show_null_labels: false show_totals_labels: false show_silhouette: false totals_color: "#808080" defaults_version: 1 hidden_fields: [logical_subscriptions.logical_subscription_count, retention_rate] hidden_pivots: {} listen: Subscription Start Date: logical_subscriptions.started_at_date Has Refunds (Yes / No): logical_subscriptions.has_refunds Has Fraudulent Charges (Yes / No): logical_subscriptions.has_fraudulent_charges Payment Provider: logical_subscriptions.payment_provider Region: countries.region_name Country: countries.name Service ID: subscription_services.id Plan Interval: logical_subscriptions.plan_interval Plan: logical_subscriptions.plan_summary row: 48 col: 0 width: 24 height: 5 filters: - name: Subscription Start Date title: Subscription Start Date type: field_filter default_value: after 2024-02-01 allow_multiple_values: true required: false ui_config: type: advanced display: popover options: [] model: subscription_platform explore: logical_subscriptions listens_to_filters: [] field: logical_subscriptions.started_at_date - name: Payment Provider title: Payment Provider type: field_filter default_value: '' allow_multiple_values: true required: false ui_config: type: checkboxes display: popover model: subscription_platform explore: logical_subscriptions listens_to_filters: [Subscription Start Date, Service ID] field: logical_subscriptions.payment_provider - name: Plan Interval title: Plan Interval type: field_filter default_value: '' allow_multiple_values: true required: false ui_config: type: checkboxes display: popover model: subscription_platform explore: logical_subscriptions listens_to_filters: [Subscription Start Date, Service ID] field: logical_subscriptions.plan_interval - name: Plan title: Plan type: field_filter default_value: '' allow_multiple_values: true required: false ui_config: type: checkboxes display: popover model: subscription_platform explore: logical_subscriptions listens_to_filters: [Plan Interval, Subscription Start Date, Service ID] field: logical_subscriptions.plan_summary - name: Region title: Region type: field_filter default_value: '' allow_multiple_values: true required: false ui_config: type: checkboxes display: popover model: subscription_platform explore: logical_subscriptions listens_to_filters: [Subscription Start Date, Service ID] field: countries.region_name - name: Country title: Country type: field_filter default_value: '' allow_multiple_values: true required: false ui_config: type: checkboxes display: popover model: subscription_platform explore: logical_subscriptions listens_to_filters: [Region, Subscription Start Date, Service ID] field: countries.name - name: Has Fraudulent Charges (Yes / No) title: Has Fraudulent Charges (Yes / No) type: field_filter default_value: 'No' allow_multiple_values: true required: false ui_config: type: dropdown_menu display: overflow model: subscription_platform explore: logical_subscriptions listens_to_filters: [] field: logical_subscriptions.has_fraudulent_charges - name: Has Refunds (Yes / No) title: Has Refunds (Yes / No) type: field_filter default_value: '' allow_multiple_values: true required: false ui_config: type: dropdown_menu display: overflow model: subscription_platform explore: logical_subscriptions listens_to_filters: [] field: logical_subscriptions.has_refunds - name: Service ID title: Service ID type: field_filter default_value: Monitor allow_multiple_values: true required: true ui_config: type: button_toggles display: overflow options: - Monitor model: subscription_platform explore: logical_subscriptions listens_to_filters: [] field: subscription_services.id