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

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

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

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 中ZSET数据类型命令使用及对应场景总结

1.zadd添加元素zaddkeyscoremember...

redis总结(redis常用)

RedisTemplate封装的工具类packagehk.com.easyview.common.helper;importcom.alibaba.fastjson.JSONObject;...

配置热更新系统(如何实现热更新)

整体设计概览┌────────────┐┌────────────────┐┌────────────┐│配置后台服务│--写入-->│Red...

java高级用法之:调用本地方法的利器JNA

简介JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做javanativeinterface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令...

SpringBoot:如何优雅地进行响应数据封装、异常处理

背景越来越多的项目开始基于前后端分离的模式进行开发,这对后端接口的报文格式便有了一定的要求。通常,我们会采用JSON格式作为前后端交换数据格式,从而减少沟通成本等。...

Java中有了基本类型为什么还要有包装类型(封装类型)

Java中基本数据类型与包装类型有:...

java面向对象三大特性:封装、继承、多态——举例说明(转载)

概念封装:封装就是将客观的事物抽象成类,类中存在属于这个类的属性和方法。...

java 面向对象编程:封装、继承、多态

Java中的封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)是面向对象编程的三大基本概念。它们有助于提高代码的可重用性、可扩展性和可维护性。...

怎样解析java中的封装(怎样解析java中的封装文件)

1.解析java中的封装1.1以生活中的例子为例,打开电视机的时候你只需要按下开关键,电视机就会打开,我们通过这个操作我们可以去间接的对电视机里面的元器件进行亮屏和显示界面操作,具体怎么实现我们并不...

python 示例代码(python代码详解)

以下是35个python代码示例,涵盖了从基础到高级的各种应用场景。这些示例旨在帮助你学习和理解python编程的各个方面。1.Hello,World!#python...

python 进阶突破——内置模块(Standard Library)

Python提供了丰富的内置模块(StandardLibrary),无需安装即可直接使用。以下是一些常用的内置模块及其主要功能:1.文件与系统操作...

Python程序员如何调试和分析Python脚本程序?附代码实现

调试和分析Python脚本程序调试技术和分析技术在Python开发中发挥着重要作用。调试器可以设置条件断点,帮助程序员分析所有代码。而分析器可以运行程序,并提供运行时的详细信息,同时也能找出程序中的性...

python中,函数和方法异同点(python方法和函数的区别)

在Python中,函数(Function)...

Python入门基础命令详解(python基础入门教程)

以下是Python基本命令的详解指南,专为初学者设计,涵盖基础语法、常用操作和实用示例:Python基本命令详解:入门必备指南1.Python简介特点:简洁易读、跨平台、丰富的库支持...