【问题标题】:Switching Measure in a line chart with the Slicer selection on Power BI使用 Power BI 上的切片器选择在折线图中切换度量
【发布时间】:2019-09-11 06:51:25
【问题描述】:

我有一个显示过去 3 年年初至今收入的折线图和一个目标线。

我有 3 个切片器 Region、District 和 Branch 都来自表 DIMBRANCH

我有以下目标表:

目标区域

goalbyBranch

goalbyCompany

要求 当切片器上没有选择任何内容时,应显示表goalbycompany 中的目标。 当一个区域被选中时,在来自goalbyregion表的所选区域的折线图上显示目标。

问题目前收入会随着切片器选择而变化,因为收入来自单个表 tbl_revenue。

如果在切片器上未选择任何内容,图像会显示收入和目标线图表。

当前使用的 DAX:

2017/Revenue = 
VAR _year =
    YEAR ( TODAY () ) - 2
RETURN
    CALCULATE (
        SUM ( Revenue[Revenue] ),
        FILTER ( Revenue,Revenue[Year] = _year )
    )


2018/Revenue = 
VAR _year =
    YEAR ( TODAY () ) - 1
RETURN
    CALCULATE (
        SUM ( Revenue[Revenue] ),
        FILTER ( Revenue,Revenue[Year] = _year )
    )



2019/Revenue = 
VAR _year =
    YEAR ( TODAY () ) 
RETURN
    CALCULATE (
        SUM ( Revenue[Revenue] ),
        FILTER ( Revenue,Revenue[Year] = _year )
    )


2019/Goals Amount = 
VAR _year =
    YEAR ( TODAY () ) 
RETURN
    CALCULATE (
        SUM ( GoalByCompany[GoalAmount] ),
        FILTER ( GoalByCompany, GoalByCompany[Year] = _year )
    )

我正在尝试使用 DAX 通过 switch 功能实现我的目标。

Switch Goal = 
var _region = SELECTEDVALUE(Branch[Region])
var _branch = SELECTEDVALUE(Branch[Branch])
var _district = SELECTEDVALUE(Branch[District])

var _year = year(TODAY())
var _goalregion = CALCULATE(
                    SUM(GoalByRegion[GoalAmount]),
                    FILTER(GoalByRegion , GoalByRegion[year] = _year))

var _regionselection = 
    SWITCH(_region,
        "RegionGoal",_goalregion
    )

return 
switch (_regionselection,"Region",_goalregion,blank())

我还不习惯开关功能。我想我可以用它来满足我的要求。

这是我选择地区的时候。

这是我的表之间的关系

附加表:收入表链接到带有 branchID 的分支表 calendarweek 表通过周末日期列链接到日期表。

【问题讨论】:

  • 请edit您的问题以显示您当前的DAX度量以及表之间的关系
  • @Olly 按照您的要求更新了我的问题,并提供了更多详细信息如果您需要任何其他信息,请告诉我。
  • 另一种方法是添加三个具有不同轴的图表并将三个不同的视图保存为书签。通过一个按钮,您可以在三个不同的书签视图之间切换。

标签: powerbi dax


【解决方案1】:

如果您只考虑是否过滤区域,则无需使用SWITCH。您可以简单地使用IF 语句来决定要计算的度量:

2019/Goals Amount = 
VAR _year = 
    YEAR ( TODAY() )

RETURN
    IF ( 
        HASONEFILTER ( Branch[Region] ),
        CALCULATE (
            SUM ( GoalByRegion[GoalAmount] ),
            FILTER ( GoalByRegion, GoalByRegion[Year] = _year )
        ),
        CALCULATE (
            SUM ( GoalByCompany[GoalAmount] ),
            FILTER ( GoalByCompany, GoalByCompany[Year] = _year )
        )
    )

【讨论】:

  • 我尝试了您的措施,但是当我选择“北部”地区时,收入线根据北部地区发生了变化,但目标线保持不变,即公司目标。我有三个切片器区域、区和分支,我需要根据切片器上的选择更改目标线。默认情况下,切片器上没有选择。即所有。
  • Olly,你能告诉我是否可以将 hasonefilter 与我所有的 3 个切片机一起用于同一件事,还是仅适用于 1 个切片机?
  • 您可以使用多个HASONEFILTERs。你的三个切片机是什么?您提到 Region 和 Branch 可能会被切片,如果没有选择,那应该是默认的公司。第三个切片机是什么?要将多个条件串在一起,您可以使用SWITCH ( TRUE (), HASONEFILTER ( 'Branch'[Branch] ), <logic for branch>, HASONEFILTER ( 'Region'[RegionNiceName] ), <logic for region>, <logic for company> )。 SWITCH 的最后一个参数是可选的 ELSE 条件。
  • @greggyb 非常感谢您的输入,我使用了您的语法,现在我的问题已经解决了。关于切片器,我有分支、区域和区域切片器,但只需要使用分支和区域切片器。祝你有美好的一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 2022-08-22
  • 2017-02-04
  • 2022-07-02
相关资源
最近更新 更多