У меня есть два источника — основной список (Источник1) и еженедельное обновление (Источник2). Я хочу проверить идентификационные номера в Source2
фильтровать идентификаторы, которых нет в Source1 и
убедитесь, что новые идентификаторы в 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 |
и когда вы предоставляете образец данных, предоставьте его КАК ТЕКСТ, который можно скопировать/вставить, а не в виде снимка экрана. Вы можете использовать Генератор таблиц Markdown, чтобы отформатировать текст в читаемом виде.
Добавлены примеры таблиц для ввода и желаемого вывода!
//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"
Это дает мне ошибку, потому что я думаю, что когда он пытается расширить столбцы, существуют столбцы с таким же именем. «[Выражение.Ошибка] Поле «Заголовок» уже существует в записи».
Моя вина. Отредактировано и исправлено. Следует удалить все остальные столбцы, а не удалять определенные столбцы. Отсюда важность выборочных данных.
Не могли бы вы предоставить примеры данных и ожидаемый результат?