创建计算列
可以编写一个 DAX 公式,向模型中的任意表添加计算列。 计算列公式必须返回标量或单个值。
导入模型中的计算列是有成本的:计算表增加了模型的存储大小,并且会延长数据刷新时间。 原因在于,当计算列与刷新表有公式依赖关系时,它们会重新计算。
在数据视图的“字段”窗格中,确保已选择 Due Date 表。 在创建计算列之前,先将 Date 列重命名为 Due Date。
现在,可以将计算列添加到 Due Date 表中。 若要创建计算列,在“表工具”上下文功能区上,选择“计算”组中的“新建列”。
在编辑栏中,输入以下计算列定义,并按 Enter 键。
Due Fiscal Year =
"FY"
& YEAR('Due Date'[Due Date])
+ IF(
MONTH('Due Date'[Due Date]) > 6,
1
)
计算列定义将 Due Fiscal Year 列添加到 Due Date 表中。 下面的步骤介绍 Microsoft Power BI 如何计算计算列公式:
- 在文本串联运算符 (&) 之前计算加法运算符 (+)。
-
YEAR
DAX 函数返回截止日期年份的整数值。 - 当截止日期的月份数字为 7-12(7 月到 12 月)时,
IF
DAX 函数返回值;否则,它将返回 BLANK。 (例如,Adventure Works 的会计年度为 7 月 - 6 月,因此,日历年的最后六个月将使用下一个日历年作为其会计年度。) - 年份值会添加到
IF
函数返回的值中,该值为 1 或 BLANK。 如果值为 BLANK,则会隐式转换为零 (0),以允许添加以生成会计年度值。 - 文字文本值
"FY"
与会计年度值连接,将隐式转换为文本。
使用以下定义添加第二个计算列:
Due Fiscal Quarter =
'Due Date'[Due Fiscal Year] & " Q"
& IF(
MONTH('Due Date'[Due Date]) <= 3,
3,
IF(
MONTH('Due Date'[Due Date]) <= 6,
4,
IF(
MONTH('Due Date'[Due Date]) <= 9,
1,
2
)
)
)
计算列定义将 Due Fiscal Quarter 列添加到 Due Date 表中。
IF
函数返回季度数字(第 1 季度为 7 月 - 9 月),结果会连接到 Due Fiscal Year 列的值和文字文本 Q
。
使用以下定义添加第三个计算列:
Due Month =
FORMAT('Due Date'[Due Date], "yyyy mmm")
计算列定义将 Due Month 列添加到 Due Date 表中。
FORMAT
DAX 函数使用格式字符串将 Due Date 列的值转换为文本。 在本例中,格式字符串将生成一个标签,用于说明年份和缩写月份名称。
注意
存在许多用户定义的日期/时间格式。 有关详细信息,请参阅 FORMAT 函数的自定义日期和时间格式。
使用以下定义添加第四个计算列:
Due Full Date =
FORMAT('Due Date'[Due Date], "yyyy mmm, dd")
使用以下定义添加第五个计算列:
MonthKey =
(YEAR('Due Date'[Due Date]) * 100) + MONTH('Due Date'[Due Date])
MonthKey 计算列将截止日期年份乘以值 100,然后加上截止日期的月份数字。 这会生成一个数值,用于按时间顺序对 Due Month 文本值排序。
验证 Due Date 表中是否有六列。 第一列是在创建计算表时添加的,另外五列是作为计算列添加的。
要完成 Due Date 表的设计,可以执行以下操作:
- 按 Due Date 列对 Due Full Date 列进行排序。
- 按 MonthKey 列对 Due Month 列进行排序。
- 隐藏 MonthKey 列。
- 创建名为“Fiscal”的层次结构,其中包含以下级别:
- Due Fiscal Year
- Due Fiscal Quarter
- Due Month
- Due Full Date
- 使用 Due Date 列将 Due Date 表标记为日期表。