让决策更智能
新一代智能数据分析平台

高性能数据集行权限设置

观小数发表于:2021年08月13日 10:16:21更新于:2021年08月13日 11:25:30

场景介绍:

需要对高性能数据集进行行权限设置。

问题描述:

在用到高性能数据集时,直接把行权限的设置照搬过来,会出现不兼容的现象。

产生原因:

Guan-index数据集用的是spark语法,而转换为高性能数据集时,因为高性能数据集本身是基于ClickHouse的,所以需要用到ClickHouse数据库本身的语法。

易错点:

以下语法是比较常用的写法,例如:

has(splitByChar(',',[CURRENT_USER.所在地区1]),[省份])


0016115d75141b49b9ba5b3cb10e3e8

这种写法一般情况下也是可以生效的:

0016115d8cb386ff244ee24eb8facbf

0016115d8150a081a364f16269f47cd

但是Clickhouse的数据类型检查非常严格,容易出现类型不匹配的情况。以上写法可能会出现如下报错:

Types of array and 2nd argument of function \"has\" must be identical up to nullability, cardinality, numeric types, or Enum and numeric type. Passed: Array(String) and Nullable(String)

报错信息在提示数组类型为String,而传入的参数是 Nullable(String),即引用数据集字段是有null值的,两者比较不匹配。

要解决该问题,把用户属性也转换为Nullable(String)即可,例如:

has(cast(splitByChar(',',[CURRENT_USER.所在地区1]), 'Array(Nullable(String))') ,[省份])>0




    您需要登录后才可以回复