BI技巧丨计算组

PowerBI有三大工具,分别是DAX Studio,Tabular Editor和Bravo。
DAX Studio通常我们会用来进行性能分析和DAX调优使用,Bravo一般用来批量格式化DAX,而Tabular Editor主要的功能就是计算组。
计算组这个名词,相信很多小伙伴都听过,但也有很多小伙伴其实并没有用过这个功能,本期我们来了解一下,计算组的用途以及使用方法。
案例数据:

案例数据比较简单,只有一张事实表。
将其导入到PowerBI中,通过如下代码,建立模型关系。
Date =
GENERATE (CALENDAR ( MIN ( 'Sales'[DATE] ), MAX ( 'Sales'[DATE] ) ),VAR DA = [Date]VAR YEAR =YEAR ( DA )VAR QUARTER ="Q" & FORMAT ( DA, "Q" )VAR MONTE =FORMAT ( DA, "MM" )VAR DAY =DAY ( DA )RETURNROW ("Year", YEAR,"Quarter", QUARTER,"Month", MONTE,"DayOfMonth", DAY,"YearQuarter", YEAR & QUARTER,"YearMonth", YEAR & MONTE,"YearMonthCount",YEAR * 12 + MONTE)
)
结果如下:

到这里,我们的准备工作结束。
安装Tabular Editor,这里就不赘述了,小伙伴们可以自行搜索Tabular Editor2。
注:目前Tabular Editor2版本还是免费的,最新版Tabular Editor3属于收费。
计算组最重要的用途,按照白茶的理解,有两个:
1.相同逻辑的度量值,可避免重复造轮子;
2.可自定义DAX格式而不改变其原有的数据格式。
这里,我们只介绍如何避免重复造轮子。
举个例子:
我们现在有三段代码,分别用来计算销售数量的本期、同比以及环比。
销售数量:
Quantity =
SUM ( Sales[Quantity] )
同比:
Count同比% =
VAR CurrentCount =SELECTEDVALUE ( 'Date'[YearMonthCount] )
VAR LastYearMonthCount = CurrentCount - 12
VAR LastYearMonthValue =CALCULATE ([Quantity],FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastYearMonthCount ))
VAR Result =DIVIDE ( [Quantity] - LastYearMonthValue, LastYearMonthValue )
RETURNResult
环比:
Count环比% =
VAR CurrentCount =SELECTEDVALUE ( 'Date'[YearMonthCount] )
VAR LastMonthCount = CurrentCount - 1
VAR LastMonthValue =CALCULATE ([Quantity],FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastMonthCount ))
VAR Result =DIVIDE ( [Quantity] - LastMonthValue, LastMonthValue )
RETURNResult
结果如下:

这里,白茶为了更好阐述计算组的用途,特意使用了较为复杂的逻辑。
在实际工作中,我们经常会遇到同一套逻辑,针对不同的KPI,我们需要重复写DAX的情况。
这样不仅费时费力,而且后续维护起来,也是一个巨大的麻烦,而计算组的出现,很好的解决了这一烦恼。
在安装好Tabular Editor后,我们会在面板导航上面,发现一个新的功能区”外部工具“(其他工具安装好后,也会出现在这里)。

我们选择点击,打开Tabular Editor。
在之前的版本中,还需要在预览功能里面打开“使用增强的元数据格式存储数据集”功能,目前最新版已经不需要了。
打开之后的页面如下:

依次点击鼠标右键:Table→Create New→Calculation Group,会出现如下界面:

这里会构建一张新表,我们需要针对此表进行命名,例如:同环比。
依次点击鼠标右键:表名→Create New→Calculation Item,会出现如下界面:

