在MS的BI工具中,度量值已经存在好多年了,像SQL Server Analysis Services中就有度量值。
A measure is simply a DAX formula that instructs Power BI to do a calculation on data.
度量值只是一个用于指挥BI对数据进行计算的DAX公式.
但是它不同于EXCEL的公式计算,度量值是对整个模型进行计算。
1、基本释义
度量值是动态计算公式,其结果会根据计算环境更改。 度量值在支持使用多个属性(如 Power BI 报表或 Excel 数据透视表或数据透视图)组合和筛选模型数据的报表中使用。 度量值是通过使用模型设计器中的 DAX 公式栏来创建的。
度量值中的公式可以使用通过自动求和功能自动创建的标准聚合函数(如 COUNT 或 SUM),你也可以通过使用 DAX 公式栏来定义自己的公式。 命名的度量值可作为参数在其它度量值中使用。
在公式栏中为某一度量值定义公式时,工具提示功能会显示当前计算环境中的总结果预览,但除此之外,在任何位置都不会立即输出结果。 您不能立即看到计算的(筛选)结果的原因是,在没有计算环境(CONTEXT或很多人称呼它为"上下文")的情况下无法确定度量值的结果。 若要计算度量值,需要一个可以提供计算环境的报表客户端应用程序,在检索与每个单元相关的数据然后针对每个单元计算表达式时需要该应用程序提供的计算环境。 该客户端可能是 Excel 的POWERPIVOT数据透视表或数据透视图、Power BI 报表或 SQL Server Management Studio (SSMS) 中 DAX 查询中的表表达式。
无论客户端是什么,都会对结果中的每个单元格运行单独的查询。 也就是说,数据透视表中行标题和列标题的每种组合,或 Power BI 报表中切片器和筛选器的每种选择,都会生成不同的数据子集,并根据该子集计算度量值,即:度量值天生具有筛选功能,会自动根据计算环境计算出不同筛选子集的值(聚合结果)。
与计算列不同,度量值的语法包括公式前面的度量值名称。 在MS文档提供的示例中,名称 Total Sales 出现在公式之前。 创建度量值后,名称及其定义将显示在报表客户端应用程序字段列表中,并且根据透视和角色,可供模型的所有用户使用。
🔶 度量值
用于实现聚合的DAX计算公式。度量值可以是隐式的,也可以是显式的 。 显式度量值是通过编写 DAX 公式添加到表格数据模型的计算。 度量值公式必须返回标量值。 在“字段”窗格中,显式度量值带有计算器图标。 使用多维表达式 (MDX) 查询模型时,需要使用显式度量值,使用“Analyse in Excel “时就是这种情况。 PBI中通常所指的度量值就是指显式度量值。
🔶 隐式度量值:就是自动生成的模型中的类似∑的各种数学运算,聚合方式可选,在表格字段区域,带∑标示的字段就是隐式度量值。隐式度量值的缺点:不能设置格式,不能被其它度量值引用,所以一般很少用到。
其实隐式度量值一种自动生成的计算,是通过将 Power BI 视觉对象配置为汇总列值来实现的。 数值列支持的汇总计算最多,包括:求和、平均值、最小值、最大值、计数(非重复)、计数、标准偏差、方差或中值。 其他数据类型的列也可进行汇总计算。 对于文本列,可以使用以下函数汇总:第一个(按字母顺序)、最后一个(按字母顺序)、计数(非重复)或计数。 对于日期列,可以使用以下函数汇总:最早、最近、计数(非重复)或计数。 对于布尔列,可以使用以下函数汇总:计数(非重复)或计数。
2、度量值 的几个重要性质
🔷 度量值只服从筛选
🔷 度量值不筛选时不计算,也就是不放到可视化对象中不计算
🔷 度量值可以被多个筛选条件筛选,就是在多表模型中,可以在可视化对象中拖入多行做为筛选条件,还包括列筛选、切片器筛选、字段区域筛选,这些不写在度量值内的筛选统称初始筛选(INITIAL FILTERS)
🔷 度量值中的筛选条件为布尔类型时,默认是取消条件列的外部筛选,也可以通过KeepFilters来恢复对布尔条件列的筛选。
🔷 度量值可以做为Filter的筛选条件
🔷 度量值可以使用无关系的表,像SelectedValue,if HasOneValue, Switch(…) ,IsFiltered, IsCrossFiltered,Treat as等函数都可以在无关系的表中创建度量值。
3、创建度量值的方法
方法一:With Power BI, you write measures in the formula bar, as shown below.
Power BI里,我们在公式栏编写度量值公式

度量值公式栏
The formula bar is not visible unless you have a measure selected in the Fields pane on the right-hand side of Power BI. When you select a measure in the Fields pane, the formula bar appears just below the ribbon,as shown above.
除非你在PBI右侧的字段区域选中一个度量值,否则公式栏是不可见的。
🔶建模菜单-新建度量值。使用这种方法建立的度量值,都保存在第一个数据区域的表格下面。比较方便的一种途径是新建一个手工输入的表命名为度量值,这样所有的度量值就全部存在这个表里面,便于查找。

