具有 null(空白)值的 Power Query 筛选器
Power Query Filter with null (blank) values
我对基于自定义 excel 电池参数的功率查询和过滤有疑问
现在只要 excel
中的每个单元格中都有一个值,代码就可以正常工作
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"INC", Int64.Type}, {"Datum", type datetime}, {"Service", type text}, {"Owninggroup", type text}}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Geänderter Typ", each [Datum] > Tabelle3),
#"Gefilterte Zeilen1" = Table.SelectRows(#"Gefilterte Zeilen", each Text.StartsWith([Service], Tabelle4)),
#"Gefilterte Zeilen2" = Table.SelectRows(#"Gefilterte Zeilen1", each Text.Contains([Owninggroup], Tabelle5))
in
#"Gefilterte Zeilen2"
现在,如果任何 table 中有一个空白值,它就不起作用
目标是当存在空值时,它应该在此之前进行过滤,我的代码如下所示:
= Table.SelectRows(#"Gefilterte Zeilen1", each if (Text.Contains([Owninggroup], Tabelle5)) = null then #"Gefilterte Zeilen1" else Text.Contains([Owninggroup], Tabelle5))
目前我收到无法将 null 转换为文本的错误,但我不确定为什么。
任何帮助如何实现这个都会有很大帮助
编辑:澄清每个 table 的含义以及它从
中提取的原始数据
表 3 表 4 和表 5
原始数据
由于您没有展示如何将 Tabelle3 加载到 Tabelle5,我猜您对单个值进行了深入分析。在这种情况下,您只需检查该值是否为空,如果是,则不进行过滤。代码看起来像这样
#"Gefilterte Zeilen" = if Tabelle3 is null then #"Geänderter Typ" else Table.SelectRows(#"Geänderter Typ", each [Datum] > Tabelle3),
完整的代码就是这样
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"INC", Int64.Type}, {"Datum", type datetime}, {"Service", type text}, {"Owninggroup", type text}}),
#"Gefilterte Zeilen" = if Tabelle3 is null then #"Geänderter Typ" else Table.SelectRows(#"Geänderter Typ", each [Datum] > Tabelle3),
#"Gefilterte Zeilen1" = if Tabelle4 is null then #"Gefilterte Zeilen" else Table.SelectRows(#"Gefilterte Zeilen", each Text.StartsWith([Service], Tabelle4)),
#"Gefilterte Zeilen2" = if Tabelle5 is null then #"Gefilterte Zeilen1" else Table.SelectRows(#"Gefilterte Zeilen1", each Text.Contains([Owninggroup], Tabelle5))
in
#"Gefilterte Zeilen2"
您的方法有效但不寻常。请看看 Building a parametertable 如何以不同的方式做到这一点。
我对基于自定义 excel 电池参数的功率查询和过滤有疑问
现在只要 excel
中的每个单元格中都有一个值,代码就可以正常工作let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"INC", Int64.Type}, {"Datum", type datetime}, {"Service", type text}, {"Owninggroup", type text}}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Geänderter Typ", each [Datum] > Tabelle3),
#"Gefilterte Zeilen1" = Table.SelectRows(#"Gefilterte Zeilen", each Text.StartsWith([Service], Tabelle4)),
#"Gefilterte Zeilen2" = Table.SelectRows(#"Gefilterte Zeilen1", each Text.Contains([Owninggroup], Tabelle5))
in
#"Gefilterte Zeilen2"
现在,如果任何 table 中有一个空白值,它就不起作用
目标是当存在空值时,它应该在此之前进行过滤,我的代码如下所示:
= Table.SelectRows(#"Gefilterte Zeilen1", each if (Text.Contains([Owninggroup], Tabelle5)) = null then #"Gefilterte Zeilen1" else Text.Contains([Owninggroup], Tabelle5))
目前我收到无法将 null 转换为文本的错误,但我不确定为什么。
任何帮助如何实现这个都会有很大帮助
编辑:澄清每个 table 的含义以及它从
中提取的原始数据表 3 表 4 和表 5
原始数据
由于您没有展示如何将 Tabelle3 加载到 Tabelle5,我猜您对单个值进行了深入分析。在这种情况下,您只需检查该值是否为空,如果是,则不进行过滤。代码看起来像这样
#"Gefilterte Zeilen" = if Tabelle3 is null then #"Geänderter Typ" else Table.SelectRows(#"Geänderter Typ", each [Datum] > Tabelle3),
完整的代码就是这样
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"INC", Int64.Type}, {"Datum", type datetime}, {"Service", type text}, {"Owninggroup", type text}}),
#"Gefilterte Zeilen" = if Tabelle3 is null then #"Geänderter Typ" else Table.SelectRows(#"Geänderter Typ", each [Datum] > Tabelle3),
#"Gefilterte Zeilen1" = if Tabelle4 is null then #"Gefilterte Zeilen" else Table.SelectRows(#"Gefilterte Zeilen", each Text.StartsWith([Service], Tabelle4)),
#"Gefilterte Zeilen2" = if Tabelle5 is null then #"Gefilterte Zeilen1" else Table.SelectRows(#"Gefilterte Zeilen1", each Text.Contains([Owninggroup], Tabelle5))
in
#"Gefilterte Zeilen2"
您的方法有效但不寻常。请看看 Building a parametertable 如何以不同的方式做到这一点。