美文网首页
Power Query中提取判断符的几个方法

Power Query中提取判断符的几个方法

作者: Data_Skill | 来源:发表于2019-12-17 21:51 被阅读0次

    (一) 分别提取后进行判断

    已经知道比较符有6种,所以首先要确定的就是参数使用的是哪一个。我们判断是单字符还是双字符判断符,我们通过代码来生成一个单双字符的记录格式数据,当然前提还要有一个容错机制,也就是参数为空值的处理。

    判断符提取=
    if 表达式=null
    then 表达式
    else
        [
        双符号=
        List.Select(List.Transform({">=","<=","<>"},
                                   (x)=>if Text.Contains(表达式,x) 
                                        then x
                                        else null
                                   ), 
                    (a)=> a<>null
                    ){0},
        单符号=
        List.Select(List.Transform({"=","<",">"},
                                   (x)=>if Text.Contains(表达式,x) 
                                        then x
                                        else null),
                    (a)=> a<>null
                    ){0}
        ],
    

    这里生成了一个记录的格式,如果判断符号是双字符,则双字符判断和单字符判断都会产生内容,如图所示(假定判断符是>=);如果判断符号是单字符,则双字符判断会返回错误值,如图所示(假定判断符是>)。

    判断符为“>=”时结果

    [图片上传失败...(image-9ef0e1-1576218107088)]

    判断符为“>”时结果

    [图片上传失败...(image-5ee9cc-1576218107088)]

    接着就相对比较容易了,只需要确定双符号是否存在,如果存在就以双字符作为判断符,如果不存在则以单字符作为判断符,代码如下。

    try [判断符提取][双字符] otherwise [判断符提取][单字符]
    

    (二) 提取单独的表达式后进行合并

    既然是判断表达式,实际上也就只有“=”,“>”,“<”组合而成,所以我们只需要提取这3种,然后组合合并即可。

    Text.Combine(
                List.Transform({"<",">","="},
                               (x)=>List.Select(Text.ToList(表达式),
                                               (y)=>y=x
                                               )
                              )
                )
    

    备注:请注意循环时表达式的顺序,“=”需放在循环的最后,"<"需放在">"前面。

    (三) 通过表达式的位置来进行提取

    Text.Middle(表达式,
                0,
                List.Max(List.Transform({"=",">","<"},
                                        each Text.PositionOf(表达式,_)
                                        )
                         )+1
                )
    

    相关文章

      网友评论

          本文标题:Power Query中提取判断符的几个方法

          本文链接:https://www.haomeiwen.com/subject/rinmwctx.html