Spotfire多表关联数据关联选择
Spotfire多数据表之前可以实现关联限制,本文介绍几种常用方法
样例数据如下,表1为data表,表2为judge表,需求根据表2中选择的judge,根据ID关联表1,限制表1的数据呈现
ID | VALUE1 | VALUE2 | VALUE3 |
A0 | 3214 | 0.0236 | 76 |
A1 | 300 | 0 | 0 |
A2 | 500 | 0.0305 | -15 |
A3 | 13382 | 0.0297 | 397 |
A4 | 15454 | 0.0202 | 312 |
A5 | 5280 | 0.0419 | 23 |
A6 | 2768 | 0.0484 | 47 |
A7 | 1256 | 0.0356 | 60 |
A8 | 9007 | 0.0324 | 19 |
ID | JUDGE |
A0 | B |
A1 | A |
A2 | A |
A3 | A |
A4 | C |
A5 | D |
A6 | C |
A7 | B |
A8 | A |
1. 建立表关系,通过标记限制
打开数据菜单→数据表属性→关系→管理关系→新建关系,添加两个表的ID列建立关系,然后就可以通过表2的标记限制表1图表数据了
2. 建立多值属性选择筛选
2.1 在文本框建立列表框(多个选择),新建属性,选择judge表的ID列
2.2 在data表中添加计算列:label
case when ID IN ($map("'${idfilter}'", ","))THEN 1 END
2.3 添加label的筛选,仅筛选值为1的数据
3. 通过judge表的筛选器,控制data表的数据
3.1 添加自定义函数,选择Python脚本,添加如下脚本,其中INTAB为输入参数,类型为表,OUTTEXT为输出参数,类型为值
column_data = INTAB['ID']# 去重
unique_data = column_data.dropna().drop_duplicates()# 合并为一段文字
OUTTEXT = "'{}'".format("','".join(unique_data))
3.2 点击运行,勾上自动刷新,输入参数选judge表(至少要包含ID列),受限于对应的筛选方案
3.3 输出参数新建一个文档属性ids
3.4 同样,在data表中添加计算列:label2
case when [ID] in (${ids}) then 1 end
3.5 添加label的筛选,仅筛选值为1的数据