Power BI-基于条件从文本字符串中提取数字 [英] Power BI - extract number from text string based on conditions
问题描述
我已经做了广泛的搜索,我不相信这是重复的,但肯定是之前问题的延伸和延伸。我正在尝试从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屋!