建模菜单里创建度量值
🔶数据界面-字段区域-右键表格-新建度量值 。
Best practice is to store the measure in the table the data comes from.
使用这方法建立的度量值都保存在各自相关的表里,便于区别度量值的意义。

字段区域新建度量值
方法二:There is another way to write measures in Power BI: by using a third-party tool called Tabular Editor. 还可以使用Tabular Editor建立度量值。
方法三:也可以在DaxStudio编写度量值。
4、度量值界面操作
🔷 Create a new blank matrix on you report page
在报表页创建一个空白矩阵
🔷 Add some relevant data to the rows in your matrix. For the sample database used in this book, I suggest that you go to the Products table and place Products[Category] on Rows in the matrix.
在矩阵的行字段区域添加添加数据。本书中的示例我们是把Products表的Products[Category]字段放在矩阵的行字段。

矩阵操作界面
🔷 Right-click the Sales table in the Fields pane (see #1 below) and select New Measure (#2)
在字段区右键单击Sales表,选择新建度量值,公式栏就弹出"度量值 = "试样供我们补充完善度量值的名称和公式。
You now see "Measure = " appear in the formula bar at the top of the page, as shown below.

字段区新建度量值操作向导
In the formula bar, type the following DAX formula directly over the highlighted text Measure =
(see #1 below):
在公式栏输入下面度量值公式
Total Sales = SUM(Sales[ExtendedAmount])
然后敲回车
🔷 Apply the formatting you need before doing anything else. You will already be positioned on the Measure Tools tab on the ribbon (see #2 below). Apply the formatting shown below (#3 and #4) and then press Enter again.
在"度量值工具"菜单设置好度量值的格式。

设置度量值格式
🔷 Check to make sure you still have the matrix selected by ensuring that you can see the drag handles (see #1 below), navigate to the Sales table in the Fields pane (#2), locate the new measure
[Total Sales] (#3), and drag and drop the measure into the Values drop zone for the matrix (#4).
(You could also simply click in the check box next to Total Sales in the Fields pane.)
选中矩阵,就是矩阵大小调整边框显示时,(下图的#1),转到字段区域(#2)Sales表,找到度量值[Total Sales](#3),并将度量拖到矩阵的值区域(#4)。(也可以直接双击度量值。)

将度量值放到矩阵的操作向导
5、设置矩阵(视觉对象)格式 Formatting matrix
PBI中,有专门用于设置矩阵、切片器等格式的按钮(菜单)

视觉对象格式设置说明
6、避免使用隐式度量值 Avoiding Implicit Measures

把隐式度量值放到矩阵
When you drag a column in this way, you create what I call an “implicit measure”.I recommend that you avoid using them—for a number of reasons:
当你把一个列放到矩阵时,我们称这种做法叫创建了一个隐式度量值。我还是不建议大家这样做,因为:
▶️ The name of an implicit measure is not very helpful.
隐式度量值的名字不太好辨别
▶️ No formatting is applied.
不能设置格式
▶️ You can’t reference implicit measures inside other measures.
不能被其它度量值引用
▶️ You won’t learn how to write DAX.
只使用隐式度量值,你就不会用DAX写度量值公式了。
7、使用智能提示 Using IntelliSense
在PBI公式栏输入公式时,BI会表、列、度量值、函数的智能提示。在跳出智能提示后,可以通过上下箭头选择,按Tab键选中。在公式栏输入聚合函数后稍微停顿一下,智能提示就跳出来了。

智能提示
在PBI中,我们输入 ' 时,会跳出表名,表名[列名]供选择,输入"["会跳出度量值供选择。我们建议在引用表的列时使用完整引用,即表名[列名],这样做,即便于识别是哪个表的列,也与度量值作区别。
8、编辑(修改)度量值 Editing Measures
▶️ Find the measure you want to edit in the Fields pane and click the measure once to select it. The formula bar reappears at the top of the page.
在字段区域单击选择度量值,公式栏会弹出度量值公式
▶️ Click in the formula bar and edit the measure as required.
直接在公式栏就可以编辑修改

度量值编辑修改状态
9、给度量值添加注释 Adding Comments to Measures
▶️ Power BI allows you to add notes and comments inside the measures you write.
可以在Power BI的度量值中添加注释
Select a measure from the Fields pane, and it appears in the formula bar at the top of the page.
▶️ If needed, expand the size of the formula bar by clicking the down arrow (see #1 below).
需要时,可以点击公式栏右侧的下拉箭头,展开公式栏
▶️ Start a new line in the measure by pressing Shift+Enter.
在需要换行的地方按Shift+Enter,代码换行
▶️ Add comments as shown below. Use a double slash (//) at the start of a single-line comment and
use the /* */ pattern to create a multi-line comment, as shown below.
//用于引导单行注释, 在/* */中间可以添加多行注释

度量值 中的注释(绿色部分)
🔶 当编写DAX出现错误或不确定是否正确时,可以使用注释功能把代码注释掉,以避免报错。

把代码注释掉,便于修改,以免报错
10、新建或复制报表页 Creating New Pages in Power BI
It is easy to create a new page by clicking the plus symbol. You can also duplicate an existing page by right-clicking any existing page and selecting Duplicate Page.
双击当前报表页名称可以修改名称,点击+ 就增加一个报表页并能重新命名。

新建或重命名报表页