You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DAX正则表达式提取ProductName列指定字符串片段?

用DAX正则表达式实现目标内容提取

可以用DAX的正则表达式函数(需Power BI Desktop 2021年7月及以上版本,或其他支持DAX正则的环境)实现你的需求。

需求修正说明

你描述的第二步“提取倒数第二个-之前的部分”和预期结果不符,结合原数据与目标输出,实际需要的是:

  1. 先移除最后一个-及之后的所有内容(比如去掉区域信息)
  2. 再提取处理后字符串中最后一个-之后的内容(对应原字符串倒数第二个-之后的规格信息)

分步实现方案

步骤1:清理最后一个-之后的内容

新建计算列,移除区域部分:

CleanedProduct = REGEX.REPLACE('你的表名'[ProductName], "\s*-\s*.+$", "")
  • 正则解释:\s*-\s*.+$ 匹配最后一个-(前后可能带空格)到字符串结尾的所有内容,替换为空。

步骤2:提取目标规格信息

基于清理后的列,提取最后一段规格:

ExtractedProduct = REGEX.EXTRACT('你的表名'[CleanedProduct], ".*-\s*(.+)$")
  • 正则解释:.*-\s*(.+)$ 匹配到最后一个-(前后可能带空格),捕获后面的所有内容作为结果。

一步到位的合并表达式

无需中间列,直接用一个表达式完成:

ExtractedProduct = 
VAR CleanedStr = REGEX.REPLACE('你的表名'[ProductName], "\s*-\s*.+$", "")
RETURN REGEX.EXTRACT(CleanedStr, ".*-\s*(.+)$")

结果验证

将表达式应用到你的原数据,会得到预期输出:

原ProductName提取结果
SQL Database Single Standard - S0 - DE West CentralS0
SQL Database Single Standard - 10 DTU - DE West Central10 DTU

注:你提供的预期结果中第二条为10,若需仅提取数字,可将第二步正则改为.*-\s*(\d+).+$,提取结果即为10。
| SQL Database Single Standard - S0 | S0 |
| SQL Database Single Premium - P4 - DE West Central | P4 |
| SQL Database Single General Purpose - Compute Gen5 - 1 vCore - US East | 1 vCore |

内容的提问来源于stack exchange,提问作者Francesco Mantovani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:50:18