Superset1.3.2部分配置教程

注意:superset官方文档说明不支持Windows系统,我开始使用Windows,后面在配置缩略图有错误。

OS:Ubuntu20.04
Superset:1.3.2

这是我在安装中遇到的问题及查询搜集的资料,一些问题的解决办法可能不适合你,但希望还是能够帮到需要的人。

一、安装注意事项

下面是一些我在安装过程中总结的一些需要注意的:

pip install Pillow -i https://pypi.douban.com/simple
# 如果不安装xlrd,页面数据列不会出现 上传Excel
pip install xlrd
# 如果不安装mysqlclient,连接MySQL会报错,我之前改数据源为MySQL时就因为这个,排了很长时间的错
pip install mysqlclient
pip install pymysql

# 建议正式安装之前先配置config.py,改变数据源为MySQL,现在的默认源sqlite后续官方将会舍弃
SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@localhost/superset_meta?charset=utf8'

superset load_examples执行报错

对于安装过程中的superset load_examples提示提示urllib.error.HTTPError: HTTP Error 429: too many requests的错误:
这是我在网上找的的办法:

  • 1.从github上面搜索superset/examples_data下载文件集 examples-data-master.zip
  • 2.创建文件夹,什么名字都行,比如我这里叫做example
    然后把上面的 examples-data-master.zip 放入文件夹,注意!一定要解压
  • 3.打开终端之后,切换到刚才创建的文件夹目录
  • 4.用python将此文件夹变成共享文件夹
    好像要把它的权限改成这样的

在上面第三步的终端里面输入 python -m http.server

  • 5.另外开一个终端,输入 ipconfig,Ubuntu是ifconfig,找到 IPv4 Address 对应的地址,比如
    192.168.157.72
  • 6.可以尝试直接在浏览器输入 192.168.157.72:8000 ,就会出现
  • 7.找到superset中helper.py
    我的目录是 ~/桌面/superset_venv/lib/python3.9/site-packages/superset/examples/helper.py

  • 8.修改读取url地址为刚才我们本地的地址

    BASE_URL = "http://192.168.140.72:8000/"
    
  • 9.重新运行 superset load_examples即可。

    这是我根据之前在Windows上改的,应该差不多。

二、部分配置说明

注意:此为网上搜索整理

# 通过Flask-WTF来保护表单免受CSRF攻击
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True

ENABLE_PROXY_FIX = True  # 当superset是运行在load balancer(nginx 或者ELB)中, 需要告诉gunicorn有哪些 X-Forwarded-* headers是可以信任的. 通过设置--forwarded-allow-ips来设置一系列的可靠IP地址.

