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

如何用M代码移除邮箱列中匹配唯一ID列的前缀内容?

用M代码清理邮箱列中匹配的唯一ID前缀

实现思路

核心逻辑很直接:逐行检查邮箱地址是否以对应的唯一ID作为前缀,匹配上就删掉该前缀,没匹配上就保留原邮箱。因为唯一ID长度不固定,必须用动态判断+截取的方式,不能硬编码字符数。

M代码实现

假设你的数据源表名为Source,直接用以下代码添加清理后的邮箱列:

let
    Source = 你的数据源引用, // 替换成实际的数据源(比如Excel.Workbook、SQL.Database等)
    AddCleanedEmail = Table.AddColumn(Source, "Cleaned Email", each 
        // 先判断唯一ID非空,且邮箱以该ID开头
        if [unique ID] <> "" and Text.StartsWith([email], [unique ID]) then
            // 从邮箱的第N位开始截取(N是唯一ID的长度),直接去掉前缀
            Text.Range([email], Text.Length([unique ID]))
        else
            // 不满足条件就保留原邮箱
            [email]
    )
in
    AddCleanedEmail

代码细节说明

  • Text.StartsWith([email], [unique ID]):精准判断当前行的邮箱是否以对应的唯一ID开头,避免误删无关字符
  • [unique ID] <> "":防止唯一ID为空时,错误截取邮箱内容
  • Text.Range([email], Text.Length([unique ID])):动态获取唯一ID的长度,从该位置开始截取邮箱剩余部分,替代固定长度的删除操作

测试验证

用你给出的示例数据测试,结果如下:

emailunique IDCleaned Email
george@hotmail.com79fsdfv8v2657f842356j0george@hotmail.com
784ret3956w35497er834r62mary@hotmail.com784ret3956w35497er834r62mary@hotmail.com
34gfng6w5h6pauly@outlook.com34gfng6w5h6pauly@outlook.com

完全符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:55:21