当前位置:   article > 正文

superset(二)基本使用详细示例以及superset权限控制介绍_superset(二)基本使用详细示例以及superset权限控制介绍

superset(二)基本使用详细示例以及superset权限控制介绍

Superset 系列文章

superset(一)详细部署步骤(python 3.7.15、windows11)及验证异常处理
superset(二)基本使用详细示例以及superset权限控制介绍



本文简单的介绍了superset的基本使用步骤的示例,以及superset的权限控制
本文部分数据来源于互联网。
本文分为2个部分,即通过基础示例介绍superset使用步骤以及简单介绍了superset的权限控制。

一、基本示例

该示例是在本系列第一篇的基础上做的,所以仅仅说本文的基本部分,其他的不再赘述。

1、准备数据

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

2、创建数据链接

在这里插入图片描述

3、编写sql查询

-- 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  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

在这里插入图片描述

4、创建图表

# 如果出现 TypeError: Cannot interpret '<attribute 'dtype' of 'numpy.generic' objects>' as a data type 异常,则需要执行命令
pip install -U numpy
pip install -U pandas
  • 1
  • 2
  • 3

1)、根据日期统计,每日订单总额(趋势图)

在这里插入图片描述
在这里插入图片描述

2)、根据日期、渠道统计订单总额(Sunburst Chart)

在这里插入图片描述

3)、根据日期、区域统计订单总额(数据透视表)

在这里插入图片描述

4)、根据日期、区域、渠道、产品统计订单数、订单总额(Sunburst Chart层级环图)

在这里插入图片描述

5、创建看板

1)、创建看板

在这里插入图片描述
在这里插入图片描述

2)、在图表中选择需要加入看板的图表

在这里插入图片描述

3)、调整图表在看板中的位置

在这里插入图片描述
如果需要调整其位置,则直接编辑dashborad即可。

6、7、嵌入html发布

#跨域问题解决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
#系统重启
  • 1
  • 2
  • 3
  • 4
  • 5

下面是嵌入一个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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

二、权限控制介绍

1、权限控制

Superset初始化权限之后,创建5个角色,分别为Admin,Alpha,Gamma,sql_lab以及Public。
Admin,Alpha和Gamma角色,分配了很多的菜单/视图权限,如果手工去修改,改错的可能性很大,加之Superset并没有说明每一项权限的完整文档,所以不建议去修改这些角色的定义。灵活使用预置的角色,可以快速满足业务上安全控制需求。

1)、角色权限介绍

  • Admin:拥有所有权限
  • Alpha:能访问所有数据源,增加或者更改数据源,但不能给更改其他用户权限。
  • Gamma:必须结合其他能访问数据源的角色才能访问数据。这个角色所能访问的切片和看板,也是基于能访问数据源所创建的切片和看板。
  • sql_lab:能访问SQL Lab菜单。
  • Public:默认没有任何权限

2)、匿名访问

所有用户都能访问某一个看板,需要进行如下设置 :
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
  • 1
  • 2

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
  • 1
  • 2
  • 3
  • 4

3、将匿名用户所需要访问的数据库和数据源分配给“Public”角色。例如,基于superset_demo数据库的grade_test创建了看板,如果匿名用户需要查看这个看板,那将如下权限分配给“Public”。

all database access on all_database_access
all datasource access on all_datasource_access
  • 1
  • 2

至此可以访问,不再要求进行登录。
在这里插入图片描述

2、用户、角色示例

1)、角色介绍

“Gamma”拥有大部分基础的权限,但是必须结合其他能访问数据源的角色才能访问数据。所以,可以给用户分配“Gamma”角色和针对部门分别创建的数据源角色来进行控制。

例如,针对财务用户,创建角色“Finance”,将成本,应收,应付的数据表权限赋予这个角色,财务用户就分配“Gamma”和“Finance”。
针对供应链用户,创建角色“SCM”,将库存和发货数据表权限赋予这个角色,供应链用户就配“Gamma”和“SCM”。
如果是公司的高级管理,需要看所有的看板,就可以给霸道总裁赋予“Gamma”和“Finance”,“SCM”角色。
在这里插入图片描述
创建2个角色,分别是main角色可以查看访问main的数据,
examples角色可以查看和访问 examples 数据源。

2)、创建 main 角色

database access on [main] 拥有访问 main 数据库的权限
datasource access on [main] 拥有访问main 数据源的权限
can dashboard on Superset 拥有访问 main 数据源创建的 dashboard的权限
在这里插入图片描述

3)、创建examples角色

database access on [examples] 拥有访问 examples数据库的权限
datasource access on [examples] 拥有访问examples数据源的权限
can dashboard on Superset 拥有访问 examples数据源创建的 dashboard的权限
在这里插入图片描述

4)、创建用户

main_user: 关联gamma、sqllab与main角色
在这里插入图片描述
examples_user: 关联gamma、sqllab与examples角色
在这里插入图片描述
用不同的用户登录查看每个用户具有的table,以及能查看到的dashboard

以上,简单的介绍了superset的基本使用步骤的示例,以及superset的权限控制。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/542472
推荐阅读
相关标签
  

闽ICP备14008679号