上云无忧 > 文档中心 > 百度智能云数据可视化Sugar BI SQL建模 - SQL关联联动参数
数据可视化Sugar BI
百度智能云数据可视化Sugar BI SQL建模 - SQL关联联动参数

文档简介:
联动参数在哪里看? 对于联动的下级图表,最重要的就是如何知道联动的参数有哪些?其实,在联动的下级图表的右侧控制面板中「数据」下,单击「调试」,就能看到上层图表传递给本图表的联动参数。例如,一个饼图点击联动一个折线图:
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

有关图表如何配置联动功能,详见图表的联动设置。

联动参数在哪里看

对于联动的下级图表,最重要的就是如何知道联动的参数有哪些?其实,在联动的下级图表的右侧控制面板中「数据」下,单击「调试」,就能看到上层图表传递给本图表的联动参数。例如,一个饼图点击联动一个折线图:

1、点击饼图的某一区域,触发联动

2、然后点击折线图,右侧控制面板中单击「调试」,如下图:

3、在「调试」窗口中就能看到dependence字段即联动参数,如下图:

SQL 中关联联动参数

如果图表被某个上级图表设置为了联动的下级图表,当上级图表触发联动时,Sugar BI在请求下级图表的数据时会额外附加上一些联动的具体信息。例如,如果图表的上级图表是一个饼图,点击每个扇形区域时,我们在拉取下级图表的数据时会加上dependence参数用来描述用户到底是点击了哪一区域。并且Sugar BI支持在伪 SQL 语句中嵌入这些联动的参数,从而使得下级图表的数据根据点击区域的不同而同步更新。

下级图表接受到的dependence参数格式如下:

"dependence": { "item": { "name": "数据1", "value": [ 560, 1354 ], "yVal": "123,457", 
"category": "点4", "_sugar_dd_default_": "点4" }, "fireKey": "" }

和下钻参数类似,伪 SQL 语句中支持关联联动参数,有两种关联格式,分别为简单模式和高级模式(下面的各个截图都是联动的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正要在数据库上执行的 SQL 语句):

1.简单模式

简单模式时,使用的伪语法格式为:{field = [dependence]} 或者 {field = [dependence || default]}

  • 其中field是 SQL 中的字段名(根据您的数据表结构来决定的,和具体 SQL 有关);
  • =号是 SQL 判断逻辑词,可以支持不写判断逻辑,Sugar BI会自动补全为=,支持的逻辑词有:=, !=, <>, >=, <=, >, <, in, like, between, regexp等;
  • 联动参数需要使用[]包围,并且必须输入dependence关键词;
  • default为默认值,当上层图表还没有触发联动操作时,联动的下层图表就获取不到联动参数,因此支持给一个默认值,这个默认值是您自己填写的,例如{field = [dependence || haha]}时的默认值就是haha
  • 如果上层图表还没有触发联动操作,并且您也没有填写默认值,我们会用1=1替换整个表达式,保证 SQL 的正常运行;
  • 使用简单模式时,我们默认取的是上图代码中的_sugar_dd_default_字段,这个参数是Sugar BI自动生成的,不同类型的图表在触发联动时,生成这个默认字段的策略不太一样,例如饼图在点击触发联动时,这个默认字段的取值是用户点击的饼图某一扇形区块的名称,再例如柱状图在触发联动时,这个默认字段的取值是用户点击的柱体对应的 X 轴取值。

针对上面代码示例,我们可以这样取其中的默认参数(下图是联动的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正的 SQL 语句):

在 95%的情况下使用简单模式就能解决您的问题,但是也有可能你需要取联动参数中的其他数据(非_sugar_dd_default_字段),此时就需要用到下面的高级模式:

2.高级模式

高级模式时,使用的伪语法格式为:{field = [dependence.key || default]}

  • 其中field是 SQL 中的字段名(根据您的数据表结构来决定的,和具体 SQL 有关);
  • =号是 SQL 判断逻辑词,可以支持不写判断逻辑,Sugar BI会自动补全为=,支持的逻辑词有:=, !=, <>, >=, <=, >, <, in, like, between, regexp等;
  • 联动参数需要使用[]包围,并且必须输入dependence关键词;
  • key为要取的数据在 item 中的字段名;
  • 支持扩充语法(number),(raw);
  • 联动参数 item 中的字段有可能是个数组,Sugar BI允许你嵌入该数组的任意一个元素,语法为: [dependence.key(1)],其中的1表示数组的 index 号,他也支持扩充语法(number),格式为[dependence.key(1,number)];
  • 可以通过[dependence.sugar_fireKey]的方式取到联动的触发 ID,比如表格就可以判断是点击了哪列触发的联动;
  • default为默认值,当上层图表还没有触发联动操作或者在联动参数中找不到key配置的字段时,联动的下层图表就获取不到联动参数,因此支持给一个默认值,这个默认值是您自己填写的,例如{field = [dependence.key || haha]}时的默认值就是haha
  • 如果上层图表还没有触发联动操作或者联动参数 key 对应的字段不存在,并且您也未配置默认值,我们会用1=1替换整个表达式,保证 SQL 的正常运行。

