Powerbi 时间点每组最大序列的总和

Powerbi 时间点每组最大序列的总和,powerbi,ssas,dax,Powerbi,Ssas,Dax,我正在尝试做以下事情,但没有成功。我有一个具有以下结构的表: 对于每个就诊号码,我有几个账单Id,每个账单Id有几个与几个就诊日期相关联的序列,每个序号有一个相关联的已付金额 对于每个[VisitNumber]和每个[Bill_Id],我希望能够获取最大序列[Seq Number],并汇总所有这些[Paid]金额 最初,我只是使用以下命令在计算列中设置一个标志: IsMaxSeq = VAR BillId = Data[Bill_ID] VAR SeqNo = Data[Seq Number]

我正在尝试做以下事情,但没有成功。我有一个具有以下结构的表:

对于每个就诊号码,我有几个账单Id,每个账单Id有几个与几个就诊日期相关联的序列,每个序号有一个相关联的已付金额

对于每个[VisitNumber]和每个[Bill_Id],我希望能够获取最大序列[Seq Number],并汇总所有这些[Paid]金额

最初,我只是使用以下命令在计算列中设置一个标志:

IsMaxSeq =
VAR BillId = Data[Bill_ID]
VAR SeqNo = Data[Seq Number]
RETURN
    IF (
        COUNTROWS (
            FILTER ( Data, AND ( Data[Seq Number] > SeqNo, Data[Bill_ID] = BillId ) )
        ) > 0,
        "No",
        "Yes"
    )
这对于静态计算来说很好,但我很难将其动态地纳入度量中

我已经能够获得每个[Bill_Id]的最大序列,并使用以下DAX(以及其他几个版本)对这些金额求和:

这将产生:


但正如你所看到的,总数只是整个集合的最大序列。我想获得每个[VisitNumber]的每个[Bill_Id]的最大序列的所有已支付金额的总和。全套将有数千个[VisitNumber],每个都有数百个[Bill_ID],我希望能够在卡片或矩阵中使用它。非常感谢您的帮助,谢谢

这里的关键是,在度量中使用MAX,这将导致在整个数据集上进行评估时产生与上一时期评估时相同的值。这就是为什么总和的结果与其中具有最高值或[Seq Number]的子集的结果相似

诀窍是使用迭代计算,这样在汇总之前,总数据集总是以较小的子集进行计算。这样做似乎最合适。请尝试以下示例:

MaxSequenceAlt = 
SUMX (
    SUMMARIZE ( Data , Data[VisitNumber] , Data[Bill_Id] ),
    var _maxSequence = CALCULATE ( MAX ( Data[Seq Number] ) , ALLSELECTED ( Data[Seq Number] ) )
    RETURN
        CALCULATE( 
            SUM ( Data[Amount] ) ,
            Data[Seq Number] = _maxSequence
        )
)
评估时,这将导致:


哇,多么漂亮的解决方案,非常感谢您的帮助!我明白你做了什么,我只是不明白你是怎么想出来的,再次感谢!!
MaxSequenceAlt = 
SUMX (
    SUMMARIZE ( Data , Data[VisitNumber] , Data[Bill_Id] ),
    var _maxSequence = CALCULATE ( MAX ( Data[Seq Number] ) , ALLSELECTED ( Data[Seq Number] ) )
    RETURN
        CALCULATE( 
            SUM ( Data[Amount] ) ,
            Data[Seq Number] = _maxSequence
        )
)