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

icCube角色权限配置报错:自定义isAbc函数无法识别

问题原因

icCube的角色安全脚本(Security Script)不支持在脚本内用create function定义临时函数,角色脚本中的#IF预处理指令仅能识别内置MDX函数或服务器全局提前定义的自定义函数,无法解析脚本内动态创建的函数——这就是报错提示“函数不存在”的核心原因。而MDX IDE查询里的with function属于MDX查询自身语法,和角色脚本的执行上下文完全独立,所以能正常运行。

解决方案

有两种可行的解决方式:

方式一:直接在#IF中嵌入判断逻辑

无需定义自定义函数,把原函数内的判断表达式直接写入#IF条件,修改后的角色脚本如下:

-- Give access to the client domain
+ <specific client domain> 


+schema [Sales (Demo)]
:schema [Sales (Demo)]

#IF instr(username(),'@') > 0 and mid(username(),instr(username(),'@'),100)= '@abc.com'

+cube R Sales

#ELSE

-all

#ENDIF

方式二:创建全局自定义函数(适合多角色复用)

如果该邮箱判断逻辑需要在多个角色中复用,可在icCube后台全局定义函数:

  1. 登录icCube管理界面,进入Administration > MDX Functions
  2. 点击「Add」创建新函数,填写:
    • 函数名称:isAbc
    • 参数:username_(字符串类型)
    • 函数表达式:instr(username_,'@') > 0 and mid(username_,instr(username_,'@'),100)= '@abc.com'
  3. 保存后,角色脚本即可直接调用isAbc(username()),无需再在脚本内重复定义函数
验证

修改后重新加载Schema,脚本即可正常解析;同时可使用对应邮箱的用户登录测试,确认是否能正确获取Sales (Demo) Schema的访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:06:09