针对上面代码示例,我们可以这样取其中的联动参数(下图是联动的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正的 SQL 语句):

和上面情况进行比较,例如上层图表还没有点击触发联动时,即联动参数不存,我们看一下有默认值与没有默认值的情况对比:

每种图表在点击触发联动时所传递到下层图表的参数格式不尽相同(例如父图表也是使用 SQL 方式绑定的数据,Sugar BI在一些情况下会额外增加一些参数的,如数据使用了数据值映射,Sugar BI会自动将映射之前的原始值也附加上,这样在展示时是使用的映射后的中文,而在联动时有可以将原始的英文或编码传递到后端),一定要善用图表的「调试」,通过联动的下级图表的“控制面板”中的“调试”按钮来查看此时联动的参数详情,从而可以很清晰的看到有哪些参数可以嵌入到自己的 SQL 语句中。

SQL 中硬嵌入联动参数

通常情况下,我们可以通过上面的内容将联动参数与 SQL 的 where 绑定在一起,例如{field = [dependence.key || default]}

如果我们希望联动参数的值直接嵌入到 SQL 语句中(例如嵌入到 select 或者 from 的后面),我们可以使用SQL中硬嵌入联动参数,语法如下:

  • 1:{dependence}
  • 2:{dependence || default}
  • 3:{dependence.key || default}
  • 4:{dependence.key(1) || default}
  • 5:{dependence.sugar_fireKey}

大家会发现硬嵌入和上面的关联用法很类似,

  • 必须输入dependence关键词并使用{}包裹表达式;
  • key为要取的数据在 item 中的字段名;
  • default为默认值,当联动参数不存在,或者在联动参数中找不到key配置的字段时,可以配置默认值让 sql 正常运行并拉取默认数据;
  • 联动参数 item 中的字段有可能是个数组,Sugar BI允许你嵌入该数组的任意一个元素,语法为: {dependence.key(1)},其中的1表示数组的 index 号
  • 如果联动参数不存在且默认值也未配置时,则会用空字符串替换整个表达式,而不是之前的1=1;
  • 可以通过{dependence.sugar_fireKey}的方式取到联动的触发 ID,比如表格就可以判断是点击了哪列触发的联动。

以本文上面的联动参数为例(下图是联动的下级图表数据的『调试』时所展示的,左侧是原始的伪 SQL,右侧是生成的真正的 SQL 语句):

和上面情况进行比较,例如上层图表还没有点击触发联动时,即联动参数不存,我们看一下有默认值与没有默认值的情况对比:

相似文档
  • Sugar BI中支持在 SQL 语句中嵌入当前登录用户的邮箱(使用这种方式,您就可以让不同的用户看到不同的数据),如下语法: 需要注意:如果您将大屏或报表页面进行了公开分享,并且页面中的某一个图表的 SQL 中使用上面的嵌入登录用户的邮箱,此时就会有问题,因为公开分享的页面是不需要用户登录Sugar BI账号就能直接浏览的,所以 SQL 就获取不到当前浏览的用户是谁,因此就会出错。
  • Sugar BI中支持在伪 SQL 中嵌入一些固定的日期宏定义,主要包含: {YEAR}表示当前年。 {MONTH}表示当前月。 {DAY}表示当前日。 {HOUR}表示当前小时。 {MINUTE}表示当前分钟。 {SECOND}表示当前秒。 {MONTH}、{DAY}、{HOUR}、{MINUTE}、{SECOND}支持(number)语法,将01转换成1。 {DATE}表示当前日期 格式如:2018-04-22。
  • 在报表或大屏的公开分享时,在公开分享 URL 中您可以加入额外自定义的查询参数,并将其嵌入至图表或过滤条件的 SQL 语句中 例如,您的报表的公开分享的 URL 本来是:
  • SQL 建模中字段的展示名称可以跟随不同的交互而动态改变,例如名称中嵌入过滤条件、下钻参数、联动参数等,下面详细介绍: 嵌入过滤条件: 如下在图表的 SQL 模型的字段中: 刷新图表数据即可看到:
  • 使用 SQL 方式时,过滤条件之间可以设置依赖关系,从而达到过滤条件级联的效果,常见的例如省、市、区县这样的三级单选条件的级联效果!
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部