DEFAULT_FEATURE_FLAGS: = {
    # allow dashboard to use sub-domains to send chart request
    # you also need ENABLE_CORS and
    # SUPERSET_WEBSERVER_DOMAINS for list of domains
    "ALLOW_DASHBOARD_DOMAIN_SHARDING": True,  # 允许仪表板的域分片
    # Experimental feature introducing a client (browser) cache
    "CLIENT_CACHE": False,
    "DISABLE_DATASET_SOURCE_EDIT": False,  # 禁用数据集编辑,变为只读模式
    # TODO CWJ
    "DYNAMIC_PLUGINS": True,  # 动态插件
    # "DYNAMIC_PLUGINS": False,
    # For some security concerns, you may need to enforce CSRF protection on
    # all query request to explore_json endpoint. In Superset, we use
    # `flask-csrf <https://sjl.bitbucket.io/flask-csrf/>`_ add csrf protection
    # for all POST requests, but this protection doesn't apply to GET method.
    # When ENABLE_EXPLORE_JSON_CSRF_PROTECTION is set to true, your users cannot
    # make GET request to explore_json. explore_json accepts both GET and POST request.
    # See `PR 7935 <https://github.com/apache/superset/pull/7935>`_ for more details.
    "ENABLE_EXPLORE_JSON_CSRF_PROTECTION": False,
    "ENABLE_TEMPLATE_PROCESSING": False,
    "ENABLE_TEMPLATE_REMOVE_FILTERS": False,
    "KV_STORE": False,
    # When this feature is enabled, nested types in Presto will be
    # expanded into extra columns and/or arrays. This is experimental,
    # and doesn't work with all nested types.
    "PRESTO_EXPAND_DATA": False,
    # Exposes API endpoint to compute thumbnails
    # TODO CWJ
    "THUMBNAILS": True,  # 开启缩略图
    # "THUMBNAILS": False,
    "DASHBOARD_CACHE": False,  # 看板查询缓存
    "REMOVE_SLICE_LEVEL_LABEL_COLORS": False,
    "SHARE_QUERIES_VIA_KV_STORE": False,
    "TAGGING_SYSTEM": False,  # 开启标记功能
    "SQLLAB_BACKEND_PERSISTENCE": False,
    "LISTVIEWS_DEFAULT_CARD_VIEW": False,  # 卡片显示
    # Enables the replacement React views for all the FAB views (list, edit, show) with
    # designs introduced in https://github.com/apache/superset/issues/8976
    # (SIP-34). This is a work in progress so not all features available in FAB have
    # been implemented.
    "ENABLE_REACT_CRUD_VIEWS": True,
    # When True, this flag allows display of HTML tags in Markdown components
    "DISPLAY_MARKDOWN_HTML": True,
    # When True, this escapes HTML (rather than rendering it) in Markdown components
    "ESCAPE_MARKDOWN_HTML": False,
    # TODO CWJ
    "DASHBOARD_NATIVE_FILTERS": True,  # 开启过滤级联
    "DASHBOARD_CROSS_FILTERS": True,  # 开启交叉过滤器
    "DASHBOARD_NATIVE_FILTERS_SET": True,  # 过滤集
    # "DASHBOARD_NATIVE_FILTERS": False,
    # "DASHBOARD_CROSS_FILTERS": False,
    # "DASHBOARD_NATIVE_FILTERS_SET": False,
    "DASHBOARD_FILTERS_EXPERIMENTAL": False,
    "GLOBAL_ASYNC_QUERIES": False,
    # TODO CWJ
    "VERSIONED_EXPORT": True,   # 开启导入功能
    # "VERSIONED_EXPORT": False,
    # Note that: RowLevelSecurityFilter is only given by default to the Admin role
    # and the Admin Role does have the all_datasources security permission.
    # But, if users create a specific role with access to RowLevelSecurityFilter MVC
    # and a custom datasource access, the table dropdown will not be correctly filtered
    # by that custom datasource access. So we are assuming a default security config,
    # a custom security config could potentially give access to setting filters on
    # tables that users do not have access to.
    "ROW_LEVEL_SECURITY": True,  # 行级权限
    # Enables Alerts and reports new implementation
    # TODO CWJ
    # "ALERT_REPORTS": False,
    "ALERT_REPORTS": True,  # 警报和报告
    # Enable experimental feature to search for other dashboards
    "OMNIBAR": False,  # 开启下拉可见性和键盘命令
    "DASHBOARD_RBAC": False,
    "ENABLE_EXPLORE_DRAG_AND_DROP": False,
    # Enabling ALERTS_ATTACH_REPORTS, the system sends email and slack message
    # with screenshot and link
    # Disables ALERTS_ATTACH_REPORTS, the system DOES NOT generate screenshot
    # for report with type 'alert' and sends email and slack message with only link;
    # for report with type 'report' still send with email and slack message with
    # screenshot and link
    "ALERTS_ATTACH_REPORTS": True,
    # FORCE_DATABASE_CONNECTIONS_SSL is depreciated.
    "FORCE_DATABASE_CONNECTIONS_SSL": False,
    # Enabling ENFORCE_DB_ENCRYPTION_UI forces all database connections to be
    # encrypted before being saved into superset metastore.
    "ENFORCE_DB_ENCRYPTION_UI": False,
    # Allow users to export full CSV of table viz type.
    # This could cause the server to run out of memory or compute.
    "ALLOW_FULL_CSV_EXPORT": False,
    "UX_BETA": False,
}
    
    
    
# 配置
"ALLOW_DASHBOARD_DOMAIN_SHARDING": True,  # 允许仪表板的域分片
	# Chrome 允许每个域一次最多打开 6 个连接。当dashboard超过6个slice时,大量的fetch请求会排队等待下一个可用的socket。此 PR 尝试允许Superset 的域分片,并且此功能将仅通过配置启用(默认情况下 Superset 不允许跨域请求)

"CLIENT_CACHE": True,  # 开启客户端缓存
    