Name是展示我们构建逻辑的名称,New Calculation则是逻辑名称以及构建我们需要的业务逻辑。我们可以创建两个业务逻辑,分别是同比和环比。
这里会使用到一个特殊的函数:SELECTEDMEASURE。此函数的用途,用来代替我们要计算的指标。
同比:
VAR CurrentCount =SELECTEDVALUE ( 'Date'[YearMonthCount] )
VAR LastYearMonthCount = CurrentCount - 12
VAR LastYearMonthValue =CALCULATE (SELECTEDMEASURE(),FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastYearMonthCount ))
VAR Result =DIVIDE ( SELECTEDMEASURE() - LastYearMonthValue, LastYearMonthValue )
RETURNResult
结果如下:

环比:
VAR CurrentCount =SELECTEDVALUE ( 'Date'[YearMonthCount] )
VAR LastMonthCount = CurrentCount - 1
VAR LastMonthValue =CALCULATE (SELECTEDMEASURE(),FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastMonthCount ))
VAR Result =DIVIDE ( SELECTEDMEASURE() - LastMonthValue, LastMonthValue )
RETURNResult
结果如下:

两个逻辑构建完毕之后,我们点击保存按钮。

此时,我们回到PowerBI Desktop页面,会出现如下页面,点击立即刷新即可。

此时,我们就可以在表中看到刚才构建的计算组了。

最终展示效果如下:



这里是白茶,一个PowerBI的初学者。

