DAX-返回发布日期之前的最新日期

时间:2019-06-05 20:39:09

标签: powerbi dax

我有三个桌子。采购发票,税区,税收管辖区。样本数据在图像中。

每个购买发票记录都包含一个[税收区]。每个[税收区]由几个[税收管辖区代码]组成。

税收管辖区记录均具有[生效日期]和[税率]。当[税率]更改为[税辖区代码]时,会将新记录添加到税区中,并具有相同的[税区代码]和新的[生效日期]。旧记录保留以前的[生效日期]。

基于购买发票中的[税收区域]字段,我需要针对每个唯一的[税收管辖区代码]从税收管辖区返回[税率]之和]包含在税区中相应的[税区代码]中。但是,对于每个唯一的[税收辖区代码]返回的[税率],必须是该[税收辖区代码]在[过帐]之前或之前的最新[生效日期]记录。日期]中的购买发票

例如,对于图1中突出显示的记录,将需要返回(1.9 + 3),因为这些是[税收区号] =“ CO-DELTA”中每个[税收辖区代码]的费率在[发布日期]之前的最新[生效日期] 12/23/2018。

在图2中,突出显示的记录包含相同的[Tax Area],但是由于新的[Tax Rate]对于那些相同的[Tax Jurisdiction Code]生效,因此需要不同的速率。

图1:

enter image description here

图2:

enter image description here

我完全不知道如何实现这一目标。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,请确保您在表之间建立了(许多)关系:

table relationships (Many to many)

现在,您可以创建自己的有效税收措施:

Effective Tax = 
VAR PostingDate =
    MAX ( 'Purchase Invoice'[Posting Date] )
RETURN
    SUMX (
        'Tax Area',
        CALCULATE (
            SUM ( 'Tax Jurisdiction'[Tax Rate] ),
            FILTER (
                'Tax Jurisdiction',
                'Tax Jurisdiction'[Effective Date]
                    = CALCULATE (
                        MAX ( 'Tax Jurisdiction'[Effective Date] ),
                        FILTER ( 'Tax Jurisdiction', 'Tax Jurisdiction'[Effective Date] <= PostingDate )
                    )
            )
        )
    )

示例数据的输出:

sample output

有关示例PBIX文件,请参见https://pwrbi.com/so_56467693/