表格行中显示的总数不正确,但卡片视觉和总计中的值正确

Incorrect total showing in table row but correct value in card visual and grand total

提问人:jcoke 提问时间:11/16/2023 更新时间:11/16/2023 访问量:41

问:

我有一个 DAX 代码,它遇到了问题并在这里得到了解决。

totalAverageBaysFinalVersion = 
VAR onlyCampaignFiltered =
    (
        ISFILTERED ( 'Campaign Overview'[campaign] )
            && NOT CALCULATE (
                ISCROSSFILTERED ( 'range_plans' ),
                REMOVEFILTERS ( 'Campaign Overview'[campaign] )
            )
    )
        || ISFILTERED ( 'Calendar'[weekNumWeekCommence] )
RETURN
 SWITCH (
    TRUE(),
    SELECTEDVALUE('Campaign Overview'[branch_type]) = "IN STORE", --Here
        [totalRangePlanBays], --Here
 SELECTEDVALUE('Campaign Overview'[ranged_flag_in_words]) = "RANGED",
    [totalRangePlanBays],
        onlyCampaignFiltered,
      [totalRangePlanBays],
        [Total Avg Bays Campaign Overview]
    )
 

但是,我注意到的是,当对范围组进行过滤时,它不再显示正确的行值,该值应该是 .114.49

enter image description here

但奇怪的是,当我删除上面代码中标有注释的代码时,它突然又起作用了。here

为什么在添加检查分支类型的代码时,它不会在行上显示正确的总数,而是在表的总计中显示正确的总数,并且在删除时,它可以工作,这有什么原因吗?IN STORE

enter image description here

PowerBI DAX PowerBI 桌面

评论

1赞 Sam Nseir 11/16/2023
当您过滤时,则不再为 true,因此它将使用 而不是 .出于某种原因,您希望始终用于“IN STORE”时。range_grouponlyCampaignFiltered[Total Avg Bays Campaign Overview][totalRangePlanBays][totalRangePlanBays]

答:

2赞 Amira Bedhiafi 11/16/2023 #1

我添加了一个 VAR 来捕获 branch_type 和 ranged_flag_in_words 的值,默认值为“未知”来处理具有多个值或没有值的情况。 此外,如果需要,我调整了 SWITCH 功能以同时检查branch_type和ranged_flag_in_words条件。

 totalAverageBaysFinalVersion = 
    VAR onlyCampaignFiltered =
        (
            ISFILTERED('Campaign Overview'[campaign])
            && NOT CALCULATE(
                ISCROSSFILTERED('range_plans'),
                REMOVEFILTERS('Campaign Overview'[campaign])
            )
        )
        || ISFILTERED('Calendar'[weekNumWeekCommence])
    VAR branchType = SELECTEDVALUE('Campaign Overview'[branch_type], "Unknown")
    VAR rangedFlag = SELECTEDVALUE('Campaign Overview'[ranged_flag_in_words], "Unknown")
    RETURN
        SWITCH(
            TRUE(),
            branchType = "IN STORE" && rangedFlag = "RANGED", [totalRangePlanBays],
            branchType = "IN STORE", [totalRangePlanBays],
            rangedFlag = "RANGED", [totalRangePlanBays],
            onlyCampaignFiltered, [totalRangePlanBays],
            [Total Avg Bays Campaign Overview]
        )

如果可能,您可以共享您的 pbix 文件吗?

评论

0赞 jcoke 11/16/2023
感谢您的回答,我试过了,但不幸的是它仍然给出与我的原始代码相同的结果,我可以在这里分享 pbix 文件的净化版本 - drive.google.com/file/d/1xogJwQ4OO5r9sdNi6B446WcIpAYOq3VG/...
1赞 Sam Nseir 11/16/2023 #2

请尝试以下操作:

totalAverageBaysFinalVersion = 
  VAR onlyCampaignFiltered =
    (
      ISFILTERED ( 'Campaign Overview'[campaign] )
      && NOT CALCULATE (
          ISCROSSFILTERED ( 'range_plans' ),
          REMOVEFILTERS ( 'Campaign Overview'[campaign], 'Campaign Overview'[branch_type] )
        )
    )
    || ISFILTERED ( 'Calendar'[weekNumWeekCommence] )

RETURN
  SWITCH ( TRUE(),
    SELECTEDVALUE('Campaign Overview'[branch_type]) = "ONLINE", [Total Avg Bays Campaign Overview], // never use totalRangePlanBays which is only for IN STORE
    SELECTEDVALUE('Campaign Overview'[ranged_flag_in_words]) = "RANGED", [totalRangePlanBays],
    onlyCampaignFiltered, [totalRangePlanBays],
    [Total Avg Bays Campaign Overview]
  )

更改内容:

  • 在 for 中添加了 .为什么?由于表中有此列,因此根据行上下文,它被视为筛选器。'Campaign Overview'[branch_type]REMOVEFILTERSonlyCampaignFiltered
  • 在 SWITCH 中添加了branch_type大小写。据我了解,仅适用于“店内”吗?ONLINErange_plans

观察:

  • 表和表之间的关系似乎不正确。不应该有一个加入吗?Campaign Overviewrange_plansbranch_id

评论

0赞 jcoke 11/16/2023
这成功了,非常感谢 - 此外,由于基础数据源,这种关系是以这种方式建立的,有些数据源不存在于“广告系列概述”表中,因此为了找到它,必须通过日期将其链接以找到与范围相关的广告系列branch_id