"DISABLE_DATASET_SOURCE_EDIT": True,  # 为数据集编辑器的源选项卡添加只读模式
    # 默认:每个人都可以编辑源:

"ENABLE_EXPLORE_JSON_CSRF_PROTECTION": False,  # 仅通过功能标志允许 explore_json 的 GET 方法 
    # 当ENABLE_EXPLORE_JSON_CSRF_PROTECTION功能标志设置为 时True,explore_json 端点中的 GET 将被禁用,后端不执行任何操作并以405 MethodNotAllowed响应,POST被允许

"ENABLE_TEMPLATE_PROCESSING": True,  # 开启模板处理
    
"DASHBOARD_CACHE": True,  # 面板缓存开启
    
"TAGGING_SYSTEM": True,  # 启用该功能后,所有者可以标记图表
    # 图表添加标签
    # 面板添加标签
    # 请注意,标签可以自动完成。不是所有者的用户将看到不可编辑的标签。单击标签时,用户将被带到包含该标签内容的页面
    
"SQLLAB_BACKEND_PERSISTENCE": False,  # 启用后端持久性
    # 如果SQLLAB_BACKEND_PERSISTENCE启用,我们将向浏览器发送包含用户整个查询历史记录的负载。此 PR 更改了行为,以便仅发送与现有查询编辑器关联的查询。
	# 当功能标志SQLLAB_BACKEND_PERSISTENCE设置为 False 时,用户数据当前保存在本地存储中。最近的更改将角色信息添加到引导用户对象。但是在关闭标志后,本地存储数据最终会覆盖引导程序数据,并且角色丢失,从而导致页面中断。此更改从本地存储中删除用户数据,并防止它覆盖引导程序数据。

"LISTVIEWS_DEFAULT_CARD_VIEW": True,  # 开启卡片显示
    
"ENABLE_REACT_CRUD_VIEWS": True,  # 为所有FAB视图(列表、编辑、显示)启用替换React视图
    # 使用https://github.com/apache/superset/issues/8976 # (SIP-34)中引入的# designs,为所有FAB视图(列表、编辑、显示)启用替换React视图。这是一项正在进行的工作,因此并不是FAB中所有可用的功能都已经实现了
    
"DISPLAY_MARKDOWN_HTML": True,  # 启用时 HTML 会转义
    # 添加功能标志(使用默认值设置以匹配当前行为)(a)可以转义/显示 HTML 代码,或(b)隐藏 HTML 标记的输出
    
"ESCAPE_MARKDOWN_HTML": True,  # HTML 会隐藏
    # ESCAPE_MARKDOWN_HTML启用时 HTML 会转义,而当 DISPLAY_MARKDOWN_HTML 关闭时 HTML 会隐藏。
    
"DASHBOARD_NATIVE_FILTERS": True,  # 开启过滤级联
"DASHBOARD_CROSS_FILTERS": True,  # 开启交叉过滤器
"DASHBOARD_NATIVE_FILTERS_SET": True,  # 面板过滤集
    
"GLOBAL_ASYNC_QUERIES": True,  # 全局异步查询
    
"VERSIONED_EXPORT": True,   # 版本化导出
    # 使用版本化导出时,您可以指定是否要覆盖导入的元素。(例如仪表板、图表、数据集、数据库) 但是,此选项仅适用于导入级别(例如,仅覆盖仪表板但不会覆盖更新的图表)。更新仪表板时,通常会触及数据集、图表和仪表板的组合(例如,新字段、图表中的字段、仪表板中的更多空间用于其他字段),因此每个级别的覆盖选项可能会很有用。 目前,您必须仅对修改过的元素进行 3 次导出(因此在导出前过滤图表/数据集),然后再一次一次地重新导入它们。
    
"ROW_LEVEL_SECURITY": True,  # 开启行级安全目录
    
"ALERT_REPORTS": True,  # 开启警报报警目录
    
"OMNIBAR": True,  # 开启下拉可见性和键盘命令
    # 使用 cmd/ctrl + k就可以看见了
    # 具体修改可以查看这里,传送门:https://github.com/apache/superset/pull/16168

"DASHBOARD_RBAC": False,  # RBAC控制面板
    
