在一个度量(sumx)中,我正在过滤表并将其存储在变量中。
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 Cannot find table fxRates
也看来Intellisense无法正常工作。但是以下每个都可以工作。但是这种预期的行为?
没有表格前缀:
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_DATE]
最终源自factMarketDataExchangeRates
,因此使用该表前缀确实是引擎盖下发生的事情,但是您可以使用该表被抽象出来的其他版本,并且不会混乱您的代码。
重要的是,在这种情况下,fxRates
变量实际上不是一个表,而是更明确地编写代码的语义技巧。