Power BI中按语言优先级过滤表格重复行的实现方法
按语言优先级过滤重复ID的Power BI实现方案
方法一:Power Query可视化操作(适合新手)
- 进入Power Query编辑器
选中你的表格,点击主页选项卡的「转换数据」,打开Power Query编辑器。 - 添加优先级排序列
点击添加列→「自定义列」,输入公式:
将新列命名为if [language] = "fi" then 1 else if [language] = "en" then 2 else 3Priority,给fi设最高优先级1,en为2,se为3。 - 按ID分组筛选
点击转换→「分组依据」,选择高级模式:- 第一组:分组依据选
id,新列名设为TopRows,操作选「所有行」 - 第二组:操作选「最小值」,列选
Priority,新列名设为MinPriority
点击确定后,展开TopRows列(点列名旁的箭头),保留原始列和Priority列。
- 第一组:分组依据选
- 过滤目标行
添加筛选器,只保留Priority与MinPriority数值相等的行,这样每个ID下只留优先级最高的记录。 - 清理并应用
删除Priority和MinPriority列,点击「关闭并应用」即可得到目标表格。
方法二:DAX计算表(适合熟悉公式的用户)
在建模选项卡点击「新建表」,输入以下DAX公式(替换你的原始表名为实际表名):
FilteredTable = VAR RankedRows = ADDCOLUMNS( '你的原始表名', "Priority", SWITCH( '你的原始表名'[language], "fi", 1, "en", 2, "se", 3 ), "Rank", RANKX( FILTER('你的原始表名', '你的原始表名'[id] = EARLIER('你的原始表名'[id])), [Priority], , ASC, DENSE ) ) RETURN SELECTCOLUMNS( FILTER(RankedRows, [Rank] = 1), "index", '你的原始表名'[index], "id", '你的原始表名'[id], "language", '你的原始表名'[language], "value", '你的原始表名'[value] )
回车后自动生成符合要求的计算表。
内容的提问来源于stack exchange,提问作者Lurri
相关产品推荐
相关产品推荐

