如何通过传递参数让大屏展示不同数据

山海鲸可视化的分享链接支持传入自定义参数,参数可以透传给数据源(目前支持 API 和使用 SQL 语句的数据库),数据源针对不同参数,返回不同的数据,就可以达到同一个大屏展示不同数据的效果。下面分别举例说明:

1. 使用 API 数据源

我们现在有一个 API 数据源(http://test.shanhaibi.com/demo_params.php),返回结果,如下图所示:
image.png
我们用这个 API 数据源制作一个简单的大屏,托管后链接为 http://share.shanhaibi.com/share/param-demo/ ,如下图所示:
image.png
如果访问大屏时加上参数** a=2&text=哈哈 **,则这个参数会透传给 API,实际访问的 API 也会自动加上这些参数:

大屏链接: https://share.shanhaibi.com/share/param-demo/?a=2&text=哈哈

API 链接: http://test.shanhaibi.com/demo_params.php?a=2&text=哈哈

API 返回结果,如下图所示:
image.png
这时候大屏的数据就会变成上面返回的数据,如下图所示:
image.png
备注:API 数据源需要对传参作相应处理,返回不同的数据,同时还需要保持数据结构不变。

2. 使用 SQL 语句的数据库(1.3.7 版本开始支持)

现在数据库中有一个user 表,表中数据,如下图所示:
image.png
在山海鲸可视化中添加 SQL 语句,如下图所示:
image.png
3 个 SQL 语句,如下所示:

1
2
3
select * from user where name = {name:’张三‘}
select * from user where time>{start:0} and time<{end:1623772800}
select * from user where name like {name_like:’张%‘} and type={type:3}

可以看出,这些 SQL 语句比较特殊,里面定义了参数和默认值,其中红色的为参数名,绿色的为默认值。

软件会根据大屏传过来的参数对 SQL 语句参数和默认值部分进行替换处理后,再进行查询。

如果大屏不传参数,则实际执行的 SQL 语句,如下所示:

1
2
3
select * from user where name = ‘张三’
select * from user where time>0 and time<1623772800
select * from user where name like ‘张%and type=3

image.png
如果大屏传参,参数为:

1
2
3
4
5
name: 李四
start: 1634428800
end: 1637116392
name_like: %三
type: 1

则实际执行的 SQL 语句,如下所示:

1
2
3
select * from user where name = ‘李四’
select * from user where time>1634428800 and time<1637116392
select * from user where name like%三’ and type=1

image.png