Power BI-基于条件从文本字符串中提取数字 [英] Power BI - extract number from text string based on conditions

查看:5
本文介绍了Power BI-基于条件从文本字符串中提取数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经做了广泛的搜索,我不相信这是重复的,但肯定是之前问题的延伸和延伸。我正在尝试从Power BI函数中的文本字符串中提取数字。我已经使用以下代码成功地将字符串中的数字提取到一个值中:

Text.Combine(
  List.RemoveNulls(
    List.Transform(
      Text.ToList([string_col]),
    each if Value.Is(Value.FromText(_), type number) 
    then _ else null)
    )
  )

当我感兴趣的数字是字符串中的唯一数字时,使用此代码效果很好,例如:

"打开1234567评论"结果为1234567

但是,当字符串中出现多个不同的数字时,我无法解析提取我的数字,例如:

"在1234567评论中50告诉我这是重复的"结果是123456750

我需要做的是拉出满足条件的字符串中的数字(在我的例子中是一个)。对于我的特定问题,我需要提取的数字将始终是字符串中唯一的7位数字,所以我觉得这应该是一个更直接的答案?

有没有办法使用我提供的函数或类似的方法只提取7位数字?如果我走错了路,谁能带我走上正确的道路?

一如既往,我们非常感谢社区的帮助。

迪德里希

推荐答案

首先,您可以使用Text.Select函数提取所有数字。

FirstStep =
Table.AddColumn(Source, "MyNumberColumn", each Text.Select([MyStringColumn], {"0".."9"}))

我在埃里克·斯文森的这篇博客文章中找到了这个解决方案: https://eriksvensen.wordpress.com/2018/03/06/extraction-of-number-or-text-from-a-column-with-both-text-and-number-powerquery-powerbi

根据您的特定要求,您可能需要将NumberColumn作为文本列输入:

FirstStep =
Table.AddColumn(
    Source,
    "MyTempNumberColumn",
    each Text.Select([MyStringColumn], {"0".."9"}),
    type text)

从那里,根据结果的长度,您可以测试原始字符串中是否存在七个字符的序列,次数不限,直到您到达仅由数字组成的新序列的末尾。

SecondStep=
Table.AddColumn("My7numbers",
    each if Text.Length([MyNumberColumn]) = 7
        then [MyTempNumberColumn]
    else if 
       Text.Contains([MyStringColumn],
            Text.Range([MyTempNumberColumn], 0, 7))
    then
       Text.Range([MyTempNumberColumn], 0, 7))
    else if
       Text.Contains([MyStringColumn],
           Text.Range([MyTempNumberColumn], 1, 7)
    then
       Text.Range([MyTempNumberColumn], 1, 7))

根据您可以获得的数字数量,可能值得尝试使用List。在一个函数中生成一个列表,该列表将提供来自[MyTempNumberColumn]的每7位数序列的列表,无论其长度如何。

https://docs.microsoft.com/en-us/powerquery-m/list-generate

这篇关于Power BI-基于条件从文本字符串中提取数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