仪表板-> 数据集sql Or 接口数据源 过滤教程
本帖最后由 Felix.Li 于 2024-9-12 16:59 编辑今天来带一个非常实用的教程,我们如何将仪表板选择的参数,传递给sql。或者传递给json的查询参数。并且如何选择的是 name,但是传递的是ID。如果你刚好有这个问题,那么就好好看一下:
场景:
1.我们使用直连数据集写了一个自定义sql的,自定义sql有一个过滤的参数,参数来自于用户输入,我们希望最终用户在页面上选择的结果,可以传递到sql里面。
2.我们创建了一个json网络类型的数据源,网络类型数据源有一个参数用来过滤接口查询的结果,同样希望页面上选择的结果,可以传递到数据源的参数。
实现:
那么首先我们做到这一切,先把前提做出来,我们以数据集自定义sql为例:
有一个sql,并且参数来自于用户输入的参数。
其次我们需要单独做一个供用户选择的筛选器的数据集或者数据模型,注意,供用户选择的筛选器来自于数据模型模型,一定要单独创建, 因为做json数据源过滤的,不能和被参数控制的数据源,创建在一个模型里。
好了,现在我们就在仪表板层面做过滤吧:
1.选添加一个供用户选择的筛选器,并绑定对应的userId字段:
2.仪表板需要创建一个参数,这个参数用作传递。例如我们做一个userId的参数.。并且绑定上一步选择的筛选器:
3.添加被过滤的数据集组件,并在数据绑定区域,设置绑定参数,设置为我们添加的userId参数即可:
此时我们就完成了,用户通过选择筛选器的字段将值给仪表板参数,仪表板参数再将值给数据集过滤。流程如下:
仪表板用户选择 -> 仪表板参数 -> 数据集参数 -> 数据集sql过滤。
那么同样的,使用json的也是一个原理,json只是把过滤坐在了数据源,但是整个操作其实是一样的。
没结束,到这里就有很多人发问,我不可能让用户选择选ID,用户选择肯定选的是名称,然后传ID啊,是,所以我们就要进行接下来的操作了。如果让用户选key,但是传Value呢。
好的,我们在刚才的基础上,在额外加一些操作就可以了。
首先需要借助一个格式化插件:
好了,上传这个插件后,我们把刚才的一些东西改一下,首先把仪表板参数的绑定取消:
然后筛选的绑定值修改,改成绑定name,而不是id:
然后将刚才上传的组件添加进来,绑定id字段。并且在属性设置里面,修改属性: 绑定参数,选择我们的参数。就可以了:
此时就完成了,我们就会发现,选择名称,对应的userId已经被传递过去了。这次的流程就是:
用户选择name ----> 改变(设置参数)插件 ---> 插件将ID字段传递给仪表板参数 ---> 数据集参数过滤
这就是新的流程,同样json也是一样的原理。
下面是我做的json和数据集的Demo。想测试的小伙伴可以看一下了:
Demo适用版本: 8.0+
页:
[1]