metric configs 🙏🏼

This commit is contained in:
dal 2025-04-18 14:45:56 -06:00
parent 96853b8757
commit ad4d2c8568
No known key found for this signature in database
GPG Key ID: 16F4B0E1E9F61122
3 changed files with 115 additions and 11 deletions

View File

@ -205,6 +205,7 @@ You can create, update, or modify the following assets, which are automatically
- **Review and Update**: After creation, metrics can be reviewed and updated individually or in bulk as needed.
- **Use in Dashboards**: Metrics can be saved to dashboards for further use.
- **Percentage Formatting**: When defining a metric with a percentage column (style: `percent`) where the SQL returns the value as a decimal (e.g., 0.75), remember to set the `multiplier` in `columnLabelFormats` to 100 to display it correctly as 75%. If the value is already represented as a percentage (e.g., 75), the multiplier should be 1 (or omitted as it defaults to 1).
- **Date Grouping**: For metrics visualizing date columns on the X-axis (e.g., line or combo charts), remember to set the `xAxisTimeInterval` field within the `xAxisConfig` section of `chartConfig` to control how dates are grouped (e.g., `day`, `week`, `month`). This is crucial for meaningful time-series visualizations.
- **Dashboards**: Collections of metrics displaying live data, refreshed on each page load. Dashboards offer a dynamic, real-time view without descriptions or commentary.

View File

@ -244,7 +244,7 @@ required:
- chartConfig
definitions:
# BASE CHART CONFIG (common parts required by ALL chart types)
# BASE CHART CONFIG (common parts used by ALL chart types)
base_chart_config:
type: object
properties:
@ -275,6 +275,10 @@ definitions:
type: boolean
gridLines:
type: boolean
showLegendHeadline:
oneOf:
- type: boolean
- type: string
goalLines:
type: array
items:
@ -283,10 +287,105 @@ definitions:
type: array
items:
$ref: #/definitions/trendline
disableTooltip:
type: boolean
# Axis Configurations
xAxisConfig:
description: Optional X-axis configuration. Primarily used to set the `xAxisTimeInterval` for date axes (day, week, month, etc.). Other properties control label visibility, title, rotation, and zoom.
$ref: '#/definitions/x_axis_config'
yAxisConfig:
description: Optional Y-axis configuration. Primarily used to set the `yAxisShowAxisLabel` and `yAxisShowAxisTitle` properties. Other properties control label visibility, title, rotation, and zoom.
$ref: '#/definitions/y_axis_config'
y2AxisConfig:
description: Optional secondary Y-axis configuration. Used for combo charts.
$ref: '#/definitions/y2_axis_config'
categoryAxisStyleConfig:
description: Optional style configuration for the category axis (color/grouping).
$ref: '#/definitions/category_axis_style_config'
required:
- selectedChartType
- columnLabelFormats
# AXIS CONFIGURATIONS
x_axis_config:
type: object
properties:
xAxisTimeInterval:
type: string
enum: [day, week, month, quarter, year, 'null']
description: Time interval for X-axis (combo/line charts). Default: null.
xAxisShowAxisLabel:
type: boolean
description: Show X-axis labels. Default: true.
xAxisShowAxisTitle:
type: boolean
description: Show X-axis title. Default: true.
xAxisAxisTitle:
type: [string, 'null']
description: X-axis title. Default: null (auto-generates from column names).
xAxisLabelRotation:
type: string # Representing numbers or 'auto'
enum: ["0", "45", "90", auto]
description: Label rotation. Default: auto.
xAxisDataZoom:
type: boolean
description: Enable data zoom on X-axis. Default: false (User only).
additionalProperties: false
required:
- xAxisTimeInterval
y_axis_config:
type: object
properties:
yAxisShowAxisLabel:
type: boolean
description: Show Y-axis labels. Default: true.
yAxisShowAxisTitle:
type: boolean
description: Show Y-axis title. Default: true.
yAxisAxisTitle:
type: [string, 'null']
description: Y-axis title. Default: null (uses first plotted column name).
yAxisStartAxisAtZero:
type: [boolean, 'null']
description: Start Y-axis at zero. Default: true.
yAxisScaleType:
type: string
enum: [log, linear]
description: Scale type for Y-axis. Default: linear.
additionalProperties: false
y2_axis_config:
type: object
description: Secondary Y-axis configuration (for combo charts).
properties:
y2AxisShowAxisLabel:
type: boolean
description: Show Y2-axis labels. Default: true.
y2AxisShowAxisTitle:
type: boolean
description: Show Y2-axis title. Default: true.
y2AxisAxisTitle:
type: [string, 'null']
description: Y2-axis title. Default: null (uses first plotted column name).
y2AxisStartAxisAtZero:
type: [boolean, 'null']
description: Start Y2-axis at zero. Default: true.
y2AxisScaleType:
type: string
enum: [log, linear]
description: Scale type for Y2-axis. Default: linear.
additionalProperties: false
category_axis_style_config:
type: object
description: Style configuration for the category axis (color/grouping).
properties:
categoryAxisTitle:
type: [string, 'null']
description: Title for the category axis.
additionalProperties: false
# COLUMN FORMATTING
columnLabelFormat:
type: object
@ -305,7 +404,7 @@ definitions:
# - If the value comes directly from a database column, use multiplier: 1
# - If the value is calculated in your SQL query and not already multiplied by 100, use multiplier: 100
- number
- date
- date # Note: For date columns, consider setting xAxisTimeInterval in xAxisConfig to control date grouping (day, week, month, quarter, year)
- string
multiplier:
type: number

View File

@ -205,15 +205,19 @@ pub struct BaseChartConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "disable_tooltip")]
pub disable_tooltip: Option<bool>,
// Updated Axis Configs using defined structs
#[serde(flatten, default)] // Flatten includes fields directly, default handles Option
pub y_axis_config: YAxisConfig,
#[serde(flatten, default)]
pub x_axis_config: XAxisConfig,
#[serde(flatten, default)]
pub category_axis_style_config: CategoryAxisStyleConfig,
#[serde(flatten, default)]
pub y2_axis_config: Y2AxisConfig,
// Updated Axis Configs using defined structs (now optional)
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "y_axis_config")]
pub y_axis_config: Option<YAxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "x_axis_config")]
pub x_axis_config: Option<XAxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "category_axis_style_config")]
pub category_axis_style_config: Option<CategoryAxisStyleConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "y2_axis_config")]
pub y2_axis_config: Option<Y2AxisConfig>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]