当前位置: 首页 > news >正文

计算组的妙用!!页面权限控制

需求描述:
某些特殊的场景下,针对某页看板,需要进行数据权限卡控,但是又不能对全部的数据进行RLS处理,这种情况下可以利用计算组来解决这个需求。

实际场景

  • 事实表包含产品维度和销售维度

  • 两个维度属于同一公司下面的不同架构体系

  • 要求用户在查看不同页面的时候,根据不同的体系进行控权

案例数据




数据比较简单,分别是销售维度、产品维度、事实表以及权限表。

模型关系如下图:

构建基础度量值:

Amt = 
SUM ( 'Fact'[销售金额] )
Qty = 
SUM ( 'Fact'[销售数量] )

将其拖拽出来,如下:

为了方便给大家展示,白茶这里拖拽了两个一模一样的图表。

注意,不单是页面权限,针对不同可视化的数据权限控制办法也是一样的。

解决思路

利用DAX函数,复制销售维度和产品维度


不与其他表建立模型关系

配置RLS权限

VAR AccessCount =CALCULATETABLE ( VALUES ( 'Access'[产品权限] ), 'Access'[用户姓名] = USERNAME () )
RETURN'RLS_Product'[产品] IN AccessCount
VAR AccessCount =CALCULATETABLE ( VALUES ( 'Access'[销售权限] ), 'Access'[用户姓名] = USERNAME () )
RETURN'RLS_Dep'[销售代表] IN AccessCount

添加计算组

打开Tabular,选择创建计算组

CALCULATE (SELECTEDMEASURE (),KEEPFILTERS ( TREATAS ( VALUES ( 'RLS_Product'[产品] ), 'Dim_Product'[产品] ) )
)

CALCULATE (SELECTEDMEASURE (),KEEPFILTERS ( TREATAS ( VALUES ( 'RLS_Dep'[销售代表] ), 'Dim_Dep'[销售代表] ) )
)

到这里,我们的所有设置基本完成

效果如下

回到PowerBI的两个页面,分别添加计算组到页面筛选


我们代入一下T1这个用户来看看两个页面的数据

产品权限

销售权限

补充

  • 如果使用RLS配置角色直接控制销售维度和产品维度,那么整个数据模型都会进行过滤

  • 一个RLS设置两张表,二者是取交集

  • 两个RLS设置两张表,二者是取并集

  • DAX中没有函数可以获取到用户的RLS角色名称

  • 可视化组件的权限设置与上面一致,区别在于卡控的是单独的可视化筛选,而不是页面筛选


相关文章:

计算组的妙用!!页面权限控制

需求描述: 某些特殊的场景下,针对某页看板,需要进行数据权限卡控,但是又不能对全部的数据进行RLS处理,这种情况下可以利用计算组来解决这个需求。 实际场景 事实表包含产品维度和销售维度 两个维度属于同一公司下面的…...

Self-Instruct构造Prompt的例子

