首页 > 解决方案 > 如果是第一个日期或最后一个日期,则使用一个聚合;如果其他任何一天,使用另一个聚合

问题描述

假设我有以下数据集。 1

我需要创建以下矩阵,如果它是开始或月末,我在类别 1 中聚合 A 或 B 并计算 SUM 但如果它是一个月中的任何其他天,但第一天或最后一天,我标记 A 或 B在类别 2 中并计算 SUM。我想我需要使用 SWITCH,不是吗?

在此处输入图像描述


从评论中编辑信息

喜欢创建 3 列:

isStart = IF ( main_table[date] = STARTOFMONTH ( main_table[date] ), 1, 0 )

isEnd = IF ( main_table[date] = ENDOFMONTH ( 'main_table'[date] ), 1, 0 )

in_between_date =
    IF ( AND ( main_table[date] <> ENDOFMONTH ( 'main_table'[date] ),
               main_table[date] <> STARTOFMONTH ( main_table[date] ) ), 1, 0 )

然后,使用我的类别创建列,例如

start_end =
    IF ( OR ( NOT ( ISERROR ( SEARCH ( "A", main_table[code] ) ) ),
              main_table[code] = "B" ),
         "Category 1",
         BLANK () )

in_between =
    IF ( OR ( main_table[code] = "B", main_table[code] = "A" ), "Category 2", BLANK () )

但是,我应该在 switch/if 中使用什么?= if(VALUES('main_table'[isStart]) = 1,然后呢?

标签: powerbidaxpowerbi-desktop

解决方案


你在正确的轨道上,但有点过于复杂。您只需要一个额外的“类别”列,为该项目所属类别的每一行提供。

Category =
    IF (
        startEnd[date] = STARTOFMONTH ( startEnd[date] )
            || startEnd[date] = ENDOFMONTH ( startEnd[date] );
        "Category1";
        "Category2"
    )

表最终结果是:

在此处输入图像描述


推荐阅读