问答 查看内容
返回列表

自由模式数据集行权限公式使用咨询

21 1
发表于 昨天 14:19 | 查看全部 阅读模式
想要实现的场景:用户可能关联了多个门店(如 A、B、C),而数据表中的门店字段是字符串类型,存储的值可能是其中几个门店的组合(如 "B,C")。
我希望在自由模式下编写公式,实现以下效果:只要用户的任意一个门店与该字段中的任意一个值匹配,就能查到这条数据。请问公式应该怎么写?

补充说明:数据集为ETL数据集、用户可能关联了多个门店(如 A、B、C) 这里指用户属性字段

评论1

观小年楼主Lv.1 发表于 昨天 14:20 | 查看全部
推荐公式:coalesce([CURRENT_USER.门店], '') <> ''
and coalesce([门店], '') <> ''
and size(
  array_intersect(
    split(
      regexp_replace(
        regexp_replace(
          regexp_replace(lower(trim(coalesce([CURRENT_USER.门店], ''))), ',|、|;|;|\\|', ','),
          '\\s+', ''
        ),
        ',+', ','
      ),
      ','
    ),
    split(
      regexp_replace(
        regexp_replace(
          regexp_replace(lower(trim(coalesce([门店], ''))), ',|、|;|;|\\|', ','),
          '\\s+', ''
        ),
        ',+', ','
      ),
      ','
    )
  )
) > 0
公式解释:
判断用户属性 [CURRENT_USER.门店] 是否为空
判断数据字段 [门店] 是否为空
对用户属性与数据字段进行统一清洗:
转小写(避免大小写不一致)
去除首尾空格
统一分隔符(中文逗号、顿号等 → 英文逗号)
去除空白字符
压缩重复分隔符
将字符串按逗号拆分为数组
计算两个数组的交集(array_intersect)
若交集数量大于 0,则该行数据可见

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表