Qlik Sense中如何创建等效Tableau index()的度量字段
Qlik Sense 实现 Tableau
Index() 等效字段方案 你之前在数据加载编辑器配置逻辑不生效的核心原因:Tableau 的 index() 是视图级动态计算度量,序号会跟随当前可视化的维度组合、筛选条件、排序规则实时变化,不是数据模型里写死的固定行号,加载阶段生成的静态值无法匹配动态交互的需求。
方案1:动态视图级Index(与Tableau Index() 行为完全一致)
这是迁移时的首选方案,不需要修改数据加载脚本,直接在前端工作表创建度量即可:
- 打开目标工作表,在字段面板选择「创建度量」
- 基础场景(全表逐行计数,和Tableau默认
index()逻辑一致)输入以下表达式:
RowNo(TOTAL)
- 分区计数场景(类似Tableau中给
index()设置分区维度,按指定维度分组后组内编号),在TOTAL后尖括号内指定分区字段即可,例如按「销售区域」分组,给每个区域下的订单逐行编号:
RowNo(TOTAL <销售区域>)
注意:该度量为前端实时计算,会自动跟随图表的筛选、维度增减、排序规则更新序号,和Tableau中index()的交互表现完全一致
方案2:加载阶段生成固定静态行号(非Tableau等效方案,仅适用于静态行标识场景)
如果你需要的是不随前端交互变化的固定行标识,可以在数据加载编辑器中对应表的加载语句内添加RowNo()生成固定字段:
LOAD *, RowNo() as static_row_id FROM [你的数据源连接];
注意:该字段值在数据加载完成后就固定不变,不会响应前端筛选、维度切换,无法实现Tableau index()的动态效果,不建议用于仪表板迁移的等效替换。不要误用RecNo()生成静态行号,该函数计数的是原始数据源读取的记录序号,在多表拼接、过滤、Resident加载场景下计数会不符合预期。
内容的提问来源于stack exchange,提问作者Ena Nicevic
相关产品推荐
相关产品推荐

