Powerbi 在DAX(非powerquery)中,根据列删除重复项
在我的PowerBI桌面中,我有一个表,该表是根据其他表计算的,其结构如下: 输入表:Powerbi 在DAX(非powerquery)中,根据列删除重复项,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,在我的PowerBI桌面中,我有一个表,该表是根据其他表计算的,其结构如下: 输入表: 名字 电子邮件 斯科特 ABC@XYZ.com 上下快速移动 ABC@XYZ.com 特德 ABC@XYZ.com 斯科特 EDF@XYZ.com 斯科特 LMN@QRS.com 比尔 LMN@QRS.com 遗憾的是,这个问题的答案是DAX中没有办法引用相对于表中其他行的行位置。唯一的选择是使用一些列值进行排序 我们可以使用现有的两列表来获取每封电子邮件的最大或最小名。因此,我们可以编写如下计算表,T是
名字
电子邮件
斯科特
ABC@XYZ.com
上下快速移动
ABC@XYZ.com
特德
ABC@XYZ.com
斯科特
EDF@XYZ.com
斯科特
LMN@QRS.com
比尔
LMN@QRS.com
遗憾的是,这个问题的答案是DAX中没有办法引用相对于表中其他行的行位置。唯一的选择是使用一些列值进行排序
我们可以使用现有的两列表来获取每封电子邮件的最大或最小名。因此,我们可以编写如下计算表,T
是输入表,T Unique
是生成表
T Unique =
ADDCOLUMNS(
ALL( T[Email] ),
"Firstname",
CALCULATE(
MAX( T[Firstname ] )
)
)
但这不符合要求
为了获得所需的结果,我们需要向输入表中添加一列,带有索引或时间戳
在本例中,我在Power Query中使用以下M代码添加了一个索引列,它是通过引用原始表,然后单击Add column->Index column按钮自动生成的
let
Source = T,
#"Added Index" = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type)
in
#"Added Index"
因此,我得到了T索引
表
现在我们可以编写下面的计算表,使用新列检索每个电子邮件的第一行
T Index Unique =
ADDCOLUMNS(
ALL( 'T Index'[Email] ),
"Firstname",
VAR MinIndex =
CALCULATE(
MIN( 'T Index'[Index] )
)
RETURN
CALCULATE(
MAX( 'T Index'[Firstname ] ),
'T Index'[Index] = MinIndex
)
)
这将生成请求的表
在实际场景中,添加新列的最佳位置是直接添加到生成输入表的代码中。谢谢。向上投票。Pandas是一个与“drop_duplicates”和“subset”截然不同的简单版本。让我做一些测试,一旦测试,我会接受的。再次感谢您的回答。我希望这项工作不会有问题。如果你遇到任何困难,请告诉我。反馈有助于我提高我在DAX方面的经验:)人力资源管理。。。我将创建一个包含更多列的新问题。这对两个专栏来说效果不错,但假设我有20个专栏,我只想保留唯一电子邮件地址出现的第一个记录。查看此更新的问题查看更新的问题并更新了聪明的答案。谢谢你的反馈。