2016-09-26 3 views
1

Есть ли способ заполнить таблицу на основе условия?Power Query Table.FillDown с условием

Образец моей таблицы ниже. Я хочу заполнить столбец «Дата» на основе столбца «Контракт». Например, если контракт не начинается с GB, затем заполняйте дату предыдущей строки, в противном случае оставьте пустым.

Contract Date  Role 
01F001  3/7/2016  A 
01F017  5/6/2016  A 
GB0007     B 
GB0007     B 
LBCA09  2/29/2016 A 
LBCA09     B 
LBCA09     B 
LBCA09     B 
LBCA12  2/25/2016 A 
LBCA12     B 

Вот окончательные данные я хочу

Contract Date Role 
01F001 3/7/2016 A 
01F017 5/6/2016 A 
GB0007    B 
GB0007    B 
LBCA09 2/29/2016 A 
LBCA09 2/29/2016 B 
LBCA09 2/29/2016 B 
LBCA09 2/29/2016 B 
LBCA12 2/25/2016 A 
LBCA12 2/25/2016 B 

Я пытался добавить, если заявление за пределами функции Table.Filldown но получил ошибку синтаксиса.

= if not Text.StartsWith([Contract],"GB") then Table.FillDown(#"Replaced Value",{"Date"}) 

Любая помощь приветствуется!

ответ

3

Вы можете выполнить это в несколько этапов.

  • Заполните вниз столбец "Дата"
  • Добавить условный столбец, основанный на не начиная с "GB" и захватить значение от "Дата"
  • Удалить "Дата" Колонка
  • Переименовать "Custom" Column К «Дате»
0

Вы можете использовать Table.Partition. Модификация этого сводится к более сложным ситуациям.

MyFunc = (_) => if Text.StartsWith(_, "GB") then 1 else 0, 
Partitioned = Table.Partition(YourTable, "Contract", 2, each MyFunc(_)), 
DownFilled = Table.FillDown(Partitioned{0}, {"Date"}), 
Result = Table.Combine({DownFilled, Partitioned{1}})