图表配置表增加分析指标字段

在设计报表图表配置表时,为存储 同比、环比 这类分析指标,建议通过以下方式定义字段结构和命名:


一、字段设计方案

// 配置表示例结构
interface ChartConfig {
  id: string;                 // 唯一标识
  name: string;               // 图表名称
  queryOptions: object;       // 数据查询参数
  echartOptions: object;      // ECharts 配置
  analysisMetrics: Metric[];  // 新增:分析指标配置(同比、环比等)
}
字段名称建议
字段名类型说明
analysisMetricsMetric[]推荐命名:明确表示“分析指标”,覆盖同比、环比等多种类型
comparisonMetricsMetric[]备选命名:强调“对比”特性,但可能不涵盖非对比类指标(如累计值)

二、指标项结构定义(Metric

interface Metric {
  type: "YoY" | "MoM" | "QoQ" | "custom";  // 指标类型(必填)
  displayName?: string;                     // 显示名称(如"同比增长率")
  enabled: boolean;                        // 是否启用该指标
  params?: {                               // 计算参数(可选)
    basePeriod?: string;                   // 对比基准周期(如"2023-01")
    precision?: number;                    // 小数精度(默认2)
    unit?: "%" | "x";                      // 单位(默认百分比)
  };
  // 可扩展字段
  // style?: object;                      // 可视化样式(如颜色、图表类型)
  // formula?: string;                    // 自定义计算公式(高级场景)
}

三、配置示例

1. 简单场景(仅启用同比环比)
{
  id: "sales_chart_001",
  name: "销售额趋势",
  analysisMetrics: [
    { 
      type: "YoY", 
      displayName: "同比增长率",
      enabled: true,
      params: { precision: 1 }
    },
    { 
      type: "MoM", 
      displayName: "环比增长率",
      enabled: true
    }
  ]
}
2. 高级场景(自定义基准周期)
{
  id: "user_growth_002",
  name: "用户增长分析",
  analysisMetrics: [
    {
      type: "custom",
      displayName: "较年初增长率",
      enabled: true,
      params: {
        basePeriod: "2024-01",  // 指定对比基准为2024年1月
        unit: "%"
      }
    }
  ]
}

四、关联数据处理

1. **与 queryOptions 的联动

通过 analysisMetrics 动态生成查询参数:

// 根据指标类型自动追加查询字段
if (analysisMetrics.some(m => m.type === "YoY")) {
  queryOptions.fields.push("last_year_value");
}
2. **与 echartOptions 的集成

在图表中渲染指标(如副Y轴或Tooltip):

// 自动生成副Y轴配置
if (analysisMetrics.length > 0) {
  echartOptions.yAxis.push({
    type: "value",
    name: "增长率",
    axisLabel: { formatter: "{value}%" }
  });
}

// 在Tooltip中显示指标值
echartOptions.tooltip.formatter = (params) => {
  const metricsText = params
    .filter(p => p.seriesType === 'line')  // 假设增长率为折线图
    .map(p => `${p.seriesName}: ${p.value}%`)
    .join("<br/>");
  return `${params[0].name}<br/>${metricsText}`;
};

五、扩展性建议

  1. 类型扩展
    预留 custom 类型,支持未来新增指标(如 WoW周环比、YTD年初至今累计):

    type MetricType = "YoY" | "MoM" | "QoQ" | "WoW" | "YTD" | "custom";
    
  2. 计算逻辑分离
    在后端或数据层实现指标计算,避免在前端配置中嵌入复杂公式。

  3. 可视化控制
    可增加 style 字段控制指标在图表中的呈现方式:

    interface Metric {
      // ...
      style?: {
        chartType?: "line" | "bar";      // 渲染为折线图或柱状图
        color?: string;                // 颜色覆盖
        position?: "left" | "right";   // Y轴位置
      };
    }
    

六、完整配置表示例

{
  id: "revenue_analysis_003",
  name: "营收多维分析",
  queryOptions: {
    dataset: "monthly_sales",
    filters: { year: 2024 },
    fields: ["month", "revenue"]
  },
  echartOptions: { /* 原始ECharts配置 */ },
  analysisMetrics: [
    {
      type: "YoY",
      displayName: "同比",
      enabled: true,
      params: { precision: 1 }
    },
    {
      type: "MoM",
      displayName: "环比",
      enabled: true,
      style: {
        chartType: "line",
        color: "#ff6b6b",
        position: "right"
      }
    }
  ]
}

通过这种设计,您的配置表可以:

  • 清晰区分不同分析指标类型
  • 灵活控制指标的计算与展示
  • 无缝衔接数据查询与图表渲染
  • 轻松扩展新增指标类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值