superset数据可视化平台 (数据可视化superset)

接上文《K8S集群下安装superset基于mysql生成报表》

升级到最新版本

之前安装的Superset不支持修改配置参数,启动动态SQL能力,需要修改配置文件config.py(详细可参考官方文档https://superset.apache.org/docs/installation/sql-templating),但是之前映射的volume直视存放的db,并未将config.py落地到外部卷。因此做了如下步骤修正:

  • 增加pv、pvc
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-superset-wv
  labels:
    name: pv-superset-wv
spec:
  persistentVolumeReclaimPolicy: Recycle
  nfs:
   path: /home/release/soft/nfs/superset-wv/
   server: nfs-server-2
  accessModes: ["ReadWriteMany"]
  capacity:
    storage: 5G


    
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-superset-wv
  namespace: va
spec:
  accessModes:
  - ReadWriteMany
  resources:
     requests:
       storage: 5G

  • 启用新的服务superset-wv

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: superset-wv
  namespace: va
spec:
  replicas: 1
  selector:
    matchLabels:
      tier: superset-wv
    matchExpressions:
     - {key: tier, operator: In, values: [superset-wv]}
  template:
    metadata:
      labels:
        app: superset-wv
        tier: superset-wv
    spec:
      containers:
      - name: superset-wv
        image: apache/superset
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8088
        volumeMounts:
        - name: sys-time
          mountPath: /etc/localtime
        - name: pvc-superset-wv
          mountPath: /app/
      nodeSelector:
        scope: inner
      volumes:
      - name: sys-time
        hostPath:
          path: /etc/localtime
      - name: pvc-superset-wv
        persistentVolumeClaim:
          claimName: pvc-superset-wv

---
apiVersion: v1
kind: Service
metadata:
  name: superset-wv-service
  namespace: va
spec:
  ports:
  - name: web
    port: 8080
    targetPort: 8088
  selector:
    tier: superset-wv

  • 拷贝服务superset的/app内容到superset-wv对应的目录
kubectl apply  -f superset-wv.yml

kubectl exec -it -n va superset.pod -- bash
cp -r /app/* $target

cd $target
chmod -R 777 $target/*
  • 升级superset,保留以往配置的数据报表
pip install apache-superset --upgrade
superset db upgrade
superset init

修改配置参数

vi superset/config.py修改如下参数为True

#"ENABLE_TEMPLATE_PROCESSING": False,
    "ENABLE_TEMPLATE_PROCESSING": True,

测试

打开SQL Lab编辑如下查询语句验证是否安装成功

select '{{ current_username() }} ',' {{ current_user_id()}} ',

数据可视化superset,superset数据可视化平台

输出下表示成功

应用

如此就可以借助这些动态参数,实现不同用户看到不同的视图。例如在一个dataset里面增加个性化SQL,

数据可视化superset,superset数据可视化平台

{% if current_user_id() == '1' %}
 select * from v_device_list_with_merchant where merchant_name='M2021080001'
{% else %}
 select * from v_device_list_with_merchant 
{% endif %}

也可以按照url参数的不同输出不同的结果:

{% if url_param('cmd')  %}
 select * from v_device_list_with_merchant where merchant_name='{{ url_param('cmd') }}'

{% else %}
 select * from v_device_list_with_merchant 
{% endif %}

最后

还可以定义类似url_param的类似函数,不过我觉得基于url和用户就足够了。看看我的图:

数据可视化superset,superset数据可视化平台

http://bi-wv.my-soft.net.cn/superset/dashboard/2/?native_filters=%28%29

找找他们的不同:

数据可视化superset,superset数据可视化平台

http://bi-wv.my-soft.net.cn/superset/dashboard/2/?cmd=M2021090002&native_filters=%28%29