试图弄清楚ParallelPeriod如何在DAX中工作

时间:2019-02-07 17:16:49

标签: powerbi dax

我有一个简单的Power BI表,如下所示:

enter image description here

我有两个桌子。日期表和发票表,其中的字段表示发票金额。这是Invoice.InvoiceDate上的1-M关系。

第二列只是发票总数的度量。第三和第四列是使用ParallelPeriod对之前12个月和24个月之前的发票进行总计的度量。即使这些数字是正确的,我也不确定我知道实际情况。

并行的12个月的度量如下:

Sum Invoice Amount 12 Months Ago =
CALCULATE (
    SUM ( FactCustomerTransaction[InvoiceAmountDollars] ),
    PARALLELPERIOD ( 'Date'[Date], -12, MONTH )
)

这就是我想发生的事情。当计算出例如2015年2月的总和时,该月的所有值都将在发票(许多面)表中检索并求和以生成“总发票金额”。在“日期”表中检索相同的日期,减去负12个月,并为“发票总额12个月”的那些日期范围生成相同的总和。然后在24个月前执行相同的过程。

这是有效的,因为日期和发票之间存在1-M关系。这是正确的吗?

1 个答案:

答案 0 :(得分:1)

对于2015年2月的行,假设Year and Month Name表上的'Date'列,则过滤器上下文为'Date'[Year and Month Name] = "2015-Feb"。此过滤器对应于2015-02-01列中的日期2015-02-28'Date'[Date],并且该过滤在整个关系中传播,以仅返回FactCustomerTransaction表中的行,其中InvoiceDate是这些日期之一,然后将仅与这些行相对应的金额相加。

当您添加PARALLELPERIOD时,它的工作方式相同,除了在将日期2015-02-01到与2015-02-28对应的'Date'[Year and Month Name] = "2015-Feb"匹配到function muda_cad () { cad1.src='images/cadeado/cadeado-gif.gif' // Wait 1sec and replace by png setTimeout(function() { cad1.src='images/cadeado/cadeado-png.png' }, 1000) } 之后,它会将这些日期后退12个月。然后在关系中传播那些转移的日期。