Power BI Embedded自动缩放容量,为公司每个月节省上万元

news2024/12/24 11:40:03

哎,不知道今年行情怎么就这样了,大厂一边大批毕业生,一边大量招人。难道是今年的新人便宜?就连道哥(吴翰清,阿里P10,中国顶级黑客)都从阿里离职了,当年年少不懂学计算机,就是想当一名白帽子的。。。在上一篇文章中有介绍Power BI各个版本的功能差异,其中有介绍当人数超过80人时,从成本上讲是推荐Power BI Embedded的,Power BI Embedded不同的SKU价格也是不同的,具体使用哪个SKU价位层不止和使用人数有关,和报告的模型复杂度也是有关的,具体哪个容量符合使用,可以进行压力测试,可参考以下博客:Power BI Embedded: Stress Testing & Capacity Planning – Data on Wheels – Steve & Kristyna Hughes --- Power BI Embedded:Stress Testing & Capacity Planning – Data on Wheels – Steve & Kristyna Hughes (wordpress.com)[1]

613ce2d08c5b6679436cde2c9dc0539a.jpegimage.png

比如高峰期有1000人同时访问,这时可能至少要A3容量才符合,但是下班时间,或者周末,可能最多才会有几十个人同时访问,这时可能A1容量就可以满足要求。微软Azure云服务最大的好处就是弹性的,可缩放,当需求量大量采用A3,需求量低时采用A1甚至暂时关闭都是可以的。我们可以手动在网页端进行容量的更改,但这并不够智能,人也不可能总是记得去更改容量。

6e391c89d01c0a7fba76332547ff8d39.jpegimage.png

Power BI Premium是支持自动缩放容量的,但是也是单独收费的Using Autoscale with Power BI Premium - Power BI | Microsoft Learn --- 将自动缩放与 Power BI 高级版结合使用 - Power BI |微软学习[2]

0f63442f3d37e38b549cd7415caa1854.jpegimage.png

那么Power BI Embedded要怎么自动缩放容量呢?继续查找微软的文档,缩放 Power BI Embedded 容量 - Power BI | Microsoft Learn[3]文档显示是有REST API可供调用的

190763182b7b303bcef9ef4a28215255.jpegimage.png

继续查看文档Capacities - Update - REST API (Azure Power BI Embedded) | Microsoft Learn --- 容量 - 更新 - REST API(Azure Power BI Embedded) |微软学习[4]那么剩下的问题就是调用API时相应的世纪互联相应的URL的是什么了,具体的对应可查看以下文档 中国区 Azure 开发人员指南 | Azure Docs[5] 这里主要用的就是management.chinacloudapi.cn这个url来更改Power BI Embedded的容量。

daae291e065d006780d80def20e78077.jpegimage.png

这里其实还走了弯路,因为一开始缩放容量时总是不成功,在Azure门户中查看活动日志,日志中显示的是https://management.core.chinacloudapi.cn这个地址,我就一直使用这个地址来请求缩放容量,其结果就是一直失败。。。

4a43733a1d494aedc18b84603b0e6a3f.jpegimage.png

新建应用

登录Azure门户,进入到Azure Active Directory,然后选择应用注册

6d3da0de8cbd0375a8101df7539ba687.jpegimage.png

进行创建的应用,选择证书和密码,新建客户端密码,这里一定要注意及时保存,密码只在第一次创建时显示

cb181021ba65529c5c1f1aa2bd378826.jpegimage.png

创建安全组

同样进行Azure Active Directory,选择组,进去之后新建安全组

d1e647e8e9b7b9700748f690f4f37a8a.jpegimage.png

新建组之后,进去组,然后添加成员,成员即为上面创建的应用

e471c5b3f3cbd9f7900ee917c8f8fe5e.jpegimage.png

Power BI Embedded资源添加管理权限

进行到Power BI Embedded资源界面,选择Power BI容量管理员,然后添加安全组为管理员

8cd811a265bfcbe0ba726231eec7dd0b.jpegimage.png

切换到访问控制,点击添加角色分配

a80c89890d94537ae5b752529aadefc6.jpegimage.png

我这里使用的是所有者角色,可根据具体需要选择合适的角色 ,之后在成员中添加上面创建的安全组,完成创建即可

09dcfec74088facdd03e63d54094648c.jpegimage.png

Power BI中添加安全组

在Power BI门户中进入到管理门户,然后在允许服务主体使用Power BI API中加入上面创建的安全组

6ac3038e70596e68fb82189d3865bffd.jpegimage.png

使用python来缩放容量

首先是获取token,获取token需要一些参数,比如租户id(租户id在Azure Active Directory的概述中可以查看,也可参考[[PowerBI REST API 进阶]]),应用id和应用密码用上面创建应用时的即可。这里还参考了 Assign Power BI workspaces to a capacity automatically – PBI Guy --- 自动将 Power BI 工作区分配给容量 – PBI Guy (pbi-guy.com)[6] 该博客的博主是微软的员工,去年有问题时也有邮件向他提问,他也是有邮件回复的,这里推荐下他的博客,很多干货的。

