文档简介:
有关图表如何配置下钻功能,详见图表的下钻设置。
下钻参数在哪里看
对于下钻弹出的图表,最重要的就是如何知道下钻的参数有哪些?其实,在下钻弹出图表的右侧控制面板中「数据」下,单击「调试」,就能看到上层图表传递给本下钻图表的下钻参数。例如,一个饼图点击下钻弹出一个折线图:
1、点击饼图的某一区域
2、在弹出的折线图中,右侧控制面板中单击「调试」,如下图:
3、在「调试」窗口中就能看到drillDowns字段即下钻参数,如下图:
SQL 中关联下钻参数
在绑定了图表的下钻功能之后,在下钻弹出图表中,请求下钻图表的数据时会额外附加上一些下钻的具体信息,例如,一个饼图有三个扇形区域,点击每个扇形区域时,我们在弹出的图表拉取数据时会加上drillDowns参数用来描述用户到底是点击了哪一区域。并且Sugar BI支持在伪 SQL 语句中嵌入这些下钻的参数,从而达到点击不同的区域弹出的图表的数据不同。
后端接受到的drillDowns参数的格式如下(由于Sugar BI支持多层下钻,因此drillDowns参数是个数组,数组的每项分别表示每级下钻的信息):
{ "drillDowns": [ { // 第一层下钻 "item": { "type": "专家", "type_sugar_origin": "zhuanjia",
"id": "1", "link": "www.baidu.com", "_sugar_dd_default_": "zhuanjia" }, "fireKey": "type" },
{ // 第二层下钻 "item": { "name": "数据1", "value": [ 1218, 1461 ], "yVal": "123,457", "category":
"dot1", "_sugar_dd_default_": "dot1", }, "fireKey": "" } ] }
和查询条件类似,伪 SQL 语句中支持关联下钻参数,有两种关联格式,分别为简单模式和高级模式(下面的各个截图都是图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正要在数据库上执行的 SQL 语句)。
1.简单模式
简单模式时,使用的伪语法格式为:{field = [drillDowns]} 或者 {field = [drillDowns(first)]}
- 其中field是 SQL 中的字段名(根据您的数据表结构来决定的,和具体 SQL 有关);
- =号是 SQL 判断逻辑词,可以支持不写判断逻辑,Sugar BI会自动补全为=,支持的逻辑词有:=, !=, <>, >=, <=, >, <, in, like, between, regexp等;
- 下钻参数需要使用[]包围,并且必须输入drillDowns关键词;
- 由于支持多层下钻,(first)是指第一层下钻的参数,当然我们支持不传(即 {field = [drillDowns]})默认就是最后一层,Sugar BI支持(0)、(1)...等数字取不同层,同样也支持(first)、(last)取第一层和最后一层
- 使用简单模式时,我们默认取的是上图代码中的_sugar_dd_default_字段,这个参数是Sugar BI自动生成的,不同类型的图表在下钻时,生成这个默认字段的策略不太一样,例如饼图在下钻时,这个默认字段的取值是用户点击的饼图某一扇形区块的名称,再例如柱状图在下钻时,这个默认字段的取值是用户点击的柱体对应的 X 轴取值。
针对上面代码示例,我们可以这样取其中的默认参数(下图是下钻的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正的 SQL 语句):
在 95%的情况下使用简单模式就能解决您的问题,但是也有可能你需要取下钻参数中的其他数据(非_sugar_dd_default_字段),此时就需要用到下面的高级模式:
2.高级模式
高级模式时,使用的伪语法格式为:{field = [drillDowns(last).key]}
- 其中field是 SQL 中的字段名(根据您的数据表结构来决定的,和具体 SQL 有关);
- =号是 SQL 判断逻辑词,可以支持不写判断逻辑,Sugar BI会自动补全为=,支持的逻辑词有:=, !=, <>, >=, <=, >, <, in, like, between, regexp等;
- 下钻参数需要使用[]包围,并且必须输入drillDowns关键词;
- 由于支持多层下钻,(last)是指最后一层下钻的参数,当然我们支持不传(即 [drillDowns.key])默认就是最后一层,Sugar BI支持(0)、(1)...等数字取不同层,同样也支持(first)、(last)取第一层和最后一层;
- key是映射到上面代码示例的item中的字段名;
- 支持扩充语法(number),(raw);
- 下钻的参数 item 中的字段有可能是个数组,Sugar BI允许你嵌入该数组的任意一个元素,语法为: [drillDowns(0).value(1)],其中的1表示数组的 index 号,他也支持扩充语法(number),格式为[drillDowns(0).value(1,number)];
- 可以通过{field = [drillDowns(0).sugar_fireKey]}的方式取到某层的触发 ID,比如表格就可以判断是点击了哪列触发的下钻;
- 如果 SQL 中要取的字段(key)在下钻参数中没有找到,则会用1=1替换,保证 SQL 的正常运行
针对上面代码示例,我们可以这样取其中的参数(下图是下钻的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正的 SQL 语句):
每种图表在点击下钻时所传递到下层图表的参数格式不尽相同(例如父图表也是使用 SQL 方式绑定的数据,Sugar BI在一些情况下会额外增加一些参数的,如数据使用了数据值映射,Sugar BI会自动将映射之前的原始值也附加上,这样在展示时是使用的映射后的中文,而在下钻时有可以将原始的英文或编码传递到后端),一定要善用图表的「调试」,通过弹出图表的“控制面板”中的“调试”按钮来查看此时下钻的参数详情,从而可以很清晰的看到有哪些参数可以嵌入到自己的 SQL 语句中。
SQL 中硬嵌入下钻参数
通常情况下,我们可以通过上面的内容将下钻参数与 SQL 的 where 绑定在一起,例如{field = [drillDowns(last).key]}
如果我们希望下钻的参数的值直接嵌入到 SQL 语句中(例如嵌入到 select 或者 from 的后面),我们可以使用SQL中硬嵌入下钻参数,语法可以如:
- 1:{drillDowns}
- 2:{drillDowns(0)}
- 3:{drillDowns.key}
- 4:{drillDowns(0).key}
- 5:{drillDowns(first).key}
- 6:{drillDowns(first).key(1)}
- 7:{drillDowns(first).sugar_fireKey}
大家会发现硬嵌入和上面的关联用法很类似,下面分别解释一下:
- 第 1 种:最常用的语法,取最后一层下钻参数中的_sugar_dd_default_默认字段
- 第 2 种:取第一层下钻参数中的_sugar_dd_default_默认字段
- 第 3 种:等同于{drillDowns(last).key}
- 第 4 种:由于Sugar BI支持多层下钻,因此drillDowns参数是个数组, 所以 0 表示第 1 层下钻的,你可以修改这个数字
- 第 5 种:first值也可以写为last,分别表示第 1 层和最后 1 层下钻的参数
- 第 6 种:对于下钻的数据如果是一个数组,比如上一节中的散点图下钻, key(1) 中的1就是表示下钻的数据的 index
- 第 7 种:可以通过这种方式取到某层的触发 ID,比如表格就可以判断是点击了哪列触发的下钻
- 注意:使用硬嵌入时,和关联用法不太一样的是,如果 SQL 中要取的字段(key)在下钻参数中没有找到,则会用空字符串替换整个表达式,而不是之前的1=1
以本文上面的下钻参数为例(下图是下钻的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正的 SQL 语句):