人工构造一批Prompt做种子。(Starting with a small seed set of human-written tasks)每次把一些种子后来生成的Prompt,放到Input里做few-shot examples,用LLM生成更多的Prompt;(Using the LLM to generat…...

友好前端vue脚手架

企业级后台集成方案vue-element-admin-CSDN博客在哔站学习,老师说可以有直接的脚手架(vue-element-admin)立马去搜索,找到了这博主这篇文章 介绍 | vue-element-admin​​​​​​ 官方默认英文版: git clone https:/…...

SQL Server特性

一、创建表 在sql server中使用create table来创建新表。 create table Customers( id int primary key identity(1,1), name varchar(5) ) 该表名为Customers其中包含了2个字段,分别为id(主键)以及name。 1、数据类型 整数类型&#xff…...

华为HCIP Datacom H12-821 卷25

1.单选题 Smurf攻击一般使用以下哪种协议 A、TCP B、BGP C、ICMP D、DHCP 正确答案: C 解析: Smurf攻击是一种病毒攻击,以最初发动这种攻击的程序“Smurf”来命名。这种攻击方法结合使用了IP欺骗和ICMP回复方法使大量网络传输充斥目…...

如何在 Selenium Python 中解决验证码 | 2024 完整指南

由于在进行网络自动化时遇到验证码是让许多人感到不知所措的问题。这些验证码专为区分人类用户和自动化脚本而设计,对于使用Selenium进行网络爬虫或自动化任务而言,无疑是一个巨大的挑战。2024年的完全指南将为您提供全面的解决方案,帮助您高…...

ASCII码对照表【2024年汇总】

🍺ASCII相关文章汇总如下🍺: 🎈ASCII码对照表(255个ascii字符汇总)🎈🎈ASCII码对照表(Unicode 字符集列表)🎈🎈ASCII码对照表&#x…...

刷题之买股票的最佳时机(leetcode)

买股票的最佳时机 动态规划入门题。 最简单的模拟式解法&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {//也可以换一种思路&#xff0c;因为只交易一次&#xff0c;那么找出股票最便宜的时候买入&#xff0c;最贵的时候卖出&#xff…...

Apache Seata透过源码解决SeataAT模式整合Mybatis-Plus失去MP特性的问题

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata透过源码解决SeataAT模式整合Mybatis-Plus失去MP特性的问题 透过源码解决SeataAT…...

1.2 如何让机器说人话?万字长文回顾自然语言处理(NLP)的前世今生 —— 《带你自学大语言模型》系列

本系列目录 《带你自学大语言模型》系列部分目录及计划&#xff0c;完整版目录见&#xff1a;带你自学大语言模型系列 —— 前言 第一部分 走进大语言模型&#xff08;科普向&#xff09; 第一章 走进大语言模型 1.1 从图灵机到GPT&#xff0c;人工智能经历了什么&#xff1…...

【QT】按钮类控件

按钮类控件 按钮类控件1. PushButton2. Radio Button3. Check Box4. Tool Button 按钮类控件 1. PushButton 使⽤ QPushButton 表示⼀个按钮&#xff0c;这也是当前我们最熟悉的⼀个控件了. QPushButton 继承⾃ QAbstractButton . 这个类是⼀个抽象类. 是其他按钮的⽗类. 在…...

RedHat运维-Linux软件包管理基础-RHEL9软件包管理基础

Linux软件包管理基础-RHEL9 1. 对于RHEL9来说&#xff0c;软件包管理基础分为增、删、改、查四个部分。对于增来说&#xff0c;有&#xff1a;增加一个仓库的信息文件、启用一个仓库的信息文件、安装rpm包、解压rpm包、安装软件、安装软件组、更新软件。在这里先讲软件包管理中…...

uniapp----- 判断小程序版本有没有更新

const updateManager uni.getUpdateManager();// 当向小程序后台请求完新版本信息&#xff0c;会进行回调updateManager.onCheckForUpdate(function (res) {console.log(是否有新版本, res.hasUpdate);});// 当新版本下载完成&#xff0c;会进行回调updateManager.onUpdateRea…...

Spring Boot的无缝衔接:深入解析与实践

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ &#x1f680;The begin&#x1f697;点点关注&#xff0c;收藏不迷路&#x1f6a9; 引言 在快速迭代的软件开发环境中&#xff0c;无缝衔接是提升开发效率、降低维护成本、增强系统稳定性的关键。Spring Boo…...

在Linux上查找文件的2个好用的命令

在Linux上查找文件&#xff0c;两个非常好用的命令是find和locate。 find命令 find命令非常强大&#xff0c;可以在指定目录下查找符合条件的文件。你可以根据文件名、文件类型、大小、修改日期等多种条件来查找文件。例如&#xff0c;要在当前目录及其子目录下查找所有扩展名…...

实现WebSocket聊天室功能

实现WebSocket聊天室功能 什么是WebSocket&#xff1f;WebSocket的工作原理服务器端实现客户端实现 在现代Web开发中&#xff0c;实时通信已经变得越来越重要。传统的HTTP协议由于其无状态和单向通信的特点&#xff0c;无法很好地满足实时通信的需求。而WebSocket协议则应运而生…...

qt opencv 应用举例

在Qt中使用OpenCV可以实现各种图像处理和计算机视觉任务。以下是一些Qt与OpenCV联合应用的具体举例&#xff1a; 1. 图像读取与显示 读取图像&#xff1a;使用OpenCV的imread函数可以方便地读取各种格式的图像文件&#xff0c;如.bmp、.jpg、.png等。这个函数返回一个Mat对象…...

QT5.12环境搭建与源码编译

一、概述 QT版本&#xff1a;QT5.12.10 Qt网址&#xff1a;http://download.qt.io/archive/qt/ 编译平台 ubuntu18.04 二、安装交叉编译工具链 1、获取交叉编译工具链 一般如果是编译系统如果有对应的gcc 就是用这个就可以了 比如rk3128 lin…...

Android中android.fg线程和android.ui线程分别代表什么?

Android中android.fg线程和android.ui线程分别代表什么&#xff1f; android.fg线程&#xff08;FgThread&#xff09;&#xff1a; FgThread是Android系统中一个特殊的线程&#xff0c;其类定义大致为public final class FgThread extends ServiceThread。它主要用于提供一个…...

MATLAB 2024b 更新了些什么?

MATLAB 2024b版本已经推出了预览版&#xff0c;本期介绍一些MATLAB部分的主要的更新内容。 帮助浏览器被移除 在此前的版本&#xff0c;当我们从MATLAB中访问帮助文档时&#xff0c;默认会通过MATLAB的帮助浏览器&#xff08;Help browser&#xff09;。 2024b版本开始&…...

技术解析 || 语义分割里程碑 —— DeepLabV2 核心机制与实战演进

1. DeepLabV2为何成为语义分割里程碑 第一次看到DeepLabV2论文时&#xff0c;最让我惊讶的是它在PASCAL VOC 2012测试集上72.6%的mIOU成绩。要知道在当时&#xff0c;这个成绩比前一年最好的模型提升了近10个百分点。这种飞跃式的进步&#xff0c;源于三个关键技术创新形成的&q…...

OpenClaw常见报错排查:Phi-3-vision-128k-instruct接口连接失败解决方案

OpenClaw常见报错排查&#xff1a;Phi-3-vision-128k-instruct接口连接失败解决方案 1. 问题背景与现象描述 上周在尝试将OpenClaw与Phi-3-vision-128k-instruct模型对接时&#xff0c;我遇到了令人头疼的接口连接问题。当时正在开发一个自动化图文处理工作流&#xff0c;需要…...

SEO_本地SEO优化的关键步骤与操作技巧

SEO:本地SEO优化的关键步骤与操作技巧 在当今数字化时代&#xff0c;本地SEO优化已经成为企业提升在线存在感和吸引本地客户的重要手段。无论你是小型本地企业&#xff0c;还是大型品牌&#xff0c;本地SEO优化都能帮助你更好地连接到潜在客户。具体该如何进行本地SEO优化呢&a…...

不用精确模型也能控?手把手教你用Matlab实现MFAC控制算法(附完整代码)

零基础实现MFAC控制&#xff1a;Matlab实战指南与参数调优全解析 在控制工程实践中&#xff0c;我们常常遇到这样的困境&#xff1a;面对一个复杂的非线性系统&#xff08;比如实验室里的倒立摆或者工厂中的液位控制装置&#xff09;&#xff0c;传统的PID控制效果不佳&#xf…...

.NET 高级开发 | 配置系统

配置和选项ASP.NET Core 模板项目下会有 appsettings.json、appsettings.Development.json 两个配置文件&#xff0c;我们可以通过这两个文件配置 Web 应用的启动端口、是否使用 https 等&#xff0c;大多数第三方框架也都支持在这两个 json 文件中配置。ASP.NET Core 程序默认…...

树莓派实战指南:从零搭建DHT11温湿度监测系统

1. 认识你的硬件伙伴&#xff1a;DHT11与树莓派 第一次拿到DHT11温湿度传感器时&#xff0c;我盯着这个比指甲盖还小的模块看了半天——就这么个小东西能测量环境数据&#xff1f;后来实测发现它虽然精度不如实验室设备&#xff0c;但家用完全够用。DHT11通过单总线协议通信&am…...

python namedtuple

## Python 中的 Any&#xff1a;一个被低估的类型注解工具 在 Python 的类型注解体系里&#xff0c;Any 是一个看似简单&#xff0c;却常常引发误解的特殊类型。很多开发者第一次见到它时&#xff0c;可能会觉得这不过是个“万金油”式的占位符&#xff0c;用来应付那些暂时不想…...

AViShaWiFi:ESP8266/ESP32轻量级WiFi与HTTPS通信封装库

1. 项目概述AViShaWiFi 是一款面向 ESP8266 和 ESP32 平台的轻量级 WiFi 连接与网络通信封装库&#xff0c;其核心设计目标是降低嵌入式设备接入 Wi-Fi 网络及发起 HTTP/HTTPS 请求的工程门槛。该库并非从零实现 TCP/IP 协议栈或 TLS 加密层&#xff0c;而是深度封装 Arduino C…...

PG25664CG车载显示驱动深度解析:ASIL-B级TFT-LCD驱动架构与DSI/LVDS移植实践

PG25664CG 是一款专为大众汽车集团&#xff08;Volkswagen Group&#xff09;CARIAD 软件平台定制的嵌入式 TFT-LCD 显示驱动解决方案&#xff0c;面向车载信息娱乐系统&#xff08;IVI&#xff09;、数字仪表盘&#xff08;Digital Cluster&#xff09;及 HUD 控制单元等高可靠…...

AdminBSB表单组件实战:从基础到高级的完整解决方案

AdminBSB表单组件实战&#xff1a;从基础到高级的完整解决方案 【免费下载链接】AdminBSBMaterialDesign AdminBSB - Free admin panel that is based on Bootstrap 3.x with Material Design 项目地址: https://gitcode.com/gh_mirrors/ad/AdminBSBMaterialDesign Admi…...