赞
踩
superset(一)详细部署步骤(python 3.7.15、windows11)及验证异常处理
superset(二)基本使用详细示例以及superset权限控制介绍
本文简单的介绍了superset的基本使用步骤的示例,以及superset的权限控制。
本文部分数据来源于互联网。
本文分为2个部分,即通过基础示例介绍superset使用步骤以及简单介绍了superset的权限控制。
该示例是在本系列第一篇的基础上做的,所以仅仅说本文的基本部分,其他的不再赘述。
CREATE TABLE `dm_sales` ( `id` longtext, `date1` longtext, `channelid` longtext, `productid` longtext, `regionid` longtext, `amount` int(11) DEFAULT NULL, `price` double DEFAULT NULL, `channelname` longtext, `productname` longtext, `regionname` longtext ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `t_user` ( `id` tinytext, `name` tinytext, `age` int(11) DEFAULT NULL, `gender` int(11) DEFAULT NULL, `province` tinytext, `city` tinytext, `region` tinytext, `phone` tinytext, `birthday` tinytext, `hobby` tinytext, `register_date` tinytext ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `dm_sales`(`id`,`date1`,`channelid`,`productid`,`regionid`,`amount`,`price`,`channelname`,`productname`,`regionname`) values ('0001','2019-02-01','01','01','010',1,3400,'商场','meta20','北京'),('0002','2019-02-01','02','02','021',2,6800,'京东','p30','上海'),('0003','2019-02-01','01','01','010',1,3400,'商场','meta20','北京'),('0004','2019-02-01','01','02','021',1,3400,'商场','p30','上海'),('0005','2019-02-01','02','01','010',1,3400,'京东','meta20','北京'),('0006','2019-02-01','01','01','021',2,6800,'商场','meta20','上海'),('0007','2019-02-01','03','02','010',1,3400,'天猫','p30','北京'),('0008','2019-02-01','01','01','021',1,3400,'商场','meta20','上海'),('0009','2019-02-01','01','03','010',1,3400,'商场','ihpone Xs','北京'),('0010','2019-02-01','02','01','021',3,10200,'京东','meta20','上海'),('0011','2019-02-01','01','04','010',1,3400,'商场','小米 9','北京'),('0012','2019-02-01','03','01','021',1,3400,'天猫','meta20','上海'),('0013','2019-02-01','01','04','010',1,3400,'商场','小米 9','北京'),('0014','2019-02-02','01','01','010',1,3400,'商场','meta20','北京'),('0015','2019-02-02','02','02','021',2,6800,'京东','p30','上海'),('0016','2019-02-02','01','01','010',1,3400,'商场','meta20','北京'),('0017','2019-02-02','01','02','021',1,3400,'商场','p30','上海'),('0018','2019-02-02','02','01','010',1,3400,'京东','meta20','北京'),('0019','2019-02-02','01','01','021',2,6800,'商场','meta20','上海'),('0020','2019-02-02','03','02','010',1,3400,'天猫','p30','北京'),('0021','2019-02-02','01','01','021',1,3400,'商场','meta20','上海'),('0022','2019-02-02','01','03','010',1,3400,'商场','ihpone Xs','北京'),('0023','2019-02-02','02','01','021',3,10200,'京东','meta20','上海'),('0024','2019-02-02','01','04','010',1,3400,'商场','小米 9','北京'),('0025','2019-02-02','03','01','021',1,3400,'天猫','meta20','上海'),('0026','2019-02-02','01','04','010',1,3400,'商场','小米 9','北京'),('0001','2019-02-01','01','01','010',1,3400,'商场','meta20','北京'),('0002','2019-02-01','02','02','021',2,6800,'京东','p30','上海'),('0003','2019-02-01','01','01','010',1,3400,'商场','meta20','北京'),('0004','2019-02-01','01','02','021',1,3400,'商场','p30','上海'),('0005','2019-02-01','02','01','010',1,3400,'京东','meta20','北京'),('0006','2019-02-01','01','01','021',2,6800,'商场','meta20','上海'),('0007','2019-02-01','03','02','010',1,3400,'天猫','p30','北京'),('0008','2019-02-01','01','01','021',1,3400,'商场','meta20','上海'),('0009','2019-02-01','01','03','010',1,3400,'商场','ihpone Xs','北京'),('0010','2019-02-01','02','01','021',3,10200,'京东','meta20','上海'),('0011','2019-02-01','01','04','010',1,3400,'商场','小米 9','北京'),('0012','2019-02-01','03','01','021',1,3400,'天猫','meta20','上海'),('0013','2019-02-01','01','04','010',1,3400,'商场','小米 9','北京'),('0014','2019-02-02','01','01','010',1,3400,'商场','meta20','北京'),('0015','2019-02-02','02','02','021',2,6800,'京东','p30','上海'),('0016','2019-02-02','01','01','010',1,3400,'商场','meta20','北京'),('0017','2019-02-02','01','02','021',1,3400,'商场','p30','上海'),('0018','2019-02-02','02','01','010',1,3400,'京东','meta20','北京'),('0019','2019-02-02','01','01','021',2,6800,'商场','meta20','上海'),('0020','2019-02-02','03','02','010',1,3400,'天猫','p30','北京'),('0021','2019-02-02','01','01','021',1,3400,'商场','meta20','上海'),('0022','2019-02-02','01','03','010',1,3400,'商场','ihpone Xs','北京'),('0023','2019-02-02','02','01','021',3,10200,'京东','meta20','上海'),('0024','2019-02-02','01','04','010',1,3400,'商场','小米 9','北京'),('0025','2019-02-02','03','01','021',1,3400,'天猫','meta20','上海'),('0026','2019-02-02','01','04','010',1,3400,'商场','小米 9','北京'),('0001','2019-02-01','01','01','010',1,3400,'商场','meta20','北京'),('0002','2019-02-01','02','02','021',2,6800,'京东','p30','上海'),('0003','2019-02-01','01','01','010',1,3400,'商场','meta20','北京'),('0004','2019-02-01','01','02','021',1,3400,'商场','p30','上海'),('0005','2019-02-01','02','01','010',1,3400,'京东','meta20','北京'),('0006','2019-02-01','01','01','021',2,6800,'商场','meta20','上海'),('0007','2019-02-01','03','02','010',1,3400,'天猫','p30','北京'),('0008','2019-02-01','01','01','021',1,3400,'商场','meta20','上海'),('0009','2019-02-01','01','03','010',1,3400,'商场','ihpone Xs','北京'),('0010','2019-02-01','02','01','021',3,10200,'京东','meta20','上海'),('0011','2019-02-01','01','04','010',1,3400,'商场','小米 9','北京'),('0012','2019-02-01','03','01','021',1,3400,'天猫','meta20','上海'),('0013','2019-02-01','01','04','010',1,3400,'商场','小米 9','北京'),('0014','2019-02-02','01','01','010',1,3400,'商场','meta20','郑州'),('0015','2019-02-02','02','02','021',2,6800,'京东','p30','上海'),('0016','2019-02-02','01','01','010',1,3400,'商场','meta20','北京'),('0017','2019-02-02','01','02','021',1,3400,'商场','p30','上海'),('0018','2019-02-02','02','01','010',1,3400,'京东','meta20','北京'),('0019','2019-02-02','01','01','021',2,6800,'商场','meta20','上海'),('0020','2019-02-02','03','02','010',1,3400,'天猫','p30','北京'),('0021','2019-02-02','01','01','021',1,3400,'商场','meta20','上海'),('0022','2019-02-02','01','03','010',1,3400,'商场','ihpone Xs','北京'),('0023','2019-02-02','02','01','021',3,10200,'京东','meta20','上海'),('0024','2019-02-02','01','04','010',1,3400,'商场','小米 9','北京'),('0025','2019-02-02','03','01','021',1,3400,'天猫','meta20','上海'),('0026','2019-02-02','01','04','010',1,3400,'商场','小米 9','北京'),('0027','2019-02-03','01','04','010',1,61400,'商场','小米 9','北京'),('0028','2019-02-04','02','04','010',1,68400,'商场','小米 9','北京'),('0028','2019-02-05','03','04','010',1,71400,'商场','小米 9','杭州'),('0029','2019-02-06','01','04','010',1,81400,'商场','小米 9','上海'),('0030','2019-02-07','02','04','010',1,93410,'商场','小米 9','深圳'),('0031','2019-02-08','02','04','010',1,113410,'商场','小米 9','深圳'),('0032','2019-02-09','01','04','010',1,53410,'商场','小米 9','沭阳'),('0033','2019-02-10','01','04','010',1,53410,'商场','小米 9','南通'); insert into `t_user`(`id`,`name`,`age`,`gender`,`province`,`city`,`region`,`phone`,`birthday`,`hobby`,`register_date`) values ('392456197008193000','张三',20,0,'北京市','昌平区','回龙观','18589407692','1970-08-19','美食;篮球;足球','2018-08-06 09:44:43'),('267456198006210000','李四',25,1,'河南省','郑州市','郑东新区','18681109672','1980-06-21','音乐;阅读;旅游','2017-04-07 09:14:13'),('892456199007203000','王五',24,1,'湖北省','武汉市','汉阳区','18798009102','1990-07-20','写代码;读代码;算法','2016-06-08 07:34:23'),('492456198712198000','赵六',26,2,'陕西省','西安市','莲湖区','18189189195','1987-12-19','购物;旅游','2016-01-09 19:15:53');
-- 1、根据日期统计,每日订单总额(趋势图) select str_to_date(date1,'%Y-%m-%d') date1, sum(price) total_price from dm_sales group by date1; -- 2、根据日期、渠道统计订单总额(Sunburst Chart) select date1, channelname, sum(price) total_price from dm_sales group by date1, channelname -- 3、根据日期、区域统计订单总额(数据透视表) select str_to_date(date1,'%Y-%m-%d') date1, regionname, sum(amount) as total_amount, sum(price) as total_price from dm_sales group by date1, regionname -- 4、根据日期、区域、渠道、产品统计订单数、订单总额(层级环图) select date1, regionname, channelname, productname, sum(price) as total_price from dm_sales group by date1, regionname, channelname, productname
# 如果出现 TypeError: Cannot interpret '<attribute 'dtype' of 'numpy.generic' objects>' as a data type 异常,则需要执行命令
pip install -U numpy
pip install -U pandas
如果需要调整其位置,则直接编辑dashborad即可。
#跨域问题解决WTF_CSRF_ENABLED将默认的TRUE改为FALSE
C:\Users\chenw\anaconda3\envs\superset_demo\Lib\site-packages\superset\config.py
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = False
#系统重启
下面是嵌入一个dashboard,嵌入其他的图表操作方式一样
<html>
<head>
<title>dashboard</title>
</head>
<body>
<div class="dashboard">
<iframe name="myframe" src="http://127.0.0.1:8088/superset/dashboard/dashboarddemo/" frameborder="0" scrolling="auto" width="100%" height="100%" onload="document.all['myframe'].style.height=myframe.document.body.scrollHeight" ></iframe>
</div>
</body>
</html>
Superset初始化权限之后,创建5个角色,分别为Admin,Alpha,Gamma,sql_lab以及Public。
Admin,Alpha和Gamma角色,分配了很多的菜单/视图权限,如果手工去修改,改错的可能性很大,加之Superset并没有说明每一项权限的完整文档,所以不建议去修改这些角色的定义。灵活使用预置的角色,可以快速满足业务上安全控制需求。
所有用户都能访问某一个看板,需要进行如下设置 :
1、更改config.py文件,设置如下部分,PUBLIC_ROLE_LIKE_GAMMA = True
vim C:\Users\chenw\anaconda3\envs\superset_demo\Lib\site-packages\superset\config.py
PUBLIC_ROLE_LIKE_GAMMA = True
2、需要运行superset init命令,这个命令会给“Public”角色设置与“Gamma”一样的权限
# 在目录下C:\Users\chenw\anaconda3\envs\superset_demo\Lib\site-packages\superset\bin
# 执行:python superset init
# 重启
(superset_demo) C:\Users\chenw\anaconda3\envs\superset_demo\Lib\site-packages\superset\bin>python superset run -p 8088 --with-threads --reload --debugger
3、将匿名用户所需要访问的数据库和数据源分配给“Public”角色。例如,基于superset_demo数据库的grade_test创建了看板,如果匿名用户需要查看这个看板,那将如下权限分配给“Public”。
all database access on all_database_access
all datasource access on all_datasource_access
至此可以访问,不再要求进行登录。
“Gamma”拥有大部分基础的权限,但是必须结合其他能访问数据源的角色才能访问数据。所以,可以给用户分配“Gamma”角色和针对部门分别创建的数据源角色来进行控制。
例如,针对财务用户,创建角色“Finance”,将成本,应收,应付的数据表权限赋予这个角色,财务用户就分配“Gamma”和“Finance”。
针对供应链用户,创建角色“SCM”,将库存和发货数据表权限赋予这个角色,供应链用户就配“Gamma”和“SCM”。
如果是公司的高级管理,需要看所有的看板,就可以给霸道总裁赋予“Gamma”和“Finance”,“SCM”角色。
创建2个角色,分别是main角色可以查看访问main的数据,
examples角色可以查看和访问 examples 数据源。
database access on [main] 拥有访问 main 数据库的权限
datasource access on [main] 拥有访问main 数据源的权限
can dashboard on Superset 拥有访问 main 数据源创建的 dashboard的权限
database access on [examples] 拥有访问 examples数据库的权限
datasource access on [examples] 拥有访问examples数据源的权限
can dashboard on Superset 拥有访问 examples数据源创建的 dashboard的权限
main_user: 关联gamma、sqllab与main角色
examples_user: 关联gamma、sqllab与examples角色
用不同的用户登录查看每个用户具有的table,以及能查看到的dashboard
以上,简单的介绍了superset的基本使用步骤的示例,以及superset的权限控制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。