在Power BI中创建仅含当年新增基金的虚拟表技术需求
在Power BI中创建仅包含新增基金的虚拟表
嘿,我来帮你搞定这个需求!核心思路很简单:我们需要筛选出仅在当前年份出现、从未在任何过往年份露过面的基金,用DAX就能轻松实现虚拟表。
前提假设
假设你的基础表命名为基础表,包含两个关键字段:
基金名称:存储基金的唯一标识年份:存储基金记录对应的年份(如果是日期列,我们可以用YEAR()函数提取年份)
方法1:仅提取新增基金名称
下面的DAX代码会生成一个只包含新增基金名称的虚拟表:
新增基金名称表 = VAR 当前年份 = YEAR(TODAY()) // 自动获取当前年份,若需指定年份直接替换为数字(比如2024) VAR 过往年份基金池 = CALCULATETABLE( DISTINCT('基础表'[基金名称]), '基础表'[年份] < 当前年份 ) RETURN CALCULATETABLE( DISTINCT('基础表'[基金名称]), '基础表'[年份] = 当前年份, NOT('基础表'[基金名称] IN 过往年份基金池) )
代码逻辑拆解
当前年份:用YEAR(TODAY())自动获取系统当前年份,如果你是针对特定年份分析,直接改成固定数字即可(比如VAR 当前年份 = 2024)过往年份基金池:提取所有在当前年份之前出现过的唯一基金名称,相当于我们的“排除清单”- 最后一步:筛选出当前年份的基金名称,同时排除掉“排除清单”里的旧基金,剩下的就是纯新增的基金
方法2:包含新增基金的完整记录
如果需要保留基础表中新增基金的所有关联字段(比如规模、成立日期等),可以用这段代码:
新增基金详细表 = VAR 当前年份 = YEAR(TODAY()) VAR 过往年份基金池 = CALCULATETABLE( DISTINCT('基础表'[基金名称]), '基础表'[年份] < 当前年份 ) RETURN CALCULATETABLE( '基础表', '基础表'[年份] = 当前年份, NOT('基础表'[基金名称] IN 过往年份基金池) )
注意事项
- 确保
基金名称列数据干净:比如没有多余空格、大小写不一致的情况(比如"XX成长基金"和"xx成长基金"会被误判为不同基金),可以提前用TRIM('基础表'[基金名称])清洗数据 - 如果你的基础表用的是日期列而非单独的年份列,只需把代码里的
'基础表'[年份]替换为YEAR('基础表'[日期])即可
内容的提问来源于stack exchange,提问作者sumantth pendemssai
相关产品推荐
相关产品推荐

