从数据到信息
从信息到洞察

文本函数

了解文本函数

DAX 中几乎所有可用的文本函数都与Excel类似, 只有少数例外:它们是CONCATENATE, EXACT,FIND, FIXED, FORMAT, LEFT, LEN, LOWER, MID, REPLACE, REPT, RIGHT, SEARCH, SUBSTITUTE, TRIM, UPPER和 VALUE. 这些函数对于操作文本和从包含多个值的字符串中提取数据非常有用。

实例

例如,下图中,你可以看到一个从字符串中提取名和姓的示例,该字符串包含用逗号分隔的值,中间是标题,我们希望将其删除。

使用文本函数提取姓名的示例

我们从计算两个逗号的位置开始,然后使用代表位置的数字提取文本的目标部分。SimpleConversion列使用的公式在字符串少于两个逗号时可能会返回错误值 (如果压根没有逗号,则会引发错误),而FirstLastName列使用了一个更复杂的表达式,不会在缺少逗号的情况下失败:

Comma1 = IFERROR ( FIND ( ",", People[Name] ), BLANK ( ) )

Comma2 = IFERROR ( FIND ( ",", People[Name], People[Comma1] +1 ), BLANK ( ) )

SimpleConversion =
MID (
    People[Name],
    People[Comma2] + 1,
    LEN ( People[Name] )
) & " "
    & LEFT (
        People[Name],
        People[Comma1] - 1
    )

FirstLastName =
TRIM (
    MID (
        People[Name],
        IF (
            ISNUMBER ( People[Comma2] ),
            People[Comma2],
            People[Comma1]
        ) + 1,
        LEN ( People[Name] )
    )
)
    & IF (
        ISNUMBER ( People[Comma1] ),
        " "
            & LEFT (
                People[Name],
                People[Comma1] - 1
            ),
        ""
    )

如你所见,FirstLastName列是由一个很长的DAX表达式定义的,但是你必须使用它来避免可能的错误,因为如果单个值产生错误,就会传递到整个列。

虽然DAX具备提取从文本中提取数据的能力,但建议你尽量在编辑查询阶段或数据库中提前完成类似操作,避免在模型中进行数据清洗。
原创内容 转载请联系作者授权:PowerBI极客 » 文本函数

2
说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
1 评论数
1 被回复的评论
1 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
Leviyang123
成员
Leviyang123

有实例的练手文件吗?