Apache Superset图表Y轴自定义数值格式:信用评级映射问题咨询
Apache Superset信用评级Y轴标签自定义方案解答
1. 映射表+自定义数字格式方案是否可行?
完全可行。具体落地可以这么做:
- 在数据库里建个
rating_mapping映射表,存好1-21对应的信用评级标签(比如1对应AAA,2对应AA+); - 把原始数据集和这个映射表做关联,确保每个数字评分都能匹配到对应的标签;
- 进入图表配置后,针对Y轴设置自定义格式——如果是ECharts类图表,还能通过自定义JS代码替换标签,把数字值换成对应的评级文字。
2. 更简便的实现方式?
有两种更省事的路子:
- 直接在图表里写硬编码映射:要是评级规则固定死了,不用折腾数据库建表,直接在Y轴的标签格式化里写个JS函数就行。比如在ECharts的Y轴配置里加这段代码:
这种方式不用改任何数据,直接在图表层面搞定,适合规则不变的场景。axisLabel: { formatter: function(value) { const ratingMap = { 1: 'AAA', 2: 'AA+', 3: 'AA', 4: 'AA-', 5: 'A+', 6: 'A', 7: 'A-', 8: 'BBB+', 9: 'BBB', 10: 'BBB-', 11: 'BB+', 12: 'BB', 13: 'BB-', 14: 'B+', 15: 'B', 16: 'B-', 17: 'CCC+', 18: 'CCC', 19: 'CCC-', 20: 'CC', 21: 'C' }; return ratingMap[value] || value; } } - 用Superset计算列转标签:在数据集里加个计算列,用CASE WHEN语句直接把数字转成评级标签,比如:
之后图表计算平均值用原始的CASE WHEN score = 1 THEN 'AAA' WHEN score = 2 THEN 'AA+' -- 补全1-21的对应规则 WHEN score = 21 THEN 'C' ELSE score::TEXT END AS rating_labelscore列,显示标签用这个新的rating_label列,既保证平均计算准确,又能显示对应的评级文字。
内容的提问来源于stack exchange,提问作者RLH
相关产品推荐
相关产品推荐