dd1e7e4fe74a9d2963cc7c2ec3071885.jpegimage.png import requests

token_endpoint =  'https://login.chinacloudapi.cn//{tenant_id}/oauth2/token'
tenant_id =  ''
client_id =  ''
client_secret =  ''
data = {
     'grant_type':  'client_credentials',
     'client_id': client_id,
     'client_secret': client_secret,
     'resource':  'https://management.chinacloudapi.cn/'
}

response = requests.post(token_endpoint. format(tenant_id=tenant_id), data=data)
access_token = response.json()
token = access_token[ 'access_token']

获取token后就可以缩入容量了,相关参数可在Power BI Embedded订阅概述中查看,这里要注意代码中body参数添加了位置,位置也要改成自己的服务所在的位置

f5207b674c391d213f13961aec3e9ee2.jpegimage.pngsubscription_id =  ''    #订阅id
resource_group = ''     #资源名称
capacity_name =  ''      #资源组
new_size =  'A3'
url =  f'https://management.chinacloudapi.cn/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.PowerBIDedicated/capacities/{capacity_name}?api-version=2021-01-01'
headers = {
         'Content-Type':  'application/json',
         "Authorization":  "Bearer " + token
    }
body = {
     'sku': {
         'name': new_size,
        ' tier':  'PBIE_Azure'
    },
     'location': ' chinaeast'
}

response = requests.put(url, json=body,headers=headers)
if response.status_code ==  200:
     print(' Capacity size updated successfully')
