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

如何将SAS中用于加密ID的函数复现实现到Power BI中

实现方案

完全可以实现,先拆解原SAS函数的执行逻辑,再给出Power BI两种常用场景的实现代码:

原SAS函数逻辑拆解

  • 第一步:将client_id从字符串转为10位数值,再转回字符串后清除所有空格,得到纯数字的id字符串
  • 第二步:将清洗后的id字符串与固定盐值3B9E336D986AFD0BD4E869869117B26DA9C2192A090878B6B9417C832DEDFAEE拼接
  • 第三步:对拼接后的字符串做SHA256哈希
  • 第四步:将哈希结果转为64位十六进制字符串输出

Power Query(M语言)实现(数据加载阶段用)

直接在Power Query编辑器里添加自定义列,粘贴以下代码即可,替换[client_id]为你表中的客户ID字段名:

let
    cleaned_id = Text.Remove(Text.From(Number.From([client_id])), " "),
    salt = "3B9E336D986AFD0BD4E869869117B26DA9C2192A090878B6B9417C832DEDFAEE",
    combined = cleaned_id & salt,
    hash = Binary.ToText(Text.ToBinary(combined, TextEncoding.Ascii), BinaryEncoding.Hex)
in
    hash

DAX实现(建模/计算列阶段用)

如果需要在数据模型中用计算列实现,用以下DAX代码,同样替换'表名'[client_id]为你实际的字段:

加密ID = 
VAR cleaned_id = SUBSTITUTE(FORMAT(VALUE('表名'[client_id]), "0"), " ", "")
VAR salt = "3B9E336D986AFD0BD4E869869117B26DA9C2192A090878B6B9417C832DEDFAEE"
VAR combined = cleaned_id & salt
RETURN
    CONVERT(SHA256(combined), STRING)

注意:如果你的client_id本身就是无空格的纯数字字符串,可以省略清洗步骤,直接拼接盐值做哈希即可,和原SAS输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:04