2016-02-26 151 views
3

背景信息:對於國際銷售表中的每一行,我需要在過去的特定日期檢索美元匯率,以便分析師可以確定匯率變化對銷售數據的影響。然後,我將使用今日匯率與過去匯率之間的差額,並乘以銷售額來確定影響。如何根據當前行和切片器上下文編寫DAX度量值?

實際問題:如何讓以下公式適用於InternationalSales表中的每一行。

IF(HASONEVALUE(SlicerTable[Date]), 
LOOKUPVALUE(ExchangeRates[FX_Rate], 
      ExchangeRates[CurrencyCode], InternationalSales[CurrencyCode], 
      ExchangeRates[Date], SlicerTable[Date] 
      ), 
BLANK()) 

相關表格是:

  • 'SlicerTable' 含在柱[日期]該組過去的相關日期。該表是切片機的數據源。

  • 'ExchangeRates'與列[CurrencyCode],[Date]和[FX_Rate]。例如1月1日歐元兌換美元的匯率(「EUR」,「01/01/2016」,1.143)

  • '國際銷售'有很多列,但其中有[SaleAmount],[Date]和[貨幣代碼]

對於InternationalSales每一行,我想查找的匯率出售的貨幣,在切片機指定的日期。

我已經嘗試了很多事情,但我總是用下面的兩難困境結束:

一)我不能因爲它是在處理時間和「日期」計算寫一個計算列是由用戶選擇限幅器

b)本人不能寫入的量度,因爲它不是一個聚合時,收到錯誤:

「爲列‘貨幣代碼’,表‘InternationalSales’不能在當前上下文來確定的值。檢查計算表達式中引用的所有列是否存在,並且沒有循環依賴關係也可能發生在某個度量的公式直接指向某列而沒有對該列執行任何聚合(例如總和,平均值或計數)的情況下也會發生。該列沒有單個值;它有很多值,表中的每一行一個,並沒有指定行「

回答

1

顯然我得到的解決方案,它只是一個公式放在一個SUMX中的問題,並且VALUES中的切片器值功能

IF(HASONEVALUE(SlicerTable[Date]), 
    SUMX(InternationalSales, 
     LOOKUPVALUE(ExchangeRates[FX_Rate], 
       ExchangeRates[CurrencyCode], InternationalSales[CurrencyCode], 
       ExchangeRates[Date], VALUES(SlicerTable[Date]) 
       ) * InternationalSales[SaleAmount] 
    ), 
BLANK()) 
相關問題