Tab报表项目的目标是解决Tableau Server 用户licence 过少的问题(目前公司只购买了10个用户的license). 解决方案如下所述.
- 分配一个统一的Tableau Server 账号作为登录账号
- 本服务使用统一的账号登录Tableau Server, 并缓存tableau授权凭证
- Tableau 为每个邮箱分配一个授权码, 对应用户所能访问数据的区域和报表
- 用户使用公司的email/密码登录本服务, 并从数据库中获取用户的授权码(TOKEN)
- 本服务将tableau授权凭证写入用户的cookie
- 本服务根据授权码从数据库获取该用户有访问权限的报表列表, 并展示给用户
- 用户点击需要查看的报表链接, 本服务将授权码作为参数(TOKEN)传给相应的报表视图(View)
- 报表视图(View)根据授权码(TOKEN)过滤展示数据
- mysql-connector
- flask
- flask-sslify
- requests
- redis
- gunicorn
- 在 ETL服务器安装redis: yum install redis
- 启动redis: redis-server redis.conf
- scp tab_report.tar user@etl_server_ip:uni_deploy/
- ssh user@etl_server_ip
- pip install gunicorn
- 分别在 ETL server 和 Titan 上安装: pip install supervisor
- 修改/etc/supervisord.conf, 添加服务配置
test: python report.py
production: sudo supervisorctl start tab_report