传统的企业信息化,一般分为三个发展阶段: 手工-》系统化(电子化),系统化-》跨系统集成整合(消除信息孤岛,形成一个整体),集成整合-》决策支持(面向中高层领导进行数据分析), 即可称商务智能或商业智能领域(简称BI)。商业BI工具或平台已发展很多年了,各相关功能都比较完善,比如 Power BI、Tableau、DataV、FineReport、FineBI等,但这些商业BI工具或平台都是收费的,如果使用则需要购买许可,对于中小型企业来说是一笔高昂的成本费用,使用起来门槛也较高,一般需要专业的IT人员进行开发,开发测试上线再交付用户进行使用,这样周期长成本较高。
那有没有一个功能相对比较完善的开源免费的BI工具或平台呢?开源可视化分析工具如: Bokeh、Matplotlib、Metabase、Superset等首先是无软件成本的,其次还要考虑它们的便捷性。 本文就给大家介绍一个开源免费高颜值的轻量级BI平台:Superset,虽然它成熟度不如商业可视化工具,但是胜在无软件成本且有一定的灵活性,不限用户数且可进行二次开发,可以满足企业绝大多数的应用场景。 目前它在apache评分已超过42.6k, 可见非常流行和热门。
那什么是Superset呢? Superset是Airbnb(知名在线房屋短租公司)开源的数据探查与可视化平台(曾用名Panoramix、Caravel),该工具在可视化、易用性和交互性上非常有特色,用户可以轻松对数据进行可视化分析。 Superset 也是一款企业级商业智能 Web 应用程序。Superset已捐赠给Apache软件基金会,还处于孵化阶段。 Superset第一个版本为0.20,是基于python 2基础上构建,目前最新稳定版本为1.3.2,是基于python 3构建的,发行测试版本为1.4RC,Superset官网地址:https://superset.apache.org/ ,如下图:
Superset官网地址
Apache Superset 主要功能如下:
1.丰富的数据可视化集
2.易于使用的界面,用于探索和可视化数据
3.创建和共享仪表板
4.与主要身份验证提供程序(数据库,OpenID,LDAP,通过 Flask AppBuilder 的 OAuth 和 REMOTE_USER)集成的企业级身份验证
5.一种可扩展的,高粒度的安全/权限模型,对于可以访问个人特征和数据集的用户允许使用复杂的规则
6.一个简单的语义层,允许用户通过定义哪些字段应显示在哪个下拉列表以及哪些聚合和功能度量标准可供用户使用来控制数据源在 UI 中的显示方式
7.通过 SQLAlchemy 与大多数 SQL 的 RDBMS 集成
Superset有很多优点,比如:它自带SQLite数据库并支持连接Hive、Impala、MySql、Postgresql、SqlServer、Oracle等几乎所有主流的数据源;支持和弦图、事件流图、热力图、视图表等及其它常规的可视化展示图表;支持可控的数据展示,能自定义展示字段、数据源等;支持权限控制,以满足不同使用人员对数据和数据库的权限要求;同时内含SQL查询面板模块、具有较美观友好的操作界面等。
Superset是一款自助式的BI工具,可利用于探索式的日常数据分析中,它能够对接常用的大数据分析工具、能够连接主流数据库或直接上传CSV数据文件,内含多类型展示图表样式,使用者通过自定义图表或dashboard可以直观地发现、分析、预警数据中所隐藏的问题,及时应对业务中的风险或发现增长点。
Superset也可利用于数据可视化成果共享,实现团队协同,使用者可将制作好的图表或发布的dashboard可见于团队成员,并通过权限配置控制团队成员对它们的可编辑性,各成员可发挥各自的想法,实现迭代化更新。
另外, Superset具有"SQL Lab"模块,可作为一个数据库管理工具,SQL查询面板可以对已连接的数据源进行数据查询,对数据源进行配置选择后也可实现数据库表的创建、修改和删除,通过该设置可避免对重要数据源的误改、误删。
SQLite是Superset默认自带的数据库,如果需要访问其他类型的数据,则需要安装对应的数据库驱动,绝大多数主流数据库都支持,比如clickhouse、sap hana等,具体如下图:
各主流数据库驱动清单
Superset的demo的一些看板和图表的效果,具体如下图:
主界面
demo 看板一
demo 看板二
demo 看板三
demo 图表一
demo 图表二
demo 图表三
Superset优点很多,但也一些不足之处,如不支持图表的下钻功能、不支持多图表间的复杂联动、处理大数据集效率较低等。对于不足之处,相信后续官方发布的新版本功能会不断优化完善的,也可以自行进行二次开发完善。Superset只是一款轻量级的BI应用,复杂的数据关联可以在ETL过程中完成,而Superset读取最终的结果表即可,另外它完全可以支撑起TB级大数据的数据源读取。总而言之,对于个人开发者和中小型团队来说,若要选择一个无需软件成本且方便高效的自助式数据分析工具,Superset是个不错的选择。
更多技术沟通交流,可关注我的微信号:odoodev
长按图片扫描二维码
也可以关注我的今日头条号:
长按图片扫描二维码
如果您喜欢这篇文章,请关注我,收藏、点赞、评论和转发,会让更多需要帮助的人看到这篇文章。举手之劳,善莫大焉!
Original: https://www.cnblogs.com/nbpowerboy/p/15719193.html
Author: 软件人生
Title: 一个开源免费高颜值的轻量级商业智能BI平台Superset 介绍
相关阅读1
Title: 12个Python自动化办公的官方文档,中文版只有2个?
大家好,这里是Python程序员晚枫。
之前给大家分享过Python自动化办公的资源汇总。
最近在 知识星球:Python读者圈收到一个提问:
python处理excel的第三方库,有没有中文文档?
尽我所能地整理了一份资料,分享给大家。
一、中文版:自动化办公的文档
1、综合
①python-office
Python-office 是一个 Python 自动化办公第三方库,能解决大部分自动化办公的问题。而且每个功能只需一行代码,不需要小白用户学习 Python 知识,做到了真正的开箱即用。
官网: https://www.python-office.com/
2、Excel
① pandas
pandas通过对Excel文件的读写实现数据输入输出
官网: https://www.pypandas.cn/
二、英文版:自动化办公的文档
1、Excel
① xlrd
xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。
官网: http://xlrd.readthedocs.io/en/latest/
② xlwt
xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(如.xls)。
官网: https://xlwt.readthedocs.io/en/latest/
③ xlutils
xlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。
官网: http://xlutils.readthedocs.io/en/latest/
④ xlwings
xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。
官网: http://docs.xlwings.org/en/stable/index.html
都看到这里了,还不点个赞?
⑤ openpyxl
openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
官网: https://openpyxl.readthedocs.io/en/stable/
⑥ xlsxwriter
xlsxwriter是一个用于创建Excel .xlsx文件的库。
官网: https://xlsxwriter.readthedocs.io/
⑦ DataNitro
DataNitro是一个内嵌在Excel中的插件。
官网: https://datanitro.com/docs/
2、Word
① python-docx
无可替代,目前python处理Word的库,只有这一个。
3、PDF
① PyMuPDF
处理PDF的文档,以前我会推荐其它库,但今年开始,我重点推荐的是pymupdf,这个库的功能非常强大。
官网: https://pymupdf.readthedocs.io/en/latest/
4、PPT
① python-pptx
官网: https://python-pptx.readthedocs.io/en/latest/
三、写在最后
虽然这个问题的主要内容是:有哪些自动化办公的中文文档,但我经过检索以后,发现的确是寥寥无几。
如果你有发现更多,欢迎在评论区补充。
与此同时,我也要感叹一句:在英文的编程世界里,中文寸步难行。
十四五提出大力发展国产开源生态,也涌现出了一批国产编程语言,大家也可以探索一下 第三方库👉pip install python-office,希望大家参与到项目的开发中:
- ⭐GitHub:https://github.com/CoderWanFeng/python-office
- 🏠Gitee:https://gitee.com/CoderWanFeng/python-office
Original: https://blog.51cto.com/u_15493782/5611350
Author: Python自动化办公社区
Title: 12个Python自动化办公的官方文档,中文版只有2个?
相关阅读2
Title: 593. 有效的正方形 改善丑陋的代码
给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true 。 点的坐标 pi 表示为 [xi, yi] 。输入 不是 按任何顺序给出的。 一个 有效的正方形 有四条等边和四个等角(90度角)。
解: 题目比较简单,按照定义去判断。 我这里的思路是找到点p1的对角点,然后判断四条边相等(两组对面分别相等的四边形是平行四边形),并且有直角三角形(有直角的,并且四条边相等的平行四边形是正方形)。
最开始的版本,非常长,并且很丑:
from typing import List
class Solution:
@staticmethod
def distance2(p1, p2):
return (p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2
def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) -> bool:
p_list = [p1,p2,p3,p4]
sorted_p_list = sorted(p_list)
if sorted_p_list[0] == sorted_p_list[1] or sorted_p_list[2] == sorted_p_list[3]:
return False
distance2s = [ self.distance2(p1, point) for point in p_list ]
# 找四条等边
fourEqualEdge = False
fourEqualAngle = False
for point in p_list:
if point == p1 :
continue
if self.distance2(p1, point) == max(distance2s):
# point 是对点
other_points =
distance2s_p2 = [self.distance2(p, point) for p in other_points]
distance2s_p1 = [self.distance2(p, p1) for p in other_points]
edges = distance2s_p1
edges.extend(distance2s_p2)
#print(f"edges={edges}")
if all( x == edges[0] for x in edges):
fourEqualEdge = True
if 2*edges[0] == max(distance2s):
fourEqualAngle = True
return fourEqualEdge and fourEqualAngle
进行了一些修改: 规范了函数名称和变量名称; 去掉了无用的变量:p_list,fourEqualEdge,fourEqualAngle; 使用any()和all() 代替循环。 代码看起来简洁了很多:
from typing import List
class Solution:
@staticmethod
def distance(point1, point2):
"""point1和point2距离的平方"""
return (point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2
def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) -> bool:
sorted_p_list = sorted([p1, p2, p3, p4])
# 如果有重复的点,则返回False
if any(sorted_p_list[i]==sorted_p_list[i+1] for i in range(3)) :
return False
max_distance = max([self.distance(p1, point) for point in sorted_p_list])
for point in sorted_p_list:
if self.distance(p1, point) == max_distance:
# point 是对角点
other_points =
distance2s_p2 = [self.distance(p, point) for p in other_points]
distance2s_p1 = [self.distance(p, p1) for p in other_points]
distance2s_p1.extend(distance2s_p2)
edges = distance2s_p1
if all(x == edges[0] for x in edges) and 2 * edges[0] == max_distance:
return True
return False
Original: https://blog.51cto.com/pigeon/5527384
Author: 一只大鸽子
Title: 593. 有效的正方形 改善丑陋的代码
相关阅读3
Title: Python语言7大就业方向,转行人该如何选择?
推荐文章
2023年,摸鱼计划系列活动又跟大家见面了,我们活动规则不变,福利升级! 新的一年,继续把工作学习中的bug处理、碎片知识,统统记录到博客里。留下自己在技术之路的成长足迹。
推荐原创51CTO博客12天前10000+阅读11点赞722评论1收藏
本周精彩博客回顾来啦~
推荐原创51CTO博客9天前10000+阅读2点赞评论收藏
想要在团队中处理代码时有效协作并跟踪更改,版本控制发挥着至关重要的作用。Git是一个版本控制系统,可以帮助开发人员跟踪修订、识别文件版本,并在必要的时候恢复旧版本。Git对于有一定编程经验的用户来说虽然不算太难,但是想要玩转一些高级功能也并不是件容易的事情。在这篇文章中,我将向你展示一些最实用的Git命令,手把手教你成为Git专家。 1.gitconfiggitconfig是你需要熟知的
原创SEAL安全1小时前144阅读点赞评论收藏
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者| 慕课网精英讲师 JdreamZhang在计算机科学与技术领域中,分治法(Divide and Conquer) 是一种常见的算法思想。分治法的理解其实很简单,直接按照字面的意思理解就可以:"分而治之"。分(divide)是将一个大的问题分解成一些小的问题分别求解,治 (conquer)则是将分解的问题答案合并
原创imooc慕课君1小时前136阅读点赞评论收藏
匿名页面的缺页异常
原创luteresa1小时前135阅读点赞评论收藏
Spring-boot-route(十三)整合RabbitMQ
原创HI王小呆1小时前128阅读点赞评论收藏
@TOC1. 初始化列表1. 概念以一个冒号开始,接着是一个以逗号分隔的1数据成员列表,每个成员变量后面跟一个放在括号的初始值或表达式,即成员变量定义的地方2. 用法#include
原创萌新的日常1小时前129阅读点赞评论收藏
JAVA项目中如何实现接口调用?Httpclient Httpclient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持Http协议的客户端编程工具包,并且它支持HTTP协议最新版本和建议。HttpClient相比传统JDK自带的URL Connection,提升了易用性和灵活性,是客户端发送HTTP请求变得容易,提高了开发的效率。Okhttp 一个
原创Seattle小小瓜1小时前140阅读点赞1评论收藏
大家好,我是 CoderBin,本文将带着大家从零实现一个Mini-Vue系统。完成之后应该对vue整体的底层实现有一定的清晰,希望对你有所帮助,谢谢。
原创CoderBin1小时前143阅读点赞评论收藏
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:花家舍文章来源:GreatSQL社区原创前文回顾实现一个简单的Database系列(https://greatsql.cn/search.php?mod=blog&searchid=8&searchsubmit=yes&kw=%E5%AE%9E%E7
原创GreatSQL社区1小时前148阅读点赞评论收藏
Spring-boot-route(十一)数据库配置信息加密+(十二)整合redis做为缓存
原创HI王小呆1小时前142阅读点赞评论收藏
每日一刷之leetcode-day13
原创bug菌1小时前129阅读点赞评论收藏
1、使用echo "密码" | (管道符)使用场景: sudo 命令在使用普通用户执行 root 命令时有时候会需要输入密码,并且在输入密码后一段时间不需要再次输入(但是不影响),这时候可以使用echo "密码" | sudo 命令比如我需要一键清空服务器,则可以创建一个clear.sh文件(假使我的密码是 123456):echo "123456" | sudo rm -rf /*那么在执行的时
原创哭泣的馒头1小时前134阅读点赞评论收藏
1、while循环function while_read_LINE(){ while read LINE do echo $LINE done < $FILENAME}2、重定向法;管道法function While_read_LINE(){ cat $FILENAME | while read LINE do echo $LINE done}3、文件描述符法这种方
原创哭泣的馒头1小时前132阅读点赞评论收藏
微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这个新东西,这篇我将讲解如何解决这个内存限制,要看关键的可以直接跳到第6步,只需要替换4个字节就可以解决这个限制。1.首先按照微软的给出的步骤安装和配置https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup
原创雍州无名1小时前128阅读点赞评论收藏
本文将介绍TiDB数据库中的SQL的执行流程
原创wux_labs1小时前129阅读点赞评论收藏
背景在了解宏任务的时候了解到requestAnimationFrame,cancelAnimationFrame,然后做了实践。方法requestAnimationFrame(callback) 即屏幕刷新率,执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画,回调函数执行次数通常是每秒60次。cancelAnimationFrame 取消一个先前通过调用window.reque
原创不叫猫先生2小时前130阅读点赞评论收藏
本篇文章我们将进一步探讨下Guava Cache 实现层面的一些逻辑与设计策略,让我们可以对Guava Cache整体有个更加明朗的认识,促进实际使用中对其的理解。
原创架构悟道2小时前134阅读点赞评论收藏
MongoDB数据库实战系列,打造精品专栏。
原创哪吒编程3小时前182阅读点赞评论收藏
@toc1、简介1.1Ubuntuhttps://ubuntu.com/download/desktop(https://ubuntu.com/download/desktop)!在这里插入图片描述(https://s2.51cto.com/images/blog/202302/13061650_63e9655287b2c79548.png?xossprocess=image/watermark,
原创爱看书的小沐4小时前168阅读点赞评论收藏
这一讲,我们用ERC721的接口合约为例介绍solidity中的抽象合约(abstract)和接口(interface),帮助大家更好的理解ERC721标准。抽象合约如果一个智能合约里至少有一个未实现的函数,即某个函数缺少主体{}中的内容,则必须将该合约标为abstract,不然编译会报错;另外,未实现的函数需要加virtual,以便子合约重写。拿我们之前的第十讲:插入排序合约为例,如果我们还没想
原创sleep6666小时前227阅读点赞评论收藏
Original: https://blog.51cto.com/u_15052541/5611352
Author: 老男孩IT教育
Title: Python语言7大就业方向,转行人该如何选择?