系统函数指与用户信息相关的一类函数,包括内置的系统函数和用户自定义的函数。
例如在数据权限管理、与用户权限相关的查询定义中通常会使用到这些函数。
其中内置的函数不允许删除,自定义的函数允许删除。
系统内置函数
系统内置的函数主要是一些常用的函数,比如当前用户的信息。一般用户在数据权限设置中使用。
系统内置的函数如下:
函数 | 说明 |
CurrentUserAlias() | 获取当前用户别名。无参数。 |
CurrentUserID() | 获取当前用户的编号。无参数。 |
CurrentUserName() | 获取当前用户的名称。无参数。 |
GetCookie() | 获取Cookie信息。参数1:cookiePropertyName[字符串] |
GetFirstDayOfFrequencyParameter() | 获取频度日期参数值对应的第一天,例如获取2012年第1周的第一天,返回值为2012-01-01。参数:参数值[字符串] |
GetLastDayOfFrequencyParameter() | 获取频度日期参数值对应的最后一天,例如获取2012年第1周的最后一天,返回值为2012-01-07。参数:参数值[字符串] |
GetUserProperty(propertyName) | 获取用户属性的值。参数:propertyName—指系统管理中的“用户属性”名。 |
CurrentUserAllDepartmentIDRecursively() | 当前用户所属机构及其所有子机构的ID。无参数。 |
CurrentUserDepartments() | 获取用户所属机构的编号,无参数。用法常见于 select 字段 from table where 字段 in (CurrentUserDepartments()) |
CurrentUserDefaultDepartmentAlias() | 获取用户所属默认用户组的别名。无参数。 |
CurrentUserDefaultDepartmentID() | 获取用户所属默认用户组的编号。无参数。对应知识库中t_group表中的c_orgid字段 |
CurrentUserDefaultDepartmentName() | 获取用户所属默认用户组的真名。无参数。 |
GetSessionAttribute(AttributeName) | 获取当前会话中的属性值;参数是“属性名称”。 |
GetSelectedMembers() | 获取当前多维分析中指定维度层次下的所有成员。参数是“hierarchy”即维度层次。该函数常用于自定义成员中汇总表达式。 |
GetUserAccessibleMembers() | 获取指定维度层次中当前用户具有数据访问权限的成员。参数有两个: - 第一个参数:“hierarchy”即维度层次。
- 第二个参数:“Self”表示获取顶层成员;“SelfAndChildren”表示获取顶层成员及其子成员;“Children”表示获取顶层成员的子成员。
|
GetUserPropertyWithoutBrackets(propertyName) | 获取用户属性(不使用括号)。参数1:propertyName[字符串] |
GetUserIP() | 获取当前用户登录的IP地址。无参数。 |
GetUserExAttr(attrName) | 获取当前用户的指定扩展属性。参数1:attrName[字符串] (扩展属性的属性名) |
CurrentDate() | 获取当前应用服务器日期,支持组合分析、透视分析、多维分析和多维探索的页面展示及导出。 |
自定义函数
系统允许用户自定义“字符串”类型的系统函数,以实现一些特殊功能需求:如实现“上年同期”、“取年末或是月末的值”等。
在系统中设置自定义函数,请执行下列操作:
(1) 创建扩展包,编写自定义系统函数类(使用Java语言编写)
(2) 将编写好的自定义函数类文件存放在扩展包的以下包名下:smartbi.freequery.expression.function。
(3) 在应用服务器上重新部署扩展包;
(4) 重启应用服务器,在定制管理界面,找到 函数列表 > 系统函数 > 字符串,右键菜单选择 增加自定义函数(I)。
(5) 在“字符串”的右键菜单中选择 增加自定义函数,弹出“自定义函数”窗口。
(6) 在“自定义函数”窗口输入名称,该名称必须要与放入到“function”目录中的自定义函数类文件名称一致。
(7) 创建完成后,就可以和系统内置函数一样在产品中拖拽使用了。