百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

基于开源可视化数据探索平台 Superset 的指标体系建设

wptr33 2025-03-02 19:15 13 浏览

Apache Superset 是一款开源的现代数据探索和可视化平台,具有快速、轻量级、直观的特点,并且提供多种的能力,使不同用户都能够轻松探索和可视化数据。Apache Superset 目前最新的版本是 2.0.0,除了能像之前的版本一样,能够接入绝大多数常见的数据源,还内置了部分 Apache ECharts 图表,并且提供了数据看板认证的功能。

本文提供一个指标体系建设的示例来说明,如何在 Superset 上创建一个数据口径一致的自助数据看板。通过这个示例,不仅可以了解到基础指标、派生指标、修饰类型、修饰词、时间周期等概念,还能够了解如何在 Superset 上创建一个口径统一的指标看板。



创建指标体系示例

1.使用和查看数据源数据

superset.birth_names 这张表中包含 7 个字段:分别是:ds、gender、name、num、state、num_boys、num_girls


2.指标体系示例

使用上述数据表搭建一套简单的指标体系示例,来说明:基础指标、派生指标、修饰词、时间周期、维度、度量等概念。


3.创建基础指标

指标的创建需要根据业务场景来制定的,制定好的指标要为业务服务。

这里我们以 出生取名字 这个 业务过程 为例,来制定一个 出生人数 的指标,该指标要支持在 年份、性别、姓名、地区 这 4 个维度上进行下钻分析。

按照这个指标需求,可以定义以下基础指标的技术口径(SQL):

-- 基础指标:出生人数

SELECT ds AS '年份',
       gender '性别',
       name AS '姓名',
       STATE AS '地区',
       sum(num) AS '人数'
FROM superset.birth_names
GROUP BY ds,
         gender,
         name,
         STATE;


4.创建派生指标

  • 单维度派生指标:出生地为“CA”的出生人数。该指标的修饰类型为:地区修饰词为:CA
-- 单维度派生指标:出生地为“CA”的出生人数
-- 按照地区下钻

SELECT DATE(`年份`) AS `年份`,
       `地区` AS `地区`,
       `性别` AS `性别`,
       `姓名` AS `姓名`,
       sum(`人数`) AS `SUM(人数)`
FROM
  (SELECT ds AS '年份',
          gender '性别',
                 name AS '姓名',
                 STATE AS '地区',
                 sum(num) AS '人数'
   FROM superset.birth_names
   GROUP BY ds,
            gender,
            name,
            STATE) AS virtual_table
WHERE `地区` IN ('CA')
GROUP BY DATE(`年份`),
         `地区`,
         `性别`,
         `姓名`;


  • 双维度派生指标:出生地为“CA”、姓名为“James”的出生人数该指标的修饰类型为:地区的修饰词为:修饰词为:CA;修饰类型为:姓名的修饰词为:James
-- 双维度派生指标:出生地为“CA”、名字为“James”的出生人数
-- 按照 地区/名字 下钻

SELECT DATE(`年份`) AS `年份`,
       `地区` AS `地区`,
       `性别` AS `性别`,
       `姓名` AS `姓名`,
       sum(`人数`) AS `SUM(人数)`
FROM
  (SELECT ds AS '年份',
          gender '性别',
                 name AS '姓名',
                 STATE AS '地区',
                 sum(num) AS '人数'
   FROM superset.birth_names
   GROUP BY ds,
            gender,
            name,
            STATE) AS virtual_table
WHERE `地区` IN ('CA')
  AND `姓名` IN ('James')
GROUP BY DATE(`年份`),
         `地区`,
         `性别`,
         `姓名`;


  • 时间维度派生指标:2006-2008年、出生地为“CA”、名字为“James”的出生人数该指标在上面的双维度派生指标的基础上,增加了时间周期:2006年 - 2008年期间
-- 时间维度派生指标:2006-2008年、出生地为“CA”、名字为“James”的出生人数
-- 按照 时间/地区/名字 下钻

SELECT DATE(`年份`) AS `年份`,
       `地区` AS `地区`,
       `性别` AS `性别`,
       `姓名` AS `姓名`,
       sum(`人数`) AS `SUM(人数)`
FROM
  (SELECT ds AS '年份',
          gender '性别',
                 name AS '姓名',
                 STATE AS '地区',
                 sum(num) AS '人数'
   FROM superset.birth_names
   GROUP BY ds,
            gender,
            name,
            STATE) AS virtual_table
WHERE `年份` IN (STR_TO_DATE('2006-01-01 00:00:00.000000', '%Y-%m-%d %H:%i:%s.%f'),
               STR_TO_DATE('2007-01-01 00:00:00.000000', '%Y-%m-%d %H:%i:%s.%f'),
               STR_TO_DATE('2008-01-01 00:00:00.000000', '%Y-%m-%d %H:%i:%s.%f'))
  AND `地区` IN ('CA')
  AND `姓名` IN ('James')
GROUP BY DATE(`年份`),
         `地区`,
         `性别`,
         `姓名`;


至此,我们创建了 1 个基础指标,3 个派生指标。由于 3 个派生指标是由同 1 个基础指标派生而来,能够保证指标的数据口径是一致的。


在 Superset 中制作自助报表

1.创建数据集


打开 Superset -> SQL 工具箱 -> SQL Editor ,使用上述基础指标的 SQL,SAVE AS 一个名为 metrics_birth_names 的数据集。数据集创建好之后,可以在 数据 -> 数据集 中找到。



2.制作图表

使用上述创建好的数据集,创建一张数据表类型的图标。将左侧的数据列中依次拖入中间部分的 维度指标 框中,点击 CREATE CHART,生成数据表。


在生成的图表中,点击右上角的 View query,查看图标对应的 SQL ,验证图表的 SQL 与基础指标的 SQL 基本一致。


使用相同的数据集和步骤,创建其它类型的图表。


3.制作指标看板

将制作好的图表拖到同一张指标看板中。


4.验证和发布指标看板

指标数据看板上,每张图表的右上角都有 View query 菜单,通过点击该菜单来验证每张图表的数据口径。


指标看板上图表的口径验证完之后,标识成已认证,并正式发布。



总结

本文基于 Superset 2.0 自带的数据集,定义了一套 出生取名字 的指标体系示例,包括 1 个基础指标,3 个派生指标。通过这套指标体系,创建了 Superset 的图标和看板,并且演示了如何验证图表的以及看板的数据口径。数据口径验证无误之后,认证并发布自助指标看板。

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...