Qlik Sense中如何通过ProcessTaskId关联Action与ProcessStep数据集
解决方案:Qlik中关联Action与ProcessStep表实现筛选同步
你之前用Concatenate是错误的,这个语句是追加拼接表(把一个表的行加到另一个表后面),而非建立表间关联。另外你用了Qualify *,会给所有字段加上表名前缀,导致两个表的ProcessTaskId变成Action.ProcessTaskId和ProcessStep.ProcessTaskId——字段名不同,Qlik无法自动建立关联,自然筛选器没法同步影响。
正确实现关联的方法有两种:
方法一:取消关联字段的Qualify标记
如果不需要给ProcessTaskId加表名前缀,修改代码让两个表的ProcessTaskId字段名一致,Qlik会自动基于同名字段建立关联:
// 先取消全局Qualify中对ProcessTaskId的标记,再Qualify其他所有字段 Unqualify ProcessTaskId; Qualify *; Action: sql exec [StoredProcedure]; ProcessStep: SELECT distinct MRN = pat.CPR_PatientId , pt.ProcessTaskId , pts.ProcessTaskStepId , pts.CreatedDTM , tsd.Name FROM Table A inner join Table B on A.column1= B.column1; // 若后续需要,可恢复对ProcessTaskId的Qualify标记 Qualify ProcessTaskId;
方法二:手动统一关联字段名(保留全量Qualify)
如果必须给所有字段加表名前缀,手动重命名其中一个表的ProcessTaskId,让两个表的关联字段同名:
Action: Qualify *; sql exec [StoredProcedure]; ProcessStep: Qualify *; // 把ProcessTaskId重命名为Action.ProcessTaskId,与Action表的关联字段名保持一致 SELECT distinct MRN = pat.CPR_PatientId , pt.ProcessTaskId as [Action.ProcessTaskId] , pts.ProcessTaskStepId , pts.CreatedDTM , tsd.Name FROM Table A inner join Table B on A.column1= B.column1;
这样两个表就会通过ProcessTaskId(或重命名后的同名字段)建立关联,工作表中使用筛选器时,两个表的内容会同步响应筛选操作。
内容的提问来源于stack exchange,提问作者jw11432
相关产品推荐
相关产品推荐

