Define version 1 of User Dashboard Schema

Overview

We're aiming to define version 1 of a schema and directory structure to define user-defined dashboards. Collaboration on this goal should happen entirely in this issue.

How to use this issue

The issue description is the SSoT for the current state of the schema and directory structure.

Discussion should occur in comments and threads.

Directory Structure

  • Each project can have multiple dashboards and each dashboard should be contained within its own directory. The root directory should be .gitlab/product_analytics_dashboards. Example:
.gitlab/product_analytics_dashboards
├── conversion_funnels
│   └── conversion_funnels.yaml
├── demographic_breakdown
│   └── demographic_breakdown.yaml
├── north_star_metrics
    └── north_star_metrics.yaml
  • Only YAML files are supported.
  • The name of the directory should be a unique slug name of the dashboard. We can use that as the URL route.
  • Each dashboard folder should at a minimum contain a dashboard definition file. The filename should match the folder name + .yaml.

Dashboard Definition Example

---
version: '1'
title: North Star Metrics
description: North Star Metrics across all departments for the last 3 quarters.
# Filters are applied to every widget
filters:
  timeDimensions:
    dateRange:
      - '2016-01-01'
      - '2016-01-30'
widgets:
  - title: Overall Conversion Rate
    gridAttributes:
      yPos: 4
      xPos: 1
      width: 12
      height: 2
    visualization: CubeLineChart

Visualization Definition Example

---
version: '1'
type: LineChart
options:
  xAxis
    name: Time
    type: time
  yAxis: 
    name: Counts
data:
  type: Cube
  query:
    measures:
      - Stories.count
    dimensions:
      - Stories.category
    filters:
      - member: Stories.isDraft
        operator: equals
        values:
          - 'No'
    timeDimensions:
      - dimension: Stories.time
        # dateRange set by the dashboard filter
        granularity: month
    limit: 100
    offset: 50
    order:
      Stories.time: asc
      Stories.count: desc
    timezone: America/Los_Angeles
Edited by Jiaan Louw