Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 如何创建一个仅根据每个人的上次交易日期计算上次状态的度量。动力BI_Powerbi_Dax_Powerbi Desktop - Fatal编程技术网

Powerbi 如何创建一个仅根据每个人的上次交易日期计算上次状态的度量。动力BI

Powerbi 如何创建一个仅根据每个人的上次交易日期计算上次状态的度量。动力BI,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,.pbix文件可在此处找到: 我需要制定两项措施: 第一个将根据上次交易日期计算每个人的未结状态 例如,对于第5条,我们有三个人。上次交易日期的状态为“打开”。因此,自2018年12月31日起,Person6的Open计数将为1。人也一样。我们将其计为1,因为上次TransactionDate的状态为“打开” 对于Person3,最后一个状态为“关闭”。因此,我们不认为这是开放的。人也一样 对于关闭的也一样。如果transactionDate上的最后一个状态为关闭,则我们将其计为1。以前的交易

.pbix文件可在此处找到:

我需要制定两项措施:

第一个将根据上次交易日期计算每个人的未结状态

例如,对于第5条,我们有三个人。上次交易日期的状态为“打开”。因此,自2018年12月31日起,
Person6
Open
计数将为1。人也一样。我们将其计为1,因为上次TransactionDate的状态为“打开”

对于Person3,最后一个状态为“关闭”。因此,我们不认为这是开放的。人也一样

对于关闭的
也一样。如果
transactionDate
上的最后一个状态为关闭,则我们将其计为1。以前的交易我们不计算在内

例如,
Person3
在最后一次
TransactionDate
时处于关闭状态。截至2018年12月31日,我们对
人员3
计算1

CR7SMS感谢您抽出时间。在真实数据上,由于某种原因,它不起作用。 我错过什么了吗


您可以创建两列,然后将两列相加,得到未结计数和已结计数:

Open Rank = IF(RANKX(CALCULATETABLE(Claims,ALLEXCEPT(Claims,Claims[Person])),Claims[TransactionDate])=1 && Claims[Status]="Open",1,0)
Closed Rank = IF(RANKX(CALCULATETABLE(Claims,ALLEXCEPT(Claims,Claims[Person])),Claims[TransactionDate])=1 && Claims[Status]="Closed",1,0)
要获得打开和关闭事务的计数,可以将这些列相加。这是在假设每个人只有最后一笔交易重要的情况下完成的。其他一切都被忽略了。希望这有帮助

编辑:

添加所有选定项:

Open Rank = IF(RANKX(CALCULATETABLE(Claims,ALLSELECTED(),ALLEXCEPT(Claims,Claims[Person])),Claims[TransactionDate])=1 && Claims[Status]="Open",1,0)
Closed Rank = IF(RANKX(CALCULATETABLE(Claims,ALLSELECTED(),ALLEXCEPT(Claims,Claims[Person])),Claims[TransactionDate])=1 && Claims[Status]="Closed",1,0)
编辑2:

Rank = 
VAR Max_date = Max(Claimants[TransactionDate])
VAR Min_date = Min(Claimants[TransactionDate])
VAR Rank1 =    RANKX(
        FILTER(CALCULATETABLE(
            Claimants
            ,ALLEXCEPT(Claimants,Claimants[ClaimNumber],Claimants[ClaimantID])),Claimants[TransactionDate]>=Min_date&&Claimants[TransactionDate]<=Max_date
                      ),Claimants[TransactionDate],,ASC,Dense
        )
Return Rank1
Rank=
VAR Max_date=Max(索赔人[交易日期])
VAR Min_date=Min(索赔人[交易日期])
VAR Rank1=RANKX(
过滤器(可计算(
索赔人

,ALLEXCEPT(索赔人、索赔人[索赔编号]、索赔人[索赔编号])、索赔人[交易日期]>=最小日期和索赔人[交易日期]谢谢。它对示例数据有效,但对真实数据无效。我正在签出。谢谢我得到了真实数据的屏幕截图。仍然无法得到它为什么不起作用。你能删除日期筛选器并进行检查吗?可能会有影响如果日期筛选器不能正常工作,我们可能必须包含一个ALLSELECTED函数以获得所需的结果ltI已经添加了一个编辑,添加了allselected,请尝试一下