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

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

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

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 的图标和看板,并且演示了如何验证图表的以及看板的数据口径。数据口径验证无误之后,认证并发布自助指标看板。

相关推荐

用Java实现RAG的3大核心模块与7个必知细节

一、真实场景驱动:某制造企业的知识管理之痛某汽车零部件企业有超过20万份技术文档(PDF/HTML/Word),工程师每天平均花费2小时查找资料。我们为其构建的Java版RAG系统,将查询耗时缩短至1...

在 C# .NET 中从 PDF 中提取表数据

概述:...

【分享】教你如何使用 Java 读取 Excel、docx、pdf 和 txt 文件

在Java开发中,我们经常需要读取不同类型的文件,包括Excel表格文件、"doc"和"docx"文档文件、PDF文件以及纯文本文件。其中最常用的是A...

Spring AI 模块架构与功能解析

SpringAI是Spring生态系统中的一个新兴模块,专注于简化人工智能和机器学习技术在Spring应用程序中的集成。本文将详细介绍SpringAI的核心组件、功能模块及其之间的关...

告别付费!一站式服务,PDF多功能工具!

大家好,我是Java陈序员。今天,给大家介绍一个PDF多功能在线操作工具,完全免费开源!...

本地PDF操作神器:永久告别盗版和破解,再也不用担心安全问题

前言PDF(便携式文档格式)目前已经成为了文档交换和存储的标准。然而,找到一个功能全面、安全可靠、且完全本地化的PDF处理工具并不容易。...

Python rembg 库去除图片背景

rembg是一个强大的Python库,用于自动去除图片背景。它基于深度学习模型(如U^2-Net),能够高效地将前景物体从背景中分离,生成透明背景的PNG图像。本教程将带你从安装到实际应用...

31个必备的python字符串方法,建议收藏

字符串是Python中基本的数据类型,几乎在每个Python程序中都会使用到它。...

python学习day1——输出格式化

print一般在控制台中我们用print进行输出,默认情况下,使用格式为:print(*objects,sep='',end='\n')第一个参数是我们要在控制台...

一张图认识Python(附基本语法总结)

一张图认识Python(附基本语法总结)一张图带你了解Python,更快入门,一张图认识Python(附基本语法总结)Python基础语法总结:1.Python标识符在Python里,标识符有字...

学习编程第188天 python编程 字典格式化

今天学习的是刘金玉老师零基础Python教程第84期,主要内容是python字典格式化。...

Python基础数据类型转换

Python中的基础数据类型转换可以分为隐式转换和显示转换。隐式转换是python解释器自动转换,显示转换是通过内置函数实现。无论哪种方式进行的转换,均为转换为对应类型的数据,而非改变原数据的类型。...

python之json基本操作

1.概述JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它具有简洁、清晰的层次结构,易于阅读和编写,还可以有效的提升网络传输效率。Python标准库的...

Python之迭代器及其用法

前面章节中,已经对列表(list)、元组(tuple)、字典(dict)、集合(set)这些序列式容器做了详细的介绍。值得一提的是,这些序列式容器有一个共同的特性,它们都支持使用for循环遍历存储...

从初始化一个现代 python项目学习到的东西

uv我准备用uv初始化一个python项目环境我用的是苹果笔记本MacBookPro,具体的操作系统及硬件参数如下:...