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

Power BI Embedded RLS中拆分username()并实现数值比对的DAX方法

DAX实现逗号分隔字符串拆分并转数值比对

当前USERNAME()的返回值为'1,2,3',需求是拆分该字符串,将每个值转换为数值后进行比对。以下是具体的DAX实现方案:

核心思路

DAX中没有直接的字符串拆分函数,可借助PATH系列函数处理逗号分隔的字符串:先将逗号替换为PATH函数识别的竖线分隔符,再逐个提取项目并转换为数值,最后完成比对。

实现示例

1. 检查数值是否在拆分后的列表中(计算列/度量值)

IsInUsernameList = 
VAR UsernameStr = USERNAME()
VAR PathFormattedStr = SUBSTITUTE(UsernameStr, ",", "|")
VAR ItemTotal = PATHLENGTH(PathFormattedStr)
VAR NumericList = 
    GENERATE(
        GENERATESERIES(1, ItemTotal),
        VAR CurrentNum = PATHITEM(PathFormattedStr, [Value], INTEGER)
        RETURN ROW("TargetNumber", CurrentNum)
    )
RETURN
    COUNTROWS(FILTER(NumericList, [TargetNumber] = '你的表名'[需要比对的数值列])) > 0

2. 直接生成拆分后的数值列表

SplitUsernameToNumbers = 
VAR UsernameStr = USERNAME()
VAR PathFormattedStr = SUBSTITUTE(UsernameStr, ",", "|")
RETURN
    SELECTCOLUMNS(
        GENERATESERIES(1, PATHLENGTH(PathFormattedStr)),
        "Number", PATHITEM(PathFormattedStr, [Value], INTEGER)
    )

代码说明

  • SUBSTITUTE(UsernameStr, ",", "|"):将原始逗号分隔的字符串转换为PATH函数兼容的格式
  • PATHLENGTH(PathFormattedStr):获取拆分后的项目总数
  • PATHITEM(..., INTEGER):提取指定位置的项目并直接转换为整数类型
  • 通过GENERATESERIES配合循环提取所有项目,最终生成数值列表用于比对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:54:57