Power Query Table.FillDown with condition

时间:2016-09-26 18:33:47

标签: excel powerbi powerquery

有没有办法根据条件填写表格?

下表中的一个示例。我想根据合同列填写Date列。例如,如果合约不以GB开头,则填写上一行的日期,否则留空。

function hideDialog(widgetVar) {
    try {
        PF(widgetVar).hide();
    }
    catch (error) {
        // console.log("Caught error: " + error);
    }
}

这是我想要的最终数据

 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

我试图在Table.Filldown函数之外添加一个if语句,但是语法错误。

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

感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

您可以通过多个步骤完成此操作。

  • 填写“日期”栏
  • 添加基于不以“GB”开头的条件列并从“日期”中获取值
  • 删除“日期”列
  • 将“自定义”列重命名为“日期”

答案 1 :(得分: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}})