使用Apache Superset在PostgreSQL中进行数据可视化
bigegpt 2025-02-03 11:28 5 浏览
寻找PostgreSQL的数据可视化工具?我们讨论了一些选项,并提供了一个关于PostgreSQL和Apache的逐步指南……
译自 Data Visualization in PostgreSQL With Apache Superset,作者 Team Timescale。
数据可视化将数据转换为图表等图形表示,以便更快地理解复杂信息。这有助于分析师和利益相关者识别趋势、异常值和模式,从而做出明智的决策并获得洞察。
对于使用PostgreSQL进行数据可视化,既有付费工具也有开源工具可用。在这篇博文中,我们将快速介绍其中一些工具,然后向您展示如何使用Apache Superset和PostgreSQL可视化数据。
想了解更多关于如何使用PostgreSQL/Timescale构建应用程序的信息?请务必查看以下文章——我们将带您从数据迁移到数据库监控(即将推出)。
如何将您的数据迁移到Timescale(三种方法) 使用PostgreSQL和psycopg3构建Python应用程序 附加:Psycopg2与Psycopg3性能基准测试
开源选项
- Metabase: 它具有简单的界面,允许非技术用户直接探索和查询数据,使其成为基本数据分析的理想选择。
- Grafana: 此数据可视化工具专注于可视化和监控时间序列数据(例如,服务器日志和基础设施指标)。它提供高级可视化、集成和插件,但不适用于传统的BI任务,例如临时查询。
- Apache Superset: 它提供与Tableau和Power BI等付费工具相当的功能,并支持数据探索、可视化和仪表板。此工具通过SQL编辑和用户定义的指标(基于Python)提供高度定制。
付费选项
- QlikView:这是一个强大的引擎,擅长处理大型数据集和复杂的分析,使用内存处理来提高速度。
- Power BI: 它具有用户友好的界面,可以与Microsoft产品无缝集成,并连接到各种数据源以方便分析。
- Tableau: 此数据可视化工具可帮助您创建令人惊叹且交互式的数据透视表,非常适合清晰地呈现数据洞察。
付费工具具有更广泛的功能集、更好的可扩展性和更多支持,但需要许可证,这可能成本很高。开源工具可免费使用和修改,但可能需要技术专业知识,并且在大规模部署方面存在局限性。
出于本文的目的,我们选择Apache Superset来可视化PostgreSQL中的数据,因为它是一个开源的、基于Python的、可扩展的平台,具有广泛的可视化功能。它包括一个用户友好的界面和一个SQL编辑器,使其成为技术和非技术用户都非常优秀的工具。要访问数据集,请访问Postgres-Superset-Example GitHub 仓库。
Apache Superset
Superset是一个快速且轻量级的开源BI平台,使用户可以轻松地探索数据,可以使用无代码可视化构建器(支持拖放)或SQL IDE。一些关键点包括:
- 由Apache软件基金会支持,并由Airbnb支持
- 支持40多种可视化,从简单的折线图到高度详细的地理空间图表
- 能够缓存仪表板可视化数据
- 提供具有非常详细设置(包括用户和角色权限)的管理面板
- 能够访问许多SQL和NoSQL数据库
- 简单友好的用户界面
Superset旨在处理任何大小的数据集,因为它作为数据库之上的一个薄层运行,数据库管理所有数据处理。平台的性能更多地取决于用户活动和用户数量,而不是数据大小。对于中等规模的用户群,8 GB RAM和2个vCPU的设置就足够了。
安装Apache Superset
安装基本库:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev python3.8-venv
我们将使用虚拟环境进行Superset安装,以避免与其他Python版本冲突。
您可以使用以下命令创建和激活虚拟环境:
python3 -m venv venv
source venv/bin/activate
一旦激活Python虚拟环境,安装或删除的任何Python包都将保留在该环境中,并且不会影响本地Python设置。要离开环境,您可以运行以下命令:
升级虚拟环境中的pip版本,这样就不会出现任何依赖项错误:
pip install --upgrade pip
首先安装apache-superset和其他支持库:
pip install apache-superset
pip install marshmallow
pip install Pillow
pip install psycopg2
设置FLASK_APP和SUPERSET_SECRET_KEY变量。Flask是一个轻量级的Python Web框架,用于Apache Superset Web服务器。
export FLASK_APP=superset
export SUPERSET_SECRET_KEY="mysecretkey"
创建一个管理员用户以访问Superset仪表板(使用admin作为用户名才能加载示例)。
superset fab create-admin
然后,您需要初始化数据库:
加载一些虚拟数据进行测试:
创建默认角色和权限:
此步骤之后,是时候初始化Web服务器了。对于开发用途,使用以下命令启动Superset:
superset run -p 8500 -h 0.0.0.0 --with-threads --reload --debugger
-p = port
-h = Binding host
-p = 端口 -h = 绑定主机
注意: 对于生产环境,请配置像Gunicorn、Nginx或Apache这样的Web服务器。请遵循在WSGI HTTP服务器上运行Superset中的指南。
使用管理员凭据访问Superset仪表板:
http://<PUBLICIP>:<PORT>
确保端口已打开并且您可以访问Web服务器。登录后,您可以看到以下主页:
创建PostgreSQL数据源
选择右上角的**+按钮,然后选择数据 → 连接数据库**。
选择PostgreSQL作为数据库。
提供数据库的凭据。
成功连接后,单击完成选项。
创建数据集
登录后,您将进入此主屏幕,您可以在其中创建仪表板、图表和数据集。第一步是创建一个数据集,我们为可视化提供表或视图。
单击**+ 数据集**按钮以创建数据集。
这将带您进入以下屏幕,您可以在其中选择用于可视化的对象。我们使用booking表进行可视化。选择后,选择创建数据集和创建图表按钮。
创建可视化
使用Superset资源管理器UI
现在,您可以根据数据点选择任何所需的图表。我们将根据我们的要求选择时间序列折线图。选择创建新图表按钮。
在此步骤中,我们现在可以对我们的bookings表进行切片和切块。
我们的要求是按月获取总预订量。查询如下所示:
select date_trunc('month', starttime) as month, count(*)
from bookings
group by month;
为此,我们可以在Superset上设置以下参数:
- 时间starttime时间粒度
- 指标字段包含要显示的列。在这里,我们可以提供一个聚合列,即COUNT(*)。
- 对于可视化选项,选择自定义选项卡。
选择创建/更新图表后,它将在PostgreSQL上运行查询并可视化最终结果,如下所示。
要保存此图表,请单击保存按钮,提供图表名称,然后创建一个新的仪表板。
单击保存并转到新仪表板按钮。
使用SQL查询
您还可以使用SQL查询创建仪表板:
单击SQL → SQL LAB。
确保选择正确的数据库和模式。
在这里,您可以直接运行查询。执行此查询后,它将提供创建图表选项。
选择创建图表以可视化最终结果。
这次,我们将选择饼图进行表示。要求是列出每个设施产生的总收入。
select facs.name, sum(slots * case
when bks.memid = 0 then facs.guestcost
else facs.membercost end) as revenue
from cd.bookings bks
inner join cd.facilities facs
on bks.facid = facs.facid
group by facs.name;
这里,维度字段(一个或多个用于分组的列)将设置为name,revenue是每个设施的度量。
注意: 即使我们有可用于查询的原始数据,Superset也需要聚合。解决方法是进行无意义的聚合,就像我们上面所做的那样,即SUM(Revenue)。您可以在Stack Overflow上了解更多信息,或访问此Apache Superset GitHub页面。
单击保存图表按钮,提供查询的详细信息,并将其保存到我们之前创建的Bookings仪表板。
单击保存并转到仪表板。
问题: 仪表板刷新策略是什么?用户可以手动刷新仪表板或设置自动刷新间隔。
此仪表板也可以通过单击共享按钮来共享,因为它会创建一个查看此仪表板的URL,该URL可以复制到剪贴板或通过电子邮件发送。
数据可视化的最佳实践
- 在开始可视化之前,请确保您的 数据干净且准确,可获得可靠的洞察。
- 选择能够体现数据重要性的可视化技术,根据受众的兴趣进行定制,并清晰地标记所有内容,以便于解读。简单为妙。
- 使用经过良好优化的 SQL 查询和索引可以减少大型数据集的可视化加载时间。
- 考虑缓存结果以提高常用可视化的性能。
- 根据用户反馈定期更新您的仪表板以适应新信息。
使用 Timescale 增强您的仪表板
如果您需要一个数据库来存储您的数据并增强您的仪表板,请尝试 Timescale,这是一个快速、易用且可靠的 PostgreSQL 云平台,适用于时间序列、事件和分析。
通过自动分区、有效的数据压缩(90% 或更多)和实时数据聚合,Timescale 将使您的查询速度飞快,使您能够构建一个稳定而快速的应用程序,永远不会让您的用户失望。想试试吗?创建 Timescale 帐户——30 天免费试用。
Superset 常见问题 (重要)
如果表模式更改了怎么办?
要让 Superset 发现您的新列,您只需转到数据 -> 数据集,单击已更改模式的数据集旁边的编辑图标,然后从列选项卡中点击从源同步列。幕后,新列将被合并。之后,您可能需要重新编辑表/图表,以配置“列”选项卡,选中相应的复选框,然后再次保存。
我可以一次连接/查询多个表吗?
在 Explore 或 Visualization UI 中不可以。Superset SQLAlchemy 数据源只能是单个表或视图。
处理表时,解决方案是创建一个包含分析所需所有字段的表,这很可能需要一些预定的批处理过程。
视图是一个简单的逻辑层,它将任意 SQL 查询抽象为虚拟表。这允许您连接和联合多个表,并使用任意 SQL 表达式应用一些转换。这里的限制是您的数据库性能,因为 Superset 将有效地在您的查询(视图)之上运行查询。一个好的做法可能是将自己限制为仅将主要的大表连接到一个或多个小表,并尽可能避免使用GROUP BY,因为 Superset 将执行自己的GROUP BY,并且两次执行此操作可能会降低性能。
无论您使用表还是视图,性能都取决于数据库向与 Superset 交互的用户提供结果的速度。
但是,如果您使用的是 SQL Lab,则没有此类限制。您可以编写 SQL 查询来连接多个表,只要您的数据库帐户有权访问这些表即可。
相关推荐
- 得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践
-
一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...
- warm-flow新春版:网关直连和流程图重构
-
本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...
- 扣子空间体验报告
-
在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...
- spider-flow:开源的可视化方式定义爬虫方案
-
spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...
- solon-flow 你好世界!
-
solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...
- 新一代开源爬虫平台:SpiderFlow
-
SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...
- 通过 SQL 训练机器学习模型的引擎
-
关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...
- 鼠须管输入法rime for Mac
-
鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...
- Go语言 1.20 版本正式发布:新版详细介绍
-
Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...
- iOS 10平台SpriteKit新特性之Tile Maps(上)
-
简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...
- 程序员简历例句—范例Java、Python、C++模板
-
个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...
- Telerik UI for iOS Q3 2015正式发布
-
近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...
- ios使用ijkplayer+nginx进行视频直播
-
上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...
- IOS技术分享|iOS快速生成开发文档(一)
-
前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...
- macOS下配置VS Code C++开发环境
-
本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- httperror403.14-forbidden (63)
- logstashinput (65)
- hadoop端口 (65)
- dockernetworkconnect (63)
- esxi7 (63)
- vue阻止冒泡 (67)
- c#for循环 (63)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- java大写转小写 (63)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)