相关文章:
BI技巧丨计算组
PowerBI有三大工具,分别是DAX Studio,Tabular Editor和Bravo。 DAX Studio通常我们会用来进行性能分析和DAX调优使用,Bravo一般用来批量格式化DAX,而Tabular Editor主要的功能就是计算组。 计算组这个名词,相信很多小伙…...
PMP项目管理项目范围管理
目录1 项目范围管理概述2 规划范围管理3 收集需求4 定义范围5 创建 WBS6 确认范围7 控制范围1 项目范围管理概述 项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各 个过程。管理项目范围主要在于定义和控制哪些工作应在项目内,哪些工…...
Flink 定时加载数据源
一、简介 flink 自定义实时数据源使用流处理比较简单,比如 Kafka、MQ 等,如果使用 MySQL、redis 批处理也比较简单 如果需要定时加载数据作为 flink 数据源使用流处理,比如定时从 mysql 或者 redis 获取一批数据,传入 flink 做处…...
ChatGPT、人工智能、人类和一些酒桌闲聊
© 2023 Conmajia Initiated 10th March, 2023 昨天跟某化学家喝酒,期间提到了 ChatGPT。他的评价是:这鬼东西大量输出毫无意义、错漏百出甚至是虚假的信息,“in a confident accent”。例如某次 GPT 针对“描述某某记者”这一问题&#…...
WebRTC开源库内部调用abort函数引发程序发生闪退问题的排查
目录 1、初始问题描述 2、使用Process Explorer工具查看到处理音视频业务的rtcmpdll.dll模块没有加载起来 3、使用Dependency Walker工具查看到rtcmpdll.dll依赖的库有问题 4、更新库之后Debug程序启动时就发生异常,程序闪退 5、VS调试时看不到有效的函数调用堆…...
Golang并发编程
Golang并发编程 文章目录Golang并发编程1. 协程2. channel2.1 channel的创建2.2 使用waitGroup实现同步3. 并发编程3.1 并发编程之runtime包3.2 mutex互斥锁3.3 channel遍历3.3.1 for if遍历3.3.2 for range3.4 select switch3.5 Timer3.5.1 time.NewTimer()3.5.2 Stop、reset…...
windows+Anaconda环境下安装BERT成功安装方法及问题汇总
前言 在WindowsAnaconda环境下安装BERT,遇到各种问题,几经磨难,最终成功。接下来,先介绍成功的安装方法,再附上遇到的问题汇总 成功的安装方法 1、创建虚拟环境 注意:必须加上python3.7.12以创建环境&a…...
git - 简易指南
git - 简易指南 创建新仓库 创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/repository 如果是远端服务器上的仓库,你的命令会是这个样…...
[论文笔记]Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
引言 我们知道Transformer很好用,但它设定的最长长度是512。像一篇文章超过512个token是很容易的,那么我们在处理这种长文本的情况下也想利用Transformer的强大表达能力需要怎么做呢? 本文就带来一种处理长文本的Transformer变种——Transf…...
华为OD机试题 - 找目标字符串(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:找目标字符串题目输入输出示例一输入输出说明Code解题思路版权说…...
C++面向对象编程之六:重载操作符(<<,>>,+,+=,==,!=,=)
重载操作符C允许我们重新定义操作符(例如:,-,*,/)等,使其对于我们自定义的类类型对象,也能像内置数据类型(例如:int,float,double&…...
JS_wangEditor富文本编辑器
官网:https://www.wangeditor.com/ 引入 CSS 定义样式 <link href"https://unpkg.com/wangeditor/editorlatest/dist/css/style.css" rel"stylesheet"> <style>#editor—wrapper {border: 1px solid #ccc;z-index: 100; /* 按需定…...
Django实践-06导出excel/pdf/echarts
文章目录Django实践-06导出excel/pdf/echartsDjango实践-06导出excel/pdf/echarts导出excel安装依赖库修改views.py添加excel导出函数修改urls.py添加excel/运行测试导出pdf安装依赖库修改views.py添加pdf导出函数修改urls.py添加pdf/生成前端统计图表修改views.py添加get_teac…...
java并发入门(一)共享模型—Synchronized、Wait/Notify、pack/unpack
一、共享模型—管程 1、共享存在的问题 1.1 共享变量案例 package com.yyds.juc.monitor;import lombok.extern.slf4j.Slf4j;Slf4j(topic "c.MTest1") public class MTest1 {static int counter 0;public static void main(String[] args) throws InterruptedEx…...
Ast2500增加用户自定义功能
备注:这里使用的AMI的开发环境MegaRAC进行AST2500软件开发,并非openlinux版本。1、添加上电后自动执行的任务在PDKAccess.c中列出了系统启动过程中的所有任务,若需要添加功能,在相应的任务中添加自定义线程。一般在两个任务里面添…...
用Python暴力求解德·梅齐里亚克的砝码问题
文章目录固定个数的砝码可称量重量砝码的组合方法40镑砝码的组合问 一个商人有一个40磅的砝码,由于跌落在地而碎成4块。后来,称得每块碎片的重量都是整磅数,而且可以用这4 块来称从1 至40 磅之间的任意整数磅的重物。问这4 块砝码片各重多少&…...
离散Hopfield神经网络的分类——高校科研能力评价
离散Hopfield网络离散Hopfield网络是一种经典的神经网络模型,它的基本原理是利用离散化的神经元和离散化的权值矩阵来实现模式识别和模式恢复的功能。它最初由美国物理学家John Hopfield在1982年提出,是一种单层的全连接神经网络,被广泛应用于…...
Retrofit核心源码分析(三)- Call逻辑分析和扩展机制
在前面的两篇文章中,我们已经对 Retrofit 的注解解析、动态代理、网络请求和响应处理机制有了一定的了解。在这篇文章中,我们将深入分析 Retrofit 的 Call 逻辑,并介绍 Retrofit 的扩展机制。 一、Call 逻辑分析 Call 是 Retrofit 中最基本…...
源码分析spring如和对@Component注解进行BeanDefinition注册的
Spring ioc主要职责为依赖进行处理(依赖注入、依赖查找)、容器以及托管的(java bean、资源配置、事件)资源声明周期管理;在ioc容器启动对元信息进行读取(比如xml bean注解等)、事件管理、国际化等处理;首先…...
C语言--字符串函数1
目录前言strlenstrlen的模拟实现strcpystrcatstrcat的模拟实现strcmpstrcmp的模拟实现strncpystrncatstrncmpstrstrstrchr和strrchrstrstr的模拟实现前言 本章我们将重点介绍处理字符和字符串的库函数的使用和注意事项。 strlen 我们先来看一个我们最熟悉的求字符串长度的库…...
【技术干货】Qwen 3.6 Plus 实战:用百万上下文打造“代理式”AI 编码工作流
摘要 本文从工程视角拆解 Qwen 3.6 Plus:百万 token 上下文、面向“代理式编码”的能力,以及闭源旗舰开源工具的组合策略。结合实际项目需求,给出如何通过 OpenAI 兼容 API接入该类模型,并构建仓库级代码助手的完整 Python 示例和…...
云效流水线+K8s实战:Java微服务全自动部署与优化指南(手把手版)
1. 云效流水线入门:从零搭建Java微服务CI/CD管道 第一次接触云效流水线时,我像发现新大陆一样兴奋——原来部署可以这么简单!记得去年团队还在用Jenkins手动打包部署,每次发版都要折腾到凌晨。现在用云效 K8s的组合,我…...
S7-200 MCGS 基于PLC的小型水厂恒压供水系统 带解释的梯形图接线图原理图图纸,io分配
S7-200 MCGS 基于PLC的小型水厂恒压供水系统 带解释的梯形图接线图原理图图纸,io分配,组态画面最近在搞一个小型水厂的恒压供水系统项目,用西门子S7-200 PLC搭配MCGS组态软件,效果挺有意思的。这个系统核心就仨字——稳如狗&#…...
三菱电梯保密资料解析与代码分析
三菱电梯保密资料凌云PRO地址码包括: 1.基本参数地址 2.轿厢部件地址 3.操作箱与外招部件地址 门部件地址 5.楼层部件地址 6.井道信息系统地址 7.操作模式地址 8.附加功能(各台)地址 9.附加功能(群控)地址 10.响应部件地址 11.声音部件地址 1…...
深入理解 Firebase onSnapshot 的监听机制
前言 在现代 Web 应用开发中,Firebase Firestore 提供了强大的实时数据库功能,onSnapshot 监听器是其中一个关键特性。然而,如何正确地使用这个监听器来处理网络连接失败等特殊情况,往往是开发者需要深入理解的。今天我们将探讨 onSnapshot 的工作机制,并通过实例展示如何…...
(转发需官方授权)生活中遇到的知识:(转发需官方授权)有些饭店办公的人多所以有个办公地的营业执照也会有一个饭店的营业执照这种情况起码这个主打饭店运营的办公地的公司有起码有两个子饭店其中一个是主饭店。
(转发需官方授权)生活中遇到的知识:(转发需官方授权)有些饭店办公的人多所以有个办公地的营业执照也会有一个饭店的营业执照这种情况起码这个主打饭店运营的办公地的公司有起码有两个子饭店其中一个是主饭店。...
告别屏幕闪烁困扰:Stillcolor轻松解决苹果硅Mac护眼难题
告别屏幕闪烁困扰:Stillcolor轻松解决苹果硅Mac护眼难题 【免费下载链接】Stillcolor Disable temporal dithering on your Mac with this lightweight menu bar app. Designed for Apple silicon Macs. 项目地址: https://gitcode.com/gh_mirrors/st/Stillcolor …...
quark-auto-save:自动化云存储管理的夸克网盘解决方案
quark-auto-save:自动化云存储管理的夸克网盘解决方案 【免费下载链接】quark_auto_save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark_auto_save 在数字化时代,云存储已…...
实战指南:从零开始构建你的Switch模拟器环境
实战指南:从零开始构建你的Switch模拟器环境 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 还在为无法在PC上体验Switch独占游戏而烦恼吗?Ryujinx模拟器或许正…...
WSL配置文件路径全解析:从.wslconfig到wsl.conf
1. WSL配置文件基础:为什么需要它们? 如果你刚开始使用Windows Subsystem for Linux(WSL),可能会对两种配置文件感到困惑:全局的.wslconfig和本地的wsl.conf。这两种文件就像是WSL世界的"遥控器"…...
