MMS*_*MMS 3 m dax powerquery powerbi
我有一个要求,我必须循环遍历文本字段中的每个字符
例如:
| 输入 | 预期输出 |
|---|---|
| a#123456;12341 | 123456;12341 |
| a123456 12341bd | 123456;12341 |
| a2017d 12341ds | 12341 |
| a123456/12341bd | 123456;12341 |
| 不适用 | 无效的 |
基本上我在这里清理我的数据:
注意:-我的步骤可能不正确,但我的预期输出是我希望从数据中获得的结果。
我们如何使用 Power BI 中的 DAX 或查询编辑器来做到这一点?
我将分两步进行尝试。
首先,让我们删除所有不是数字或分隔符的内容。我们可以创建一个自定义列来使用以下公式执行此操作(假设您的起始列名为Raw):
Text.Remove([Raw], List.Transform({33..43,60..255}, each Character.FromNumber(_)))
Run Code Online (Sandbox Code Playgroud)
这使用Windows-1252 字符编号,但您可以使用该函数编写一个大的字符列表来删除Text.Remove。
这个自定义列现在看起来像这样:
Custom
123456; 12341
123456 12341
2017 12341
123456/12341
/
Run Code Online (Sandbox Code Playgroud)
从这里开始,计划是使用每个分隔符将其分割并过滤掉太短的字符串。
该Text.SplitAny函数允许我们指定多个分隔符。例如,公式Text.SplitAny("1;23 4.5-6/ 7:8,9", " ,-./:;")将返回{"1","23","4","5","6","","7","8","9"}.
一旦我们有了子字符串列表,我们就可以过滤掉不需要的子字符串List.Select,然后使用 . 将它们从子字符串列表连接成单个字符串Text.Combine。
把所有这些放在一起,我们有这个公式
Text.Combine(List.Select(Text.SplitAny([Custom], " ,-./:;"), each Text.Length(_) > 4), ";")
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以将其全部分解为一个步骤:
= Table.AddColumn(#"Previous Step", "Clean",
each Text.Combine(
List.Select(
Text.SplitAny(
Text.Remove(
[Raw],
List.Transform(
{33..43,60..255},
each Character.FromNumber(_)
)
),
" ,-./:;"
),
each Text.Length(_) > 4),
";"
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2255 次 |
| 最近记录: |