代码之家  ›  专栏  ›  技术社区  ›  StelioK

基于断开切片机的动态X轴数据范围

  •  1
  • StelioK  · 技术社区  · 6 年前

    我有个问题需要帮忙。我使用的是基于此表的断开连接的切片器

    Time Frame := 
    DATATABLE("ID", Integer, "Time Frame", string
    , {
      {1, "3 Month"}
    , {2, "6 Month"}
    , {3, "9 Month"}
    , {4, "12 Month"}
    })
    

    看起来是这样的:

    enter image description here

    使用一些DAX度量:

    Sum Of Paid := sum(Data[Paid])
    
    Sum Of Paid 3 Month Period :=
    CALCULATE (
        [Sum Of Paid],
        DATESINPERIOD ( Data[Date], LASTDATE ( Data[Date] ), -3, MONTH )
    )
    
    Sum Of Paid 6 Month Period :=
    CALCULATE (
        [Sum Of Paid],
        DATESINPERIOD ( Data[Date], LASTDATE ( Data[Date] ), -6, MONTH )
    )
    
    Sum Of Paid 9 Month Period :=
    CALCULATE (
        [Sum Of Paid],
        DATESINPERIOD ( Data[Date], LASTDATE ( Data[Date] ), -9, MONTH )
    )
    
    Sum Of Paid 12 Month Period :=
    CALCULATE (
        [Sum Of Paid],
        DATESINPERIOD ( Data[Date], LASTDATE ( Data[Date] ), -12, MONTH )
    )
    
    Slicer - Paid Per Period :=
    VAR selection =
        IF (
            HASONEVALUE ( 'Time Frame'[Time Frame] ),
            VALUES ( 'Time Frame'[Time Frame] ),
            "All"
        )
    VAR ThreeMonth = [Sum of Paid 3 Month Period]
    VAR SixMonth = [Sum of Paid 6 Month Period]
    VAR NineMonth = [Sum of Paid 9 Month Period]
    VAR TwelveMonth = [Sum of Paid 12 Month Period]
    RETURN
        SWITCH (
            TRUE (),
            selection = "3 Month", ThreeMonth,
            selection = "6 Month", SixMonth,
            selection = "9 Month", NineMonth,
            selection = "12 Month", TwelveMonth,
            TwelveMonth
        )
    

    我可以模拟切片器,并根据用户的选择显示3、6、9和12个月的聚合。这些卡片,合唱团和几乎所有我需要的东西都很管用。我的问题是尝试创建具有X轴上的日期范围的线形图、条形图等。我不能让我的生活弄明白如何复制在DAX度量中引用的动态设置X轴的时间。

    我尝试了一些看似可行但却不可行的方法:

    3 Month Period :=
    CALCULATE (
        VALUES(Data[Date]),
        DATESINPERIOD ( Data[Date], LASTDATE ( Data[Date] ), -3, MONTH )
    )
    

    如有任何帮助,我们将不胜感激。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  3
  •   Marco Russo    6 年前

    你可能想试试这个:

    3 Month Period :=
    CALCULATE (
        [Sum Of Paid],
        KEEPFILTERS (
            DATESINPERIOD (
                Data[Date],
                CALCULATE (
                    MAX ( Data[Date] ),
                    ALLSELECTED ()
                ),
                -3,
                MONTH
            )
        )
    )