"ENABLE_EXPLORE_DRAG_AND_DROP": False,  # 拖放查询面板的 POC。范围 - 仅限 Groupby 控制 默认关闭    
"ALERTS_ATTACH_REPORTS": True,  # 开启警报可以发送附件   
TALISMAN_ENABLED: Talisman

图表下钻

1.3.0之后的版本的实现思路( https://github.com/askstylo/superset/pull/1)

三、部分功能配置

我所配置的superset_config.py:


from superset.typing import CacheConfig

# 源数据库配置
SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@localhost/superset_meta?charset=utf8'

# 汉化
BABEL_DEFAULT_LOCALE = "zh"

# Superset specific config
ROW_LIMIT = 5000

# SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'


# Flask-WTF flag for CSRF
# 通过Flask-WTF来保护表单免受CSRF攻击
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''

# 全局异步查询秘钥
GLOBAL_ASYNC_QUERIES_JWT_SECRET = "test-secret-change-me-new-key-added-later"

# 配置
FEATURE_FLAGS = {
    # 缩略图配置
    "THUMBNAILS": True,
    "THUMBNAILS_SQLA_LISTENERS": True,
    # 面板缓存
    "DASHBOARD_CACHE": True,
    # 全局异步查询
    "GLOBAL_ASYNC_QUERIES": True,
    # 动态插件
    "DYNAMIC_PLUGINS": True,
    # 交叉过滤
    "DASHBOARD_NATIVE_FILTERS": True,  # 开启过滤级联
    "DASHBOARD_CROSS_FILTERS": True,  # 开启交叉过滤器
    "DASHBOARD_NATIVE_FILTERS_SET": True,  # 过滤集
    # 开启导入 导出??功能
    "VERSIONED_EXPORT": True,
    # 警报和报告
    "ALERT_REPORTS": True,

}

# 缓存配置
CACHE_CONFIG = {
    'CACHE_TYPE': 'redis',
    'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'localhost',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 0,
    'CACHE_REDIS_URL': 'redis://localhost:6379/0'
}

DATA_CACHE_CONFIG = {
    'CACHE_TYPE': 'redis',
    'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24,  # 1 day default (in secs)
    'CACHE_KEY_PREFIX': 'superset_results',
    'CACHE_REDIS_URL': 'redis://localhost:6379/0',
}

# Async selenium thumbnail task will use the following user
# 缩略图
THUMBNAIL_SELENIUM_USER = "admin"
THUMBNAIL_CACHE_CONFIG: CacheConfig = {
    'CACHE_TYPE': 'redis',
    'CACHE_DEFAULT_TIMEOUT': 24 * 60 * 60 * 7,
    'CACHE_KEY_PREFIX': 'thumbnail_',
    'CACHE_NO_NULL_WARNING': True,
    'CACHE_REDIS_URL': 'redis://localhost:6379/0'
}

# celery配置
class CeleryConfig(object):
    BROKER_URL = "redis://localhost:6379/0"
    CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks", "superset.tasks.thumbnails",)
    CELERY_RESULT_BACKEND = "redis://localhost:6379/0"
    CELERYD_PREFETCH_MULTIPLIER = 10
    CELERY_ACKS_LATE = True

CELERY_CONFIG = CeleryConfig

# 解决SQL异步查询错误
from cachelib.redis import RedisCache
RESULTS_BACKEND = RedisCache(
    host='localhost', port=6379, key_prefix='superset_results')

# 缩略图所需
WEBDRIVER_TYPE = "chrome"
# for older versions this was  EMAIL_REPORTS_WEBDRIVER = "chrome"
WEBDRIVER_OPTION_ARGS = [
    "--force-device-scale-factor=2.0",
    "--high-dpi-support=2.0",
    "--headless",
    "--disable-gpu",
    "--disable-dev-shm-usage",
    "--no-sandbox",
    "--disable-setuid-sandbox",
    "--disable-extensions",
]

# The base URL to query for accessing the user interface
WEBDRIVER_BASEURL = "http://localhost:8001/"

注意对于缩略图

pip install selenium
安装chromedriver

1.汉化

这是在Windows上执行的,在Ubuntu应该类似,我是直接把之前Windows上的项目复制到Ubuntu中的。

打开虚拟环境下Lib/site-packages/superset/config.py,设置BABEL_DEFAULT_LOCALE = “zh”

BABEL_DEFAULT_LOCALE = "zh"

在Anaconda3\install\envs\superset_env\Lib\site-packages\superset文件夹下面:

(superset_env) D:\Anaconda3\install\envs\superset_env\Lib\site-packages\superset>pybabel compile -d translations

重启文件你会发现大多数都已经汉化了,但是并不完全汉化
这时候你要编辑: D:\Anaconda3\install\envs\superset_env\Lib\site-packages\flask_appbuilder\translations\zh\LC_MESSAGES文件下的po文件,在flask_appbuilder文件下执行命令

pybabel compile -d translations

2.不登录用户查看图表

复制Gamma的权限,重命名为Public

再添加一个all datasource access on all_datasource_access即可
其中

  • can explore on Superset为导出图表
  • can explore json on Superset为导出图表json
  • all database access on all_database_access访问所有数据库权限,也可以设置单个
  • all datasource access on all_datasource_access

3.dashboard交叉过滤器

如果让dashboard左侧出现筛选器,dashboard可交叉筛选,将以下三个参数设置为True

    # TODO CWJ
    "DASHBOARD_NATIVE_FILTERS": True,  # 开启过滤级联
    "DASHBOARD_CROSS_FILTERS": True,  # 开启交叉过滤器
    "DASHBOARD_NATIVE_FILTERS_SET": True,  # 过滤集

注意dashboard可交叉筛选是由 DASHBOARD_CROSS_FILTERS 控制,设置了这个后,还需要在要实现交叉筛选的chart上,
勾选上EMIT DASHBOARD CROSS FILTERS,并不是所有图表都有这个选项的,饼图、table、雷达图上有,其他有没有没细看,
只有有的才能交叉筛选

交叉筛选效果见https://www.cnblogs.com/datawalkman/p/15131350.html的图

4.日志时间修改

日志时间差8个小时

superset\models\core.py修改dttm

    # TODO CWJ
    # dttm = Column(DateTime, default=datetime.utcnow)
    dttm = Column(DateTime, default=datetime.now)

5.对于CSS的引入

6.celery,flower

pip install flower

celery --app=superset.tasks.celery_app:app worker --pool=prefork -O fair -c 4

celery --app=superset.tasks.celery_app:app flower 

7.SQL异步查询报错解决

错误:Results backend needed for asynchronous queries is not configured.
因为我已经在前面设置缩略图时配置过celeryRedis,所以这个错误很奇怪。
解决:
在web中先开启MySQL的异步查询
然后在celery配置后面添加

from cachelib.redis import RedisCache
RESULTS_BACKEND = RedisCache(
    host='localhost', port=6379, key_prefix='superset_results')

# 如果配置全局异步查询,重新添加为多余32位
"GLOBAL_ASYNC_QUERIES": True,
# 全局异步查询秘钥
GLOBAL_ASYNC_QUERIES_JWT_SECRET = "test-secret-change-me-new-key-added-later"
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Superset是一个开源的数据可视化工具,它允许用户轻松地创建和分享交互式数据仪表板。在Superset中,创建雷达图(也称为多边形图或星形图)可以帮助你比较不同类别之间的多个度量。下面是配置Superset雷达图的基本步骤: 1. **选择数据源**: 首先,确保你的数据已经上传到Superset的数据源中,如PostgreSQL、Redshift、SQLAlchemy等。 2. **查询编辑**: 选择你要用于生成雷达图的查询,编辑查询以获取必要的字段,包括作为类别轴的数据和作为雷达图各边的数据点。 3. **图表类型选择**: 在Superset UI中,进入"Explore"或者"Edit View"页面,点击右上角的"Add visualization",选择"Polygon (radar)"或"Star chart"。 4. **配置雷达图参数**: - **数据系列**:添加你要在雷达图上显示的各个类别,每个类别对应一个数据系列。 - **轴标签**:设置X轴和Y轴的标签,分别表示类别和度量。 - **度量**:指定作为雷达图边的数据点,通常这些度量应该具有相同的比例。 - **颜色和样式**:自定义图表的颜色、线条样式等视觉属性。 5. **预览和发布**: 点击"Preview"查看你的配置效果,确认无误后可以选择"Save as a new view"保存并发布。 **相关问题**: 1. 如何在Superset中添加新的数据源? 2. Superset支持哪些数据连接选项? 3. 如何调整雷达图的交互性设置,例如添加鼠标悬停提示?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值