[]
        
在线Demo 免费试用
(Showing Draft Content)

动态查询数据示例

功能概述

上文动态查询示例中我们将原生查询数据集参数所有可用的值添加到筛选器的自定义值中,实现了数据的动态查询。

本文介绍如何使用查询结果作为筛选器的可用值,完成动态查询。

示例一

实现效果如下:

在仪表板中通过筛选器直接选出原生查询数据集中的数据,完成数据的过滤。并且筛选器中数据来自于数据绑定。

原生查询数据集数据过滤示例1

实现步骤:

1. 准备主数据集

创建一个原生查询数据集,添加参数过滤大区。该数据集为主数据集,在仪表板中绑定到组件中显示数据。

示例中我们将此数据集命名为了“主数据集_demo1”。

image

2. 准备筛选器专用数据集

为了避免造成数据循环,我们不能只准备主数据集这一个数据集。应在筛选器上绑定一个不同的数据集,并且该数据集可以提供目标数据集参数的所有可用值。

示例中我们将此数据集命名为了“大区专用_demo1”。

image

3. 制作仪表板

添加组件,绑定主数据集。由于主数据集中的参数默认值是“华北”,所以组件仅显示了一根柱子。

image

添加筛选器,并绑定专用的数据集。筛选器默认为多选模式,需手动将属性设置中的选择模式设置为“单选”。

image

接下来,为了实现数据过滤效果,我们要将筛选器的值通过仪表板参数传递给主数据集的参数,从而实现动态过滤效果。


image

创建仪表板参数,设置默认数据并绑定筛选器。

image

再将仪表板参数绑定到主数据集参数,这样就将数据集参数与筛选器关联起来了。


image

此时再预览仪表板即可实现预期效果。

示例一资源下载:

demo1.zip

示例二

在示例一的基础上,添加了第二个筛选器(省份筛选器),实现级联数据过滤效果。

原生查询数据集数据过滤示例

实现的关键在于:

  • 大区筛选器可以过滤省份筛选器。

  • 当省份筛选器中未选择值时,主数据集仅根据大区筛选器筛选数据。

  • 省份筛选器中选择数值后可进一步过滤主数据集。

1. 准备主数据集

创建一个原生查询数据集,添加两个参数。分别代表大区和省份,实现所需过滤效果。

示例中我们将此数据集命名为了“主数据集_demo2”。

image

select 销售大区,销售省份,Int(sum(订单金额)) 金额合计,Int(sum(订单利润))利润合计 
from 
(select *, case when @state='$all' then 1 when  销售省份=@state then 1 end as tag from 销售明细) as tmp
where 销售大区 =@大区 and tag = 1
group by 销售大区,销售省份

2. 准备筛选器专用数据集

同样为了避免造成数据循环,我们需要为筛选器准备专用的数据集。并且该数据集应可以提供目标数据集参数的所有可用值。大区筛选器只是将大区提取出来即可。

示例中我们将此数据集命名为了“大区专用_demo2”。

image

省份筛选器的数据需要被大区筛选器影响,所以需要创建一个参数来过滤大区。后边再将这个参数与大区筛选器绑定即可。

示例中我们将此数据集命名为了“省份专用_demo2”。

image

3. 创建仪表板

在仪表板中将要完成数据展示并将各处参数连通,实现所需效果。

首先添加筛选器和柱状图,各自绑定相应的数据集。

在本示例中大区筛选器绑定了“大区专用_demo2”数据集;省份筛选器绑定了“省份专用_demo2”数据集;柱状图绑定了“主数据集_demo2”数据集。

image

筛选器默认为多选模式,需手动将属性设置中的选择模式设置为“单选”。

参数及数据传递过程具体设置如下。

首先添加两个仪表板参数,分别代表大区和省份,绑定两个筛选器。

image


image

然后将这两个仪表板参数与主数据集的参数对应绑定。

image

这样就实现了从筛选器到主数据集的参数传递过程。

image

接下来,还需要将大区筛选器与省份筛选器的参数绑定,实现大区过滤省份的级联效果。

这里也是通过仪表板参数来传递。

image

此时再预览仪表板即可实现预期效果。

示例二资源下载:

demo2.zip

示例三

在示例二的基础上,增加了大区和省份的多值效果。

原生查询数据集数据过滤示例3

实现的关键在于:

  • 保留示例二的级联过滤效果并且大区筛选器和省份筛选器支持多值选择。

1. 准备主数据集

创建一个原生查询数据集,添加两个参数分别代表大区和省份,并且都是多值参数。

示例中我们将此数据集命名为了“主数据集_demo3”。

image

select 销售大区,销售省份,Int(sum(订单金额)) 金额合计,Int(sum(订单利润))利润合计 
from 
(select *, case when '$all'  in (@state) then 1 when  销售省份 in (@state) then 1 end as tag from 销售明细) as tmp
where 销售大区 in (@大区) and tag = 1
group by 销售大区,销售省份

2. 准备筛选器专用数据集

同样为了避免造成数据循环,我们需要为筛选器准备专用的数据集。并且该数据集应可以提供目标数据集参数的所有可用值。大区筛选器只是将大区提取出来即可。

示例中我们将此数据集命名为了“大区专用_demo3”。

image

省份筛选器的数据需要被大区筛选器影响,所以需要创建一个多值参数来过滤大区。后边再将这个参数与大区筛选器绑定即可。

示例中我们将此数据集命名为了“省份专用_demo3”。

image

3. 创建仪表板

在仪表板中将要完成数据展示并将各处参数连通,实现所需效果。

首先添加筛选器和柱状图,各自绑定相应的数据集。

在本示例中大区筛选器绑定了“大区专用_demo3”数据集;省份筛选器绑定了“省份专用_demo3”数据集;柱状图绑定了“主数据集_demo3”数据集。

image

参数及数据传递过程具体设置如下。

首先添加两个仪表板参数,分别代表大区和省份,勾选“多值”,设置默认值并绑定对应的筛选器。

image


image

然后将这两个仪表板参数与主数据集的参数对应绑定。

image

这样就实现了从筛选器到主数据集的参数传递过程。

image

接下来,还需要将大区筛选器与省份筛选器的参数绑定,实现大区过滤省份的级联效果。

这里也是通过仪表板参数来传递。

image

此时再预览仪表板即可实现预期效果。

示例三资源下载:

demo3.zip