Background Info :对于国际销售表中的每一行,我需要检索过去特定日期的美元汇率,以便分析师可以确定汇率变化对销售数据的影响 . 然后,我将使用今天的汇率与过去的汇率之间的差额,并将其乘以销售额以确定影响 .
Actual problem :如何使以下公式适用于InternationalSales表中的每一行 .
IF( HASONEVALUE(SlicerTable[Date]),
LOOKUPVALUE(ExchangeRates[FX_Rate],
ExchangeRates[CurrencyCode], InternationalSales[CurrencyCode],
ExchangeRates[Date], SlicerTable[Date]
),
BLANK())
相关表格是:
-
'SlicerTable'包含[Date]列中过去的相关日期集 . 该表是切片器的数据源 .
-
'ExchangeRates'包含[CurrencyCode],[Date]和[FX_Rate]列 . 例如,1月1日汇率为EUR兑换USD(“EUR”,“01/01/2016”,1.143)
-
'InternationalSales'有很多列,但其中包括[SaleAmount],[Date]和[CurrencyCode]
对于InternationalSales中的每一行,我试图在切片机中指定的日期查找销售货币的汇率 .
我尝试了很多东西,但我总是遇到以下困境:
a)我无法编写计算列,因为它是在处理时计算的,并且用户在切片机中选择了“日期”
b)我不能写一个度量因为它不是聚合,我得到错误:
“无法在当前上下文中确定表'InternationalSales'中列'CurrencyCode'的值 . 检查计算表达式中引用的所有列是否存在,并且没有循环依赖关系 . 当公式为a时,也会出现这种情况 . measure直接指向一列而不对该列执行任何聚合(例如求和,平均或计数) . 该列没有单个值;它有许多值,表中每行一个,并且没有已指定行“
1 回答
显然我得到了解决方案,只需将公式放在SUMX中,并将切片器值放在VALUES函数中 .