Smartbi 中支持下拉树参数和树对话框参数,在某些情况下我们可能想做一个"子ID"与"真实值"不是同一个字段的树参数,下面就说明如何实现该需求。
需求描述
假设需要通过 Smartbi 知识库中的资源表(t_restree)做一个下拉树参数,参数的真实值为资源名称(c_resname),参数的显示值为资源别名(c_resalias),父子树结构则由资源ID(c_resid)与父ID(c_pid)构建。
实现步骤
1、制作如下下拉树参数。
备选值SQL:
代码块 | ||||
---|---|---|---|---|
| ||||
select t.c_resname as RName, t.c_resalias as RAlias, t.c_pid as RPid from t_restree t, t_restree pt where pt.c_resname = ? and t.c_pid = pt.c_resid |
默认值SQL:
代码块 | ||||
---|---|---|---|---|
| ||||
select t.c_resname as RName, t.c_resalias as RAlias, t.c_pid as RPid from t_restree t where t.c_resid = 'DEFAULT_TREENODE' |
根节点SQL:
代码块 | ||||
---|---|---|---|---|
| ||||
select t.c_resname as RName, t.c_resalias as RAlias from t_restree t where t.c_pid is null |
相应界面:
2、创建可视化数据集界面如下:
3、预览数据可看到效果如下:
注意 |
---|
1、当选择自定义父子节点的时候,如果没有勾选动态加载子节点,则注意备选中的sql不能包含问号。1、当选择自定义父子关系的时候,如果没有勾选动态加载子节点,备选值设置中的SQL不能包含问号。 2、如果勾选了动态加载子节点,备选值设置的SQL带“2、如果选择了选择自定义父子关系并且勾选了动态加载子节点,备选值设置的SQL带“?”是为了数据集中使用参数点击展开的时候动态执行SQL语句,备选值旁边的预览按钮预览是查看备选值全部数据,此处点击预览时执行SQL中的问号无法被动态替换因此预览会报错,这是正常情况,只需保证数据集预览选择参数展开树的时候执行SQL不报错即可。”是为了数据集中使用参数点击展开的时候根据自定义父子关系的字段值动态执行SQL语句,而备选值旁边的预览按钮预览是直接执行SQL查看备选值全部数据,此处点击预览时执行SQL中的问号无法被动态替换因此预览会报错,这是正常情况,实际使用只需保证数据集预览选择参数展开树的时候执行SQL不报错即可。 |