簡體   English   中英

power bi dax-上一季度價值?

[英]power bi dax - previous quarter value?

我有一個簡單的表,其數據格式如下:

category | score | date
cat1     |     3 | 31/3/2019
cat2     |     9 | 31/3/2019   Q1 data
cat3     |     7 | 31/3/2019
...
cat1     |     6 | 30/6/2019
cat2     |     4 | 30/6/2019   Q2 data etc.
cat3     |     1 | 30/6/2019

基本上,我有很多用於季度數據的行(不同類別的分數),其中日期列引用了實際的季度。 我有一個圖表,其中顯示了最近一個季度的值(最新數據),但是我需要一個列來提供上一個季度的得分。 我發現有關PREVIOUSQUARTER的信息,這看起來很簡單,但它會返回空白。

prevQtr = CALCULATE(SUM(data[score]), PREVIOUSQUARTER(data[date]))

有人可以告訴我我在做什么錯嗎? 我嘗試創建一個日期表,在該列的第一個日期和最后一個日期之間使用連續的日期,但這沒有幫助。 其他時間智能功能似乎都沒有返回任何東西,所以我想這是通用的東西。 我嘗試了文檔,但沒有提及任何限制。 我正在尋找的是:

category | score | date      | prevQtr
cat1     |     3 | 31/3/2019 | 
cat2     |     9 | 31/3/2019 |
cat3     |     7 | 31/3/2019 |
...
cat1     |     6 | 30/6/2019 | 3
cat2     |     4 | 30/6/2019 | 9
cat3     |     1 | 30/6/2019 | 7

謝謝

屏幕截圖:

圖表 數據 日期表 關系

我建議您僅使用一種措施來實現這一目標,但您的措施:

prevQtr = CALCULATE(SUM(data[score]), PREVIOUSQUARTER(data[date]))

需要參考您的日期表:

prevQtr = CALCULATE(SUM(data[score]), PREVIOUSQUARTER('dateTable'[date]))

這種修改應該做到這一點。

好的,這里有三件事。

  1. 您需要參考日期維度日期列以獲取內置的時間智能功能。 (請注意,這還意味着您應該只使用日期維度中的日期字段。在事實中隱藏“數據” [date],以便您不打算使用它。)
  2. 由於要將其添加為計算列,因此您將不得不進行一些額外的上下文操作。
  3. 由於此處的日期維度沒有提供任何上下文(您僅處於事實表的行上下文中),因此此處無法有效使用內置的時間智能功能。

所以! 我的建議是將PrevQtr定義為度量,而不是列,在這種情況下,它將與下面的小型重構一起使用:

PrevQtr =
CALCULATE (
  SUM ( 'Data'[Score] ),
  PREVIOUSQUARTER ( 'dateTable'[Date] ) // just referencing the date table here
)

如果您必須為此創建一個計算列,並且您的數據全部遵循樣本中本季度最后一天具有值的模式,那么我認為這是最好的選擇:

PrevQtrColumn =
VAR CurrentRowDate = 'Data'[Date]
VAR PriorQuarterEnd = EOMONTH ( CurrentRowDate, -3 )
RETURN
  CALCULATE (
    SUM ( 'Data'[Score] ),
    ALLEXCEPT ( 'Data', 'Data'[Category] ),
    'Data'[Date] = PriorQuarterEnd
  )

ALLEXCEPT覆蓋了那里的大ALLEXCEPT CALCULATE將所有行上下文轉換為過濾器上下文,因此您的“ Data” [Score]值將成為過濾器上下文。 ALLEXCEPT清除了這一點,僅保留了[Category]。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM