Power Query 合并列以删除空值

问题描述 投票:0回答:3

我是 Power Query 编辑器的新手,我在使用一条语句时遇到问题。

我需要一个 IF 嵌套语句,其中如果列包含 Null,则复制下一个;如果该列为空,则复制下一列。

到目前为止,我已经这样做了,但还没有成功。

#"Added Custom" = Table.AddColumn(
    #"Removed Other Columns", 
    "Custom", each 
        if [Date3] = null then [Date2] 
        else if [Date2] = null then [Date1] 
        else if [Date1] = null then [Date3] 
        else [Date3])

我得到了什么

日期1 日期2 日期3 定制
2023 年 4 月 18 日
2023 年 4 月 18 日 2023年2月18日 2023年2月18日
2023年2月18日 2023 年 1 月 18 日 2023 年 1 月 18 日
2023 年 1 月 18 日

我需要什么

日期1 日期2 日期3 定制
2023 年 4 月 18 日 2023 年 4 月 18 日
2023 年 4 月 18 日 2023年2月18日 2023年2月18日
2023年2月18日 2023 年 1 月 18 日 2023 年 1 月 18 日
2023 年 1 月 18 日 2023 年 1 月 18 日

我尝试了不同的 IF 解决方案,甚至使用了条件列,但这不起作用。请帮忙。谢谢!

excel editor powerquery m data-transform
3个回答
3
投票

使用合并运算符。例如

= Table.AddColumn(#"Removed Other Columns", "Custom", each [Date3] ?? [Date2] ?? [Date1])

https://gorilla.bi/power-query/coalesce/


1
投票

请注意,如果您想在问题中显示降价表,请确保前后都有空行,并且 PQ 中的 Null 为空。

嵌套 if 的逻辑不起作用:“if [Date3] = null then [Date2]”停止剩余行的执行。

试试这个:

#"Added Custom" = Table.AddColumn(
    #"Changed Type", 
    "Custom", 
    each if [Date3] <> null then [Date3] 
         else if [Date2] <> null then [Date2] 
         else [Date1]
)


1
投票
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each 
        List.Last(List.RemoveNulls({[Date1],[Date2],[Date3]})), type date)

如果

Date
列的数量可能不同,还有其他方法。

结果

© www.soinside.com 2019 - 2024. All rights reserved.