人生没有彩排
每一天都是现场直播

XF.Str.SplitAny

语法作用

将指定文本的每个字符作为分隔符来拆分字符串,返回单列的表。

XF.Str.SplitAny(str:string,delimiter:string)

函数代码

该函数的实现代码如下:

/// 将指定文本的每个字符作为分隔符来拆分字符串,返回单列的表
FUNCTION XF.Str.SplitAny=(str:string,delimiter:string)=>
    VAR CurText = str
    VAR DelimiterPositions = 
        SUMMARIZE(
            GENERATE(
                DISTINCT(
                    SELECTCOLUMNS(
                        GENERATESERIES(1,LEN(delimiter)),
                        "delimiterstr",MID(delimiter,[Value],1)
                    )
                ),
                DISTINCT(
                    FILTER(
                        SELECTCOLUMNS(
                            GENERATESERIES(1,LEN(CurText)),
                            "Position",FIND([delimiterstr],CurText,[Value],BLANK())
                        ),
                        [Position]<>BLANK()
                    )
                )
            ),
            [Position]
        )
    VAR SplitPositions =
        UNION(
            SELECTCOLUMNS({0},"Position",[Value]),
            DelimiterPositions,
            {LEN(CurText)+1}
        )
    VAR SplitPosition_AddIndex = ADDCOLUMNS(SplitPositions,"Index",RANKX(SplitPositions,[Position],,1))
    RETURN
    SELECTCOLUMNS(
        GENERATESERIES(1,COUNTROWS(SplitPositions)-1),
        "SubStr",
            VAR Start_ = SUMMARIZE(FILTER(SplitPosition_AddIndex,[Index]=[Value]),[Position])+1
            VAR End_ = SUMMARIZE(FILTER(SplitPosition_AddIndex,[Index]=[Value]+1),[Position])
            RETURN
            MID(CurText,Start_,End_-Start_)
    )

应用示例

使用 "|" 与 "-" 拆分字符串:"Name|Address-PhoneNumber"。

XF.Str.SplitAny("Name|Address-PhoneNumber","-|")

结果如下:

SubStr
Name
Address
PhoneNumber
赞(0) 打赏
版权声明:本文为夕枫的原创文章,著作权归作者所有,未经允许不得转载
文章名称:《PowerBI DAX自定义函数-XF.Str.SplitAny》
文章链接:https://www.ximaple.com/posts/1360.html
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

Operation don't support