DAX计算前一非空白日期基金投资值问题求助
解决DAX计算基金前一日期投资值的问题
原DAX代码的问题分析
你之前的代码报错核心原因有两个:
DISTINCT(ALL_MF[Scheme_Name])返回的是表对象,无法直接与ALL_NAV[SchemeName](标量值)做比较LASTDATE('ALL_NAV'[navDate]) -1逻辑不合理,基金NAV数据通常仅在交易日更新,直接减1天可能指向无数据的非交易日
步骤1:获取前一有效日期的NAV值
以下是修正后的DAX度量值,可直接用于计算单只基金前一非空白日期的NAV:
PrevNAV = VAR CurrentScheme = MAX(ALL_MF[Scheme_Name]) VAR CurrentDate = MAX(ALL_NAV[navDate]) -- 定位当前基金、当前日期之前的最后一个有有效NAV的日期 VAR PrevValidDate = CALCULATE( MAX(ALL_NAV[navDate]), ALL_NAV[SchemeName] = CurrentScheme, ALL_NAV[navDate] < CurrentDate, NOT ISBLANK(ALL_NAV[navValue]) ) -- 提取该日期的NAV总和 VAR PrevNAVValue = CALCULATE( SUM(ALL_NAV[navValue]), ALL_NAV[SchemeName] = CurrentScheme, ALL_NAV[navDate] = PrevValidDate ) RETURN PrevNAVValue
步骤2:计算前一日期的投资值
假设ALL_MF表中存储投资额的字段名为InvestmentAmount,创建如下度量值即可完成计算:
PrevInvestmentValue = VAR NavValue = [PrevNAV] VAR FundInvestment = MAX(ALL_MF[InvestmentAmount]) RETURN NavValue * FundInvestment
关键说明
- 所有度量值依赖当前上下文(比如报表中已筛选单只基金、单个日期),确保计算逻辑精准对应目标基金
- 若需在计算列中实现,只需将
MAX()替换为EARLIER()或直接引用当前行的字段值即可
内容的提问来源于stack exchange,提问作者Sunil
相关产品推荐
相关产品推荐

