变量在仪表盘配置过程中都有涉及,包括我的数据sql中的参数变量、sql变量、token变量,仪表盘设置插码变量,输入框/下拉框绑定参数变量

我的数据事件变量使用

在使用sql方式创建我的数据时,有一些限制条件需要在仪表盘中使用时才能真正赋值

示例

查看某个小组的数据,参与人数需要随小组下拉值改变
变量使用 - 图1
我的数据:

  1. select sum(if(a.join_at is NULL,0,1)) as joinNum
  2. from `mp_basic`.`task_members` a
  3. where a.member_group_uuid = '${memberGroupId|1832771294ce11ea81630242ac120007}'

变量使用 - 图2
如上述示例sql中的 “member_group_uuid” 字段就是需要通过仪表盘中的下拉框进行赋值,需要在sql中使用“${memberGroupId|1832771294ce11ea81630242ac120007}” 参数变量进行占位,并在下拉框中绑定当前图表/我的数据的“member_group_uuid”变量

使用

  1. 变量名称规则 : ${变量 | 模拟值 | must /optional},模拟值用于我的数据查看使用,在仪表盘不使用此模拟值,需要对此变量赋值,若不赋值或赋值为空,则相当于替换此处条件为true。第三个参数选填,must则是此参数在使用时必须赋值(must一般用于接收url传参,比如单活动分析,活动ID应为必填),optianal则是可不赋值,不写默认选填。如例子中的sql,如果选择全部小组,参数变量“memberGroupId”为空值,执行语句则相当于 “select sum(if(a.join_at is NULL,0,1)) as joinNum from mp_basic.task_members a where 1”
  2. 事件变量在sql语句中 必须 使用单引号

where member_group_uuid = ‘${groupId | 1234}’
where member_group_uuid in (‘${groupId | 1234}’)
where member_group_uuid > ‘${groupId | 1234}’

  1. sql语句中可以使用多个参数变量,也可重复使用相同的参数变量
  2. 如果有多处同时对一个变量进行赋值,则使用交集
  3. 仪表盘对参数变量赋值

5.1 通过仪表盘插码变量赋值,变量名称与参数变量一致即可
截屏2020-07-28 下午4.28.51.png
截屏2020-07-28 下午4.28.40.png
5.2 绑定下拉框、数据框的值
变量使用 - 图5

  1. 模糊查询 ,与mysql使用相同

    where member_group_uuid like ‘%${groupId | 1234}’
    where member_group_uuid like ‘${groupId | 1234}%’
    where member_group_uuid like ‘%${groupId | 1234}%’

    我的数据SQL变量使用

    对于一些复杂sql,可使用SQL变量进行拆分

    变量使用规则

  2. 不可与其他变量重名

  3. 格式:${变量}
  4. 使用SQL变量,涉及到多条语句,“;”分隔,最终按最后一条语句执行返回数据,之前语句都是用于定义变量
  5. 建议变量以SQL开头

    可定义语句块

    1. ## 正常:
    2. select (select count(1) from dataview_connection) / (select count(1) from dataview_connection_mysql)
    3. ## 可视化:
    4. ${SQL_1} = select count(1) from dataview_connection;
    5. ${SQL_2} = select count(1) from dataview_connection_mysql;
    6. select ${SQL_1} / ${SQL_2} as t1;

可定义预执行变量

使用eval 可在执行最终语句前,预先计算当前语句的值,但仅支持单值

  1. ${SQL_v1} = eval(select sum(custom_num) as v1 from custom_last_stat where day = date_sub(curdate(),interval 2 day) and company_id='${companyId}' and department_id in (${departments}) );
  2. ${SQL_v2} = eval(select ifnull(sum(custom_num),0) as v2 from custom_last_stat where day = date_sub(curdate(),interval 1 day) and company_id='${companyId}' and department_id in (${departments}));
  3. select ((${SQL_v2} - ${SQL_v1}) / ${SQL_v1}) as t1;

系统变量使用

集成宿主系统时,需要集成宿主系统的用户登录校验(token),图表数据也需要根据不同用户对应的信息进行限制

示例

查询用户所在公司的访问用户排名,其中“${SYS_COMPANY_ID}”则表示用户对应的公司id,会随登录用户改变而改变

  1. SELECT
  2. tds.department AS departmentId,
  3. tds.task_id as task_id,
  4. d.department_name AS departmentName,
  5. sum(tds.views_count) AS views_count
  6. FROM
  7. mp_statistics.content_task_department_stat tds
  8. LEFT JOIN mp_basic.departments d on d.uuid = tds.department
  9. WHERE
  10. tds.company_id='${SYS_COMPANY_ID}'
  11. GROUP BY
  12. tds.department,d.department_name,tds.task_id
  13. ORDER BY
  14. views_count DESC;

token设置

  1. 开启单点登录集成

所有开启数据权限的前提
变量使用 - 图6
cas_token验证地址

由用户自行开发,通过cas_token获取换取访问票据access_token
access_token的获取方式

规定接口返回格式,自动获取

  1. 开启数据权限集成

变量使用 - 图7
access_token验证地址

由用户自行开发,获取用户权限信息
token内容解析

同时作为系统变量使用,可直接用于SQL语句中,设置数据权限时使用

变量使用 - 图8
模拟值:用于配置仪表盘时使用的模拟值,仪表盘插码集成宿主系统后,才能获取到token并获取对应的用户实际信息
扩展字段: 可以点击添加字段,进行扩展字段增加。SQL语句引用:${SYS_EXTEND.扩展字段名称}

  1. 系统变量使用

集成token验证后,sql语句中可直接使用 token解析出来的变量.
系统变量使用时,必须是非空字段
变量使用 - 图9

sql中使用示例

在我的数据页面,打开SQL数据框
变量使用 - 图10

变量使用 - 图11
在添加系统变量的时候,还可以指定扩展变量
变量使用 - 图12
如上图,在我的数据插入系统变量时,使用 ${SYS_EXTEND.field} 即可

  1. select company_id,company_name
  2. from table where company_id = '${companyId}';
  3. select departement_id,name
  4. from table where departement_id in (${departments});

仪表盘设置变量

用于接收url 等外部传的参数,使用场景:仪表盘为某个任务的分析,任务id在url中,此种情况需要使用插码变量获取任务id

变量设置

仪表盘中设置一个变量,变量名称为此变量的唯一标识,变量值为在仪表盘配置过程中对此变量的模拟值
截屏2020-07-28 下午4.28.51.png
截屏2020-07-28 下午4.28.40.png

插码变量赋值

在插码时,需要对插码变量进行真正的赋值,需要先生成插码,并在插码时通过setVariable(variableList)函数进行赋值
变量使用 - 图15
变量使用 - 图16

变量仪表盘使用场景

  1. 插码变量可对sql我的数据中的事件变量赋值
  2. 可在图表过滤中使用,则相当于此图表的数据需要基于变量进行过滤

变量使用 - 图17