else:
     print( f'Error: {response.text}'") e701db59ba4736786ec8b0fca92e7794.jpegimage.png

数据工厂中设置定时任务

在数据工厂中刷新PowerBI数据集中就介绍当处理完ETL任务后,就刷新Power BI数据集,其中就有介绍怎么获取token,然后再调用REST API刷新Power BI数据集,那么同样的,我们也可以在数据工厂中使用同样的方法来缩放Power BI Embedded容量,并且可以设置解发器,不同时间段调整为不同的容量。

e44a8660d84cc54b3d145c8323d4bdbd.jpegimage.png

引用链接

[1] Power BI Embedded: Stress Testing & Capacity Planning – Data on Wheels – Steve & Kristyna Hughes --- Power BI Embedded:Stress Testing & Capacity Planning – Data on Wheels – Steve & Kristyna Hughes (wordpress.com): https://dataonwheels.wordpress.com/2022/02/22/power-bi-embedded-stress-testing-capacity-planning/
[2] Using Autoscale with Power BI Premium - Power BI | Microsoft Learn --- 将自动缩放与 Power BI 高级版结合使用 - Power BI |微软学习: https://learn.microsoft.com/en-us/power-bi/enterprise/service-premium-auto-scale
[3] 缩放 Power BI Embedded 容量 - Power BI | Microsoft Learn: https://learn.microsoft.com/zh-cn/power-bi/developer/embedded/azure-pbie-scale-capacity
[4] Capacities - Update - REST API (Azure Power BI Embedded) | Microsoft Learn --- 容量 - 更新 - REST API(Azure Power BI Embedded) |微软学习: https://learn.microsoft.com/zh-cn/rest/api/power-bi-embedded/capacities/update?tabs=HTTP
[5] 中国区 Azure 开发人员指南 | Azure Docs: https://docs.azure.cn/zh-cn/articles/guidance/developerdifferences
[6] Assign Power BI workspaces to a capacity automatically – PBI Guy --- 自动将 Power BI 工作区分配给容量 – PBI Guy (pbi-guy.com): https://pbi-guy.com/2022/09/22/assign-power-bi-workspaces-to-a-capacity-automatically/


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nodejs批量处理图片小工具:批量修改图片信息

小工具一:批量修改文件夹里面的图片名称 步骤: 1.安装nodejs。 2.根据需要修改editFileName(filePath, formatName)函数的参数,也可以不改,直接将renameFile.js和img文件夹放在同一个目录下。 3.在renameFile.js目录下开启终端…

SQL报错this is incompatible with sql_mode=only_full_group_by

一、bug记录 1.1.bug截图 1.2.sql语句 SELECT id,batch_no,if_code,channel_mch_no,bill_date,bill_type,currency,order_id, channel_order_no,channel_amount,channel_fee_amount,channel_success_at, channel_user,channel_state,org_pay_order_id,channel_refund_amoun…

曾经由盛转衰的骈文,却引领后人在文质兼美的创作之路上坚定前行

又叫骈体文,是和散文相对应的一种文体,它兴起于汉末,形成于魏晋,最盛行于南北朝,在初唐、中唐、唐末、五代、宋初时也盛极一时。古人语:两马并驾为骈,所以骈文最大的特点是用对偶的手法&#xf…

Fiddler抓包工具之fiddler设置手机端抓包

fiddler设置手机端抓包 安卓手机抓包 第一步:配置电脑和安卓的相关设置 1、手机和fiddler位于同一个局域网内;首先从fiddler处获取到ip地址和端口号: ,点击online,最后一行就是ip地址 2、路径:Tools》O…

数据库基础——10.子查询

这篇文章来讲一下数据库的子查询 目录 1. 需求分析与问题解决 1.1 实际问题 1.2 子查询的基本使用 1.3 子查询的分类 2. 单行子查询 2.1 单行比较操作符 2.2 代码示例 2.3 HAVING 中的子查询 2.4 CASE中的子查询 2.5 子查询中的空值问题 2.5 非法使用子查询​编辑…

数字IC验证高频面试问题整理(附答案)

后台有同学私信想要验证的面试题目,这不就来了~ Q1.权重约束中”:”和 /”的区别 : 操作符表示值范围内的每一个值的权重是相同的,比如[1:3]:40,表示1,2,3取到的概率为40/120; :/操作符表示权重要平均分到值范围内的…

spring security(密码编码器、授权,会话)

目录 密码编码器 授权决策 AffirmativeBased ConsensusBased UnanimousBased 授权 web授权 HttpSecurity常用方法及说明 方法授权 会话控制 会话超时 安全会话cookie 密码编码器 Spring Security为了适应多种多样的加密类型,又做了抽象,D…

虚拟机配置

配置虚拟机网络 创建虚拟机 20G 4G内存 初始化用户名和密码 zhao 123456 克隆拷贝2个虚拟机 配置内存为2G 修改主机名和固定IP hostnamectl set-hostname node1 hostnamectl set-hostname node2 vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl stop network s…

渗透测试辅助工具箱

0x01 说明 渗透测试辅助工具箱 运行条件:jdk8 双击即可运行 反弹shell,命令生成器,自动编码,输入对应IP端口即可,实现一劳永逸,集成一些小工具,辅助渗透,提高效率 输入框说明 L…

TDengine 报错 failed to connect to server, reason: Unable to establish connection

一、前文 TDengine 入门教程——导读 二、遇到问题 taos 命令行(CLI)连接不上,进不去。 [rootiZ2ze30dygwd6yh7gu6lskZ ~]# taos Welcome to the TDengine Command Line Interface, Client Version:3.0.0.1 Copyright (c) 2022 by TDengine…

基于Azure实现Java访问OpenAI

之前使用了Java代码访问OpenAI:OpenAI注册以及Java代码调用_雨欲语的博客-CSDN博客但是需要vpn才能访问,现在可以基于微软的Azure访问OpenAI,不再需要vpn,官方文档:快速入门 - 开始通过 Azure OpenAI 服务使用 ChatGPT…

【国产虚拟仪器】基于JFM7K325T(复旦微FPGA)的高速数据采集平台

板卡概述 XM714是自主研制的一款5路HD-SDI视频采集图像处理平台,该平台采用上海复旦微的高性能Kintex系列FPGA加上华为海思的高性能视频处理器HI3531DV200来实现。 华为海思的HI3531DV200是一款集成了ARM A53四核处理器性能强大的神经网络引擎,支持多种…

python:容器:字符串——常用操作

字符串[下标]根据下标索引取出特定位置字符字符串.index(字符串)查找给定字符的第一个匹配项的下标字符串.replace(字符串1,字符串2) 将字符串内的全部字符串1,替换为字符串2 不会修改原字符串,而是得到一个新的 字符串.split(字符串) 按照给定字符串&am…

[高光谱]使用PyTorch的dataloader加载高光谱数据

本文实验的部分代码参考 Hyperspectral-Classificationhttps://github.com/eecn/Hyperspectral-Classification如果对dataloader的工作原理不太清楚可以参见 [Pytorch]DataSet和DataLoader逐句详解https://blog.csdn.net/weixin_37878740/article/details/129350390?spm1001…

使用Nextcloud搭建私人云盘,并内网穿透实现公网远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章:使用Nextcl…

好程序员:如果你从6月份开始学Java编程......

现在学习Java编程还来得及?好程序员可以明确的告诉你:当然了~新手入门快,非常容易学。Java计算机语言也是一门面向对象的语言,更加符合人类的思想,所求皆对象,并没有指针等一些难理解的知识。Java覆盖面宽、…

2023最新软件测试面试题大全(包含答案)

前言 在我认为,对于测试面试以及进阶的最佳学习方法莫过于刷题博客书籍视频总结,前几者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思…

Power BI许可证差异(免费、Pro、PPU、Embedded、Premium)

不可否认,在商业BI软件中Power BI是最强大的,在2023年的Gartner的魔力象限中Power BI又是第一名Microsoft named a Leader in the 2023 Gartner Magic Quadrant™ for Analytics and BI PlatformsI[1] image.png 目前还没有使用Power BI的,甚…

Microsoft Build 发布,开发者可能关注的重点→

又是一年一度的 Microsoft Build 了,你有和我一样熬夜看了吗?如果没有,那么你就错过了一场精彩的技术盛宴。本次的 Microsoft Build,有非常多的干货,围绕打造 Copilot 应用展开。我会将基于 Data AI 比较重要的内容列…

2.1. 类与对象

在 Java 中,类和对象是面向对象编程的基本构建块。类是一种模板,用于定义对象的属性和行为。对象是类的实例,具有类定义的属性和行为。 2.1.1. 类的定义 要定义一个类,可以使用以下语法: class ClassName {// 成员变…