Ssas DAX-SUMX:将筛选后的表存储在VAR中,并稍后在表达式中引用其列
在度量(SUMX)中,我过滤一个表并将其存储在一个变量中Ssas DAX-SUMX:将筛选后的表存储在VAR中,并稍后在表达式中引用其列,ssas,powerbi,dax,Ssas,Powerbi,Dax,在度量(SUMX)中,我过滤一个表并将其存储在一个变量中 var currency = factFx[ALPHABETIC_CURRENCY_1] var fxRates = FILTER( factMarketDataExchangeRates; factMarketDataExchangeRates[FX_CURRENCY] = currency ) 然后我需要进行计算,包括进一步过滤fxRates var exchangeRateOnTradeDate = CALCUL
var currency = factFx[ALPHABETIC_CURRENCY_1]
var fxRates = FILTER(
factMarketDataExchangeRates;
factMarketDataExchangeRates[FX_CURRENCY] = currency
)
然后我需要进行计算,包括进一步过滤fxRates
var exchangeRateOnTradeDate = CALCULATE(
[Measure];
FILTER(
fxRates;
fxRates[CURVE_DATE] = tradeDate
)
)
这会在SSDT找不到表fxRates
var exchangeRateOnTradeDate = CALCULATE(
[Measure];
FILTER(
fxRates;
fxRates[CURVE_DATE] = tradeDate
)
)
此外,智能感知似乎不起作用。但以下每一项都是有效的。但这是预期的行为吗
不带表前缀:
var exchangeRateOnTradeDate = CALCULATE(
[Measure];
FILTER(
fxRates;
[CURVE_DATE] = tradeDate
)
)
使用基础表的前缀:
var exchangeRateOnTradeDate = CALCULATE(
[Measure];
FILTER(
fxRates;
factMarketDataExchangeRates[CURVE_DATE] = tradeDate
)
)
是的,这是预期的行为。您只能对数据模型中的表使用
table[COLUMN]
语法
这两个工作版本相当于在fxRates
的定义中替换
var currency = factFx[ALPHABETIC_CURRENCY_1]
var exchangeRateOnTradeDate =
CALCULATE (
[Measure];
FILTER (
FILTER (
factMarketDataExchangeRates;
factMarketDataExchangeRates[FX_CURRENCY] = currency
);
factMarketDataExchangeRates[CURVE_DATE] = tradeDate
)
)
由于[CURVE\u DATE]
最终源于FactMarketDataExchangeS
,因此使用该表前缀实际上是在幕后发生的事情,但您可以使用另一个版本,在该版本中,该表被抽象掉,不会使代码混乱
重要的是要记住,fxRates
变量在本例中实际上不是一个表,而是一个语义技巧,可以更清晰地编写代码