在DAX(不是powerquery)中,根据列删除重复项

斯科特·波士顿

在我的PowerBI桌面上,我具有从其他表格计算而来的表格,其结构如下:

输入表:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Firstname</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Scott</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Bob</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Ted</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Scott</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Scott</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Bill</td>
      <td>[email protected]</td>
    </tr>
  </tbody>
</table>

现在,我只想保留每个唯一电子邮件的第一条记录。使用DAX的预期输出表是:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Firstname</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Scott</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Scott</td>
      <td>[email protected]</td>
    </tr>
    <tr>
      <td>Scott</td>
      <td>[email protected]</td>
    </tr>
  </tbody>
</table>

我试图使用RANKX和FILTER,但没有成功。

血清素

可悲的是,该问题的答案是DAX中没有办法引用相对于表中其他行的行位置。唯一的选择是使用某些列值进行排序。

我们可以使用现有的两列表格来获取每封电子邮件的MAX或MIN名字。因此,我们可以编写一个如下所示的计算表,其中T输入表和T Unique生成表。

T Unique = 
ADDCOLUMNS(
    ALL( T[Email] ),
    "Firstname",
        CALCULATE(
            MAX( T[Firstname ] )
        )
)

独特的

但这不能满足要求。

为了获得期望的结果,我们需要在输入表中添加带有索引或时间戳的列。

对于此示例,我在Power Query中使用以下M代码添加了索引列,该列是通过引用原始表然后单击添加列->索引列按钮自动生成的

let
    Source = T,
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type)
in
    #"Added Index"

于是我得到了T 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
            )
)

生成请求的表

T索引唯一表

在实际情况下,添加新列的最佳位置是直接在生成输入表的代码中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据条件删除列中的重复项

来自分类Dev

根据多个字段或列从列表中删除重复项

来自分类Dev

根据列R中的重复项删除行

来自分类Dev

根据列值删除行中的重复项

来自分类Dev

分组值并根据Pandas中的列删除分组的重复项

来自分类Dev

熊猫-根据特定列中的值删除重复项

来自分类Dev

根据其他列中的值删除重复项

来自分类Dev

根据列值删除数组中的重复项

来自分类Dev

根据R中的两列删除重复项

来自分类Dev

从一列而不是行中删除重复项

来自分类Dev

根据现有列删除重复项

来自分类Dev

根据两列的条件删除重复项

来自分类Dev

根据特定列值删除重复项

来自分类Dev

根据第二列删除重复项

来自分类Dev

从列中删除重复项

来自分类Dev

根据条件删除集合中的重复项

来自分类Dev

根据Microsoft Excel中A列中的值从B列中删除重复项

来自分类Dev

根据层次结构中的另一列删除一列中的重复项

来自分类Dev

根据另一列删除一列中的重复项

来自分类Dev

根据列中的重复项选择行

来自分类Dev

根据非重复字段从表中删除重复项

来自分类Dev

根据RDD / Spark DataFrame中的特定列从行中删除重复项

来自分类Dev

根据列中的最大值有条件地删除Excel中的重复项

来自分类Dev

R-根据另一列中的重复项和值删除行

来自分类Dev

删除重复项,但根据不同列中的排序保留一个

来自分类Dev

根据另一个列值在Excel中删除重复项

来自分类Dev

您如何根据多个列的条件汇总熊猫中的行并删除重复项?

来自分类Dev

根据两列的值删除数据帧熊猫中的重复项

来自分类Dev

根据另一列中的值从数据集中删除重复项

Related 相关文章

热门标签

归档