Запрос мощности: удаление строки выше при определенных условиях «_»

#indexing #count #powerbi #row #powerquery

#индексирование #количество #powerbi #строка #powerquery

Вопрос:

У меня есть следующее:

   |---------------------|------------------|------------------|    
  |       ID            |   Geography      |       Count      |
  |---------------------|------------------|------------------|
  |    AB0000           |      ItalyZ      |      435         |
  |---------------------|------------------|------------------|
  |    ZB4041           |      ItalyB      |       5435       |
  |---------------------|------------------|------------------|
  |    BC0000           |      UKY         |        543       |
  |---------------------|------------------|------------------|
  |    BC0000_1         |      UKM         |        543       |
  |---------------------|------------------|------------------|
  |    BC0000_2         |      UKM         |     545543       |
  |---------------------|------------------|------------------|
  |    CC0000           |      UKY         |      54433       |
  |---------------------|------------------|------------------|
  |    CC0000_1         |      UKM         |      5543        |
  |---------------------|------------------|------------------|
  |    CC0000_2         |      UKM         |      456543      |
  |---------------------|------------------|------------------|
  

Я хотел бы получить следующее (без повреждения других столбцов, таких как второй столбец):

   |---------------------|------------------|------------------|    
  |       ID            |   Geography      |       Count      |
  |---------------------|------------------|------------------|
  |    AB0000           |      ItalyZ      |      435         |
  |---------------------|------------------|------------------|
  |    ZB4041           |      ItalyB      |       5435       |
  |---------------------|------------------|------------------|
  |    BC0000_1         |      UKM         |        543       |
  |---------------------|------------------|------------------|
  |    BC0000_2         |      UKM         |     545543       |
  |---------------------|------------------|------------------|
  |    CC0000_1         |      UKM         |      5543        |
  |---------------------|------------------|------------------|
  |    CC0000_2         |      UKM         |      456543      |
  |---------------------|------------------|------------------|
  

Поэтому всякий раз, когда у меня есть идентификатор с «_» в конце, я хотел бы подавить строку выше.

Однако может быть несколько «_», за каждым из которых следует число.

Вы знаете, как я мог бы это сделать?

Я безуспешно пробовал по-разному, от группировки до разделения.

Ответ №1:

Добавьте столбец… столбец индекса…

Добавьте столбец… пользовательский столбец с формулой

 = try Text.Contains(#"Added Index"{[Index] 1}[ID],[ID]amp;"_") otherwise false
  

это проверяет наличие следующей строки с тем же идентификатором, к которой впоследствии добавляется _

Filter =False для удаления лишних строк

Удалите лишние столбцы

Пример кода

 let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each try Text.Contains(#"Added Index"{[Index] 1}[ID],[ID]amp;"_") otherwise false),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = false)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Index", "Custom"})
in #"Removed Columns"
  

Комментарии:

1. Да, это то, что я имел в виду. Везде, где есть «_», я хочу стереть строку выше.

2. ХОРОШО! Я попробовал! Это работает! Но я не знаю, почему самая последняя строка равна 0? У меня есть «True» и «falses», а также «0» в самом конце. Почему это так?

3. Поскольку в нижней строке вы не можете найти следующую строку вниз, это создает ошибку и попытку… В противном случае … преобразует ошибку в ноль

4. Но я понимаю, что есть проблема. Единственное, что я хочу подавить, это строка «выше» «. И сохраните все остальные » » ниже. Но в этом случае это подавляет не только первую строку, но и все остальные «_» ниже….

5. он принимает поле [ID] текущей строки 1 # «Добавленный индекс» {[Index] 1} [ID] и выполняет поиск [ID] из текущей строки с _, добавленным в конец [ID] amp; «_»