Последующие дубликаты Dax Drop

Аналогично вопросу, заданному здесь,

Учитывая эту таблицу, я хочу сохранить только записи, в которых электронное письмо появляется первым.

электронная почта имя Фамилия Адрес Город Почтовый индекс [email protected] Скотт Джонсон А Z 1111 [email protected] Счет Джонсон Б Д 2222 [email protected] Тед Смит С Икс 3333 [email protected] Стив Уильямс Д Вт 4444 [email protected] Сэм Сэмфорд Е U 5555 [email protected] Дэйвид Билз Ф В 6666 [email protected] Стивен Джексон г Т 7777 [email protected] Семь Альбертс ЧАС С 8888

<table border = "1" class = "dataframe">
  <thead>
    <tr style = "text-align: right;">
      <th>email</th>
      <th>firstname</th>
      <th>Lastname</th>
      <th>Address</th>
      <th>City</th>
      <th>Zip</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>[email protected]</td>
      <td>Scott</td>
      <td>Johnson</td>
      <td>A</td>
      <td>Z</td>
      <td>1111</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Bill</td>
      <td>Johnson</td>
      <td>B</td>
      <td>Y</td>
      <td>2222</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Ted</td>
      <td>Smith</td>
      <td>C</td>
      <td>X</td>
      <td>3333</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Steve</td>
      <td>Williams</td>
      <td>D</td>
      <td>W</td>
      <td>4444</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Sam</td>
      <td>Samford</td>
      <td>E</td>
      <td>U</td>
      <td>5555</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>David</td>
      <td>Beals</td>
      <td>F</td>
      <td>V</td>
      <td>6666</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Stephen</td>
      <td>Jackson</td>
      <td>G</td>
      <td>T</td>
      <td>7777</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Seven</td>
      <td>Alberts</td>
      <td>H</td>
      <td>S</td>
      <td>8888</td>
    </tr>
  </tbody>
</table>

Ожидаемая выходная таблица:

электронная почта имя Фамилия Адрес Город Почтовый индекс [email protected] Скотт Джонсон А Z 1111 [email protected] Стив Уильямс Д Вт 4444 [email protected] Сэм Сэмфорд Е U 5555 [email protected] Семь Альбертс ЧАС С 8888

<table border = "1" class = "dataframe">
  <thead>
    <tr style = "text-align: right;">
      <th>email</th>
      <th>firstname</th>
      <th>Lastname</th>
      <th>Address</th>
      <th>City</th>
      <th>Zip</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>[email protected]</td>
      <td>Scott</td>
      <td>Johnson</td>
      <td>A</td>
      <td>Z</td>
      <td>1111</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Steve</td>
      <td>Williams</td>
      <td>D</td>
      <td>W</td>
      <td>4444</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Sam</td>
      <td>Samford</td>
      <td>E</td>
      <td>U</td>
      <td>5555</td>
    </tr>
    <tr>
      <td>[email protected]</td>
      <td>Seven</td>
      <td>Alberts</td>
      <td>H</td>
      <td>S</td>
      <td>8888</td>
    </tr>
  </tbody>
</table>
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В DAX нет внутреннего порядка таблицы, поэтому, чтобы взять первую строку, вам нужно добавить столбец индекса или каким-то образом определить порядок в таблице.

Для этого ответа я предполагаю, что вы каким-то образом добавили столбец индекса (в редакторе запросов или с помощью вычисляемого столбца DAX).

Вы можете создать отфильтрованную таблицу следующим образом:

FilteredTable1 =
FILTER (
    Table1,
    Table1[Index]
        = CALCULATE ( MIN ( Table1[Index] ), ALLEXCEPT ( Table1, Table1[email] ) )
)

Для каждой строки в Table1 проверяется, является ли индекс минимальным для всех строк с одним и тем же адресом электронной почты.

Предполагая, что мы добавили столбец Index с неповторяющимися значениями, можно уменьшить количество переходов контекста до одного на электронное письмо, подготовив таблицу Indexes, содержащую индексы, которые нужно выбрать, а затем применить эту таблицу Indexes в качестве фильтра с помощью TREATAS.

T Index Unique = 
VAR Indexes =
    SELECTCOLUMNS(
        ALL( 'T Index'[Email] ),
        "MinIndex", CALCULATE( MIN( 'T Index'[Index] ) )
    )
RETURN
    CALCULATETABLE( 'T Index', TREATAS( Indexes, 'T Index'[Index] ) )

Если вместо этого у нас есть неуникальный столбец для разных электронных писем, но уникальный для каждого электронного письма, например, временная метка, мы можем подготовить таблицу фильтров, содержащую электронное письмо и временную метку.

Например, с таблицей T Date, подобной следующей

Расчетная таблица становится

T Date Unique = 
VAR EmailDate =
    ADDCOLUMNS(
        ALL( 'T Date'[Email] ),
        "MinDate", CALCULATE( MIN( 'T Date'[Date] ) )
    )
RETURN
    CALCULATETABLE( 'T Date', TREATAS( EmailDate, 'T Date'[Email], 'T Date'[Date] ) )

Другие вопросы по теме