计算列以确定在非唯一ID上过滤的任何行的列中是否出现值

时间:2015-01-07 18:37:41

标签: powerpivot

我在PowerPivot中有一组数据,这些数据具有非唯一ID,我将这些ID分组用于报告目的。每行都是一个称为任务的唯一项,多个任务可能与一个称为审阅的项相关联。每项任务都需要采取行动。因此,该表看起来像这样(没有ReviewAction列):

TaskID      Action      ReviewID    ReviewAction
------------------------------------------------
1           True        1           True
2           False       1           True
3           False       2           False
4           True        3           True
5           False       4           False
6           False       4           False
7           False       5           True
8           True        5           True
9           False       5           True

有没有办法将ReviewAction作为计算列生成(如果与审核相关的任何任务需要操作,则显示True)?例如,Review 1包含任务1和2.任务1需要操作,因此对于与Review 1关联的任何行,ReviewAction都设置为True。同样,Review 5包含任务7,8和9.只有任务8需要操作,但是我希望ReviewAction对与Review 5关联的所有行显示True。

如果审核ID是重复的,我使用以下函数来计算,如果是,那么有多少重复:

=CALCULATE(COUNTROWS('TableName'), FILTER('TableName', [ReviewID]=EARLIER([ReviewID])))

然而,我无法找到使用相同过滤技术生成ReviewAction列的方法。

我正在尝试制作此列的原因是,我可以创建一个计算Review项目的图表(只是具有不同的计数),并包含一个切片器,用于根据需要操作的评论进行过滤。为了创建切片器,我需要将“ReviewAction”值作为列存在。

1 个答案:

答案 0 :(得分:1)

吉米,

非常有趣的情况,我正在处理类似的事情,并发现使用X功能执行此操作的优雅(不确定性能如何)。在这种情况下,MAXX会有所帮助:

=
MAXX (
    FILTER ( 'Table', [Review ID] = EARLIER ( [Review ID] ) ),
    INT ( [Action] )
)

它采用按 Review ID 分组的子表,然后使用INTEGER值True / False语句计算该组的最大值。然后,将其包装在IF子句中:

=
IF (
    MAXX (
        FILTER ( 'Table', [Review ID] = EARLIER ( [Review ID] ) ),
        INT ( [Action] )
    )
        = 1,
    TRUE (),
    FALSE ()
)

你会得到你需要的东西。源Excel 2013文件可以是downloaded here

希望这有帮助。

enter image description here