基于值聚合时的附加行

时间:2015-03-26 16:51:51

标签: qlikview

这就是我的数据模型的样子:

Id          Status             StartDate
1           StatusA            01/01/2015
1           StatusB            01/03/2015
1           StatusC            01/05/2015
2           StatusA            01/04/2015
2           StatusB            01/08/2015

我正在尝试获取每个Id的StatusB列的最大日期。

这就是我的维度:

=If(Match(Status,'StatusB'),Timestamp(StartDate))

它工作正常,但它也为我提供了一个空的最大日期的额外重复行。

我的直线图表仅包含这两列。如果我删除最大日期维度,则每个Id显示一条记录

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

无需在维度中添加过滤器。 QV允许计算尺寸,但它们可能会导致很多性能问题。 (基本上在使用计算尺寸时,QV会在内存中使用新维度创建新的“虚拟”表。使用大数据集可能会耗尽你的ram / cpu)

对于这种情况,通过表达式来“控制”维度要好得多。在您的情况下,只需将状态添加为维度并键入以下表达式:

max( {< Status = {'StatusB'} >} StartDate)

在Numbers选项卡中,将格式设置更改为Timestamp。

的Stefan

答案 1 :(得分:0)

你可以看起来像这样;

aggr(max(StartDate),Status,StartDate)