Строки, отфильтрованные Power Query на основе значения

У меня есть два источника — основной список (Источник1) и еженедельное обновление (Источник2). Я хочу проверить идентификационные номера в Source2

  1. фильтровать идентификаторы, которых нет в Source1 и

  2. убедитесь, что новые идентификаторы в Source2 не содержат строку «Закрыто» в столбце «Статус» в Source2.

Я хочу, чтобы основной список в основном включал все новые идентификаторы, добавленные в список еженедельных обновлений, и не включал в себя какие-либо идентификаторы, которые были закрыты.

let
  // Merge Source1 and Source2 (use a Full Outer Join to get all rows from both tables)
  MergedTables = Table.NestedJoin(Source1, {"ID"}, Source2, {"ID"}, JoinKind.FullOuter),

  // Expand Source2 columns
  ExpandedSource2Data = Table.ExpandTableColumn(#"MergedTables", 
    {{"Title",each Text.From(_)}, {"Problem Description",each Text.From(_)}, {"Originator",each Text.From(_)}, {"WOA/Event/Dev Number",each Text.From(_)}, {"Status", each Text.From(_)}, {"Impacted Subsystems", each Text.From(_)}, {"Date Entered", each Text.From(_)}, {"Date Closed", each Text.From(_)}, {"Problem Date",each Text.From(_)}, {"Disposition to Close", each Text.From(_)}, {"Root Cause of the Problem",each Text.From(_)}, {"Final Disposition", each Text.From(_)}}, 
    {{"Source2_Title",each Text.From(_)}, {"Source2_Problem Description",each Text.From(_)}, {"Source2_Originator",each Text.From(_)}, {"Source2_WOA/Event/Dev Number",each Text.From(_)}, {"Source2_Status",each Text.From(_)}, {"Source2_Impacted Subsystems",each Text.From(_)}, {"Source2_Date Entered",each Text.From(_)}, {"Source2_Date Closed",each Text.From(_)}, {"Source2_Problem Date",each Text.From(_)}, {"Source2_Disposition to Close",each Text.From(_)}, {"Source2_Root Cause of the Problem",each Text.From(_)}, {"Source2_Final Disposition", each Text.From(_)}}), 

  // Filter rows where ID is in Source2 but not in Source1 and Status in Source2 is not 'Closed'
  FilteredRows = Table.SelectRows(#"ExpandedSource2Data", each ([ID] <> null and [Source2][ID] <> null and [Source2][Status] <> "PR Closed")),

  // Combine Source1 and FilteredRows
  CombinedTables = Table.Combine({Source1, FilteredRows}),
  #"Removed columns" = Table.RemoveColumns(CombinedTables, {"Source2_Title", "Source2_Problem Description", "Source2_Originator", "Source2_WOA/Event/Dev Number", "Source2_Status", "Source2_Impacted Subsystems", "Source2_Date Entered", "Source2_Date Closed", "Source2_Problem Date", "Source2_Disposition to Close", "Source2_Root Cause of the Problem", "Source2_Final Disposition"})

in
  #"Removed columns"

Я добавил each Text.From(_), потому что он продолжает выдавать мне сообщение об ошибке: [Expression.Error] Мы не можем преобразовать значение 3 в тип Text.... хотя это все еще не решено.

Пример данных: Источник1/основной список:


| ID  | Title    | Description | Conclusion    | Status              |
|-----|----------|-------------|---------------|---------------------|
| 120 | Title120 | Desc120     | Conclusion120 | 120 Closed          |
| 137 | Title137 | Desc137     | Conclusion137 | 137 Open            |
| 142 | Title142 | Desc142     | Conclusion142 | 142 Fields Complete |

Source2/еженедельный список обновлений:

| ID  | Title    | Description | Conclusion    | Status              |
|-----|----------|-------------|---------------|---------------------|
| 120 | Title120 | Desc120     | Conclusion120 | 120 Closed          |
| 137 | Title137 | Desc137     | Conclusion137 | 137 Open            |
| 142 | Title142 | Desc142     | Conclusion142 | 142 Fields Complete |
| 001 | Title001 | Desc001     | Conclusion001 | 001 Closed          |
| 006 | Title006 | Desc006     | Conclusion006 | 006 ID Closed       |
| 600 | Title600 | Desc600     | Conclusion600 | 600 NEW             |
| 700 | Title700 | Desc700     | Conclusion700 | 700 Open            |

Желаемый объединенный вывод, в котором в главный список добавляются только новые идентификаторы, но не все, что было закрыто некоторое время назад и не было в основном:

| ID  | Title    | Description | Conclusion    | Status              |
|-----|----------|-------------|---------------|---------------------|
| 120 | Title120 | Desc120     | Conclusion120 | 120 Closed          |
| 137 | Title137 | Desc137     | Conclusion137 | 137 Open            |
| 142 | Title142 | Desc142     | Conclusion142 | 142 Fields Complete |
| 600 | Title600 | Desc600     | Conclusion600 | 600 NEW             |
| 700 | Title700 | Desc700     | Conclusion700 | 700 Open            |

Не могли бы вы предоставить примеры данных и ожидаемый результат?

Ryan 27.08.2024 02:45

и когда вы предоставляете образец данных, предоставьте его КАК ТЕКСТ, который можно скопировать/вставить, а не в виде снимка экрана. Вы можете использовать Генератор таблиц Markdown, чтобы отформатировать текст в читаемом виде.

Ron Rosenfeld 27.08.2024 03:12

Добавлены примеры таблиц для ввода и желаемого вывода!

Brain_overflowed 27.08.2024 17:50
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
//code for Table1 that merges in Table2 where ID is new and Table2.Status does not contain Closed
let Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Merged Queries" = Table.NestedJoin(Source, {"ID"},Table.SelectRows(Table2, each [Status]=null or not Text.Contains([Status],"Closed")), {"ID"}, "Table2", JoinKind.RightAnti),
#"Removed Other Columns" = Table.SelectColumns(#"Merged Queries",{"Table2"}),
ColumnsToExpand  =List.Distinct(List.Combine(List.Transform(Table.Column(#"Removed Other Columns", "Table2"), each if _ is table then Table.ColumnNames(_) else {}))),
#"Expanded Table" = Source & Table.ExpandTableColumn(#"Removed Other Columns", "Table2", ColumnsToExpand, ColumnsToExpand)
in #"Expanded Table"

Это дает мне ошибку, потому что я думаю, что когда он пытается расширить столбцы, существуют столбцы с таким же именем. «[Выражение.Ошибка] Поле «Заголовок» уже существует в записи».

Brain_overflowed 27.08.2024 17:44

Моя вина. Отредактировано и исправлено. Следует удалить все остальные столбцы, а не удалять определенные столбцы. Отсюда важность выборочных данных.

horseyride 27.08.2024 18:23

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