变量在仪表盘配置过程中都有涉及,包括我的数据sql中的参数变量、sql变量、token变量,仪表盘设置插码变量,输入框/下拉框绑定参数变量
我的数据事件变量使用
在使用sql方式创建我的数据时,有一些限制条件需要在仪表盘中使用时才能真正赋值
示例
查看某个小组的数据,参与人数需要随小组下拉值改变
我的数据:
select sum(if(a.join_at is NULL,0,1)) as joinNum
from `mp_basic`.`task_members` a
where a.member_group_uuid = '${memberGroupId|1832771294ce11ea81630242ac120007}'
如上述示例sql中的 “member_group_uuid” 字段就是需要通过仪表盘中的下拉框进行赋值,需要在sql中使用“${memberGroupId|1832771294ce11ea81630242ac120007}” 参数变量进行占位,并在下拉框中绑定当前图表/我的数据的“member_group_uuid”变量
使用
- 变量名称规则 : ${变量 | 模拟值 | 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” - 事件变量在sql语句中 必须 使用单引号
where member_group_uuid = ‘${groupId | 1234}’
where member_group_uuid in (‘${groupId | 1234}’)
where member_group_uuid > ‘${groupId | 1234}’
- sql语句中可以使用多个参数变量,也可重复使用相同的参数变量
- 如果有多处同时对一个变量进行赋值,则使用交集
- 仪表盘对参数变量赋值
5.1 通过仪表盘插码变量赋值,变量名称与参数变量一致即可
5.2 绑定下拉框、数据框的值
模糊查询 ,与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开头
可定义语句块
## 正常:
select (select count(1) from dataview_connection) / (select count(1) from dataview_connection_mysql)
## 可视化:
${SQL_1} = select count(1) from dataview_connection;
${SQL_2} = select count(1) from dataview_connection_mysql;
select ${SQL_1} / ${SQL_2} as t1;
可定义预执行变量
使用eval 可在执行最终语句前,预先计算当前语句的值,但仅支持单值
${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}) );
${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}));
select ((${SQL_v2} - ${SQL_v1}) / ${SQL_v1}) as t1;
系统变量使用
集成宿主系统时,需要集成宿主系统的用户登录校验(token),图表数据也需要根据不同用户对应的信息进行限制
示例
查询用户所在公司的访问用户排名,其中“${SYS_COMPANY_ID}”则表示用户对应的公司id,会随登录用户改变而改变
SELECT
tds.department AS departmentId,
tds.task_id as task_id,
d.department_name AS departmentName,
sum(tds.views_count) AS views_count
FROM
mp_statistics.content_task_department_stat tds
LEFT JOIN mp_basic.departments d on d.uuid = tds.department
WHERE
tds.company_id='${SYS_COMPANY_ID}'
GROUP BY
tds.department,d.department_name,tds.task_id
ORDER BY
views_count DESC;
token设置
- 开启单点登录集成
所有开启数据权限的前提
cas_token验证地址
由用户自行开发,通过cas_token获取换取访问票据access_token
access_token的获取方式
规定接口返回格式,自动获取
- 开启数据权限集成
access_token验证地址
由用户自行开发,获取用户权限信息
token内容解析
同时作为系统变量使用,可直接用于SQL语句中,设置数据权限时使用
模拟值:用于配置仪表盘时使用的模拟值,仪表盘插码集成宿主系统后,才能获取到token并获取对应的用户实际信息
扩展字段: 可以点击添加字段,进行扩展字段增加。SQL语句引用:${SYS_EXTEND.扩展字段名称}
- 系统变量使用
集成token验证后,sql语句中可直接使用 token解析出来的变量.
系统变量使用时,必须是非空字段
sql中使用示例
在我的数据页面,打开SQL数据框
在添加系统变量的时候,还可以指定扩展变量
如上图,在我的数据插入系统变量时,使用 ${SYS_EXTEND.field} 即可
select company_id,company_name
from table where company_id = '${companyId}';
select departement_id,name
from table where departement_id in (${departments});
仪表盘设置变量
用于接收url 等外部传的参数,使用场景:仪表盘为某个任务的分析,任务id在url中,此种情况需要使用插码变量获取任务id
变量设置
仪表盘中设置一个变量,变量名称为此变量的唯一标识,变量值为在仪表盘配置过程中对此变量的模拟值
插码变量赋值
在插码时,需要对插码变量进行真正的赋值,需要先生成插码,并在插码时通过setVariable(variableList)函数进行赋值
变量仪表盘使用场景
- 插码变量可对sql我的数据中的事件变量赋值
- 可在图表过滤中使用,则相当于此图表的数据需要基于变量进行过滤