PowerBI 中的函数日期表

PowerBI 中的函数日期表

在PowerBI

中,日期表的问题是始终都无法绕过的一个问题,首先是微软默认的日期表月份显示如下:

可能这种形式我们自己看起来没啥的,但是要考虑做出来的可视化报表呈现的对象绝对不仅仅是自己,那么就需要我们自己来制

作自己的日期维度表。

太多方法就不说了,这里提供两种方法大家参考:

一、M

函数:

1、在PQ

编辑器界面,左边查询的位置,点击鼠标右键,新建空白查询:

2

、点击操作界面的上方的高级属性编辑器:

3

、将查询里面所有的内容清空,复制下面这段代码进去:

let

CalendarType = type function (

optional CalendarYearStart as (type number meta [

Documentation.FieldCaption = "

开始年份,日期表从开始年份1

月1

日起。",

Documentation.FieldDescription = "

日期表从开始年份1

月1

日起",

Documentation.SampleValues = { Date.Year( DateTime.LocalNow( ) ) - 1 } // Previous Year

]),

optional CalendarYearEnd as (type number meta [

Documentation.FieldCaption = "

结束年份,日期表至结束年份12

月31

日止。",

Documentation.FieldDescription = "

日期表至结束年份12

月31

日止",

Documentation.SampleValues = { Date.Year( DateTime.LocalNow( ) ) } // Current Year

]),

optional CalendarFirstDayOfWeek as (type text meta [

Documentation.FieldCaption = "

定义一周开始日,从 Monday

,Tuesday

,Wednesday

,Thursday

,Friday

Documentation.FieldDescription = "

从 Monday

,Tuesday

,Wednesday

,Thursday

,Friday

,Saturday

Documentation.SampleValues = { "Monday" }

]),

optional CalendarCulture as (type text meta [

Documentation.FieldCaption = "

指定日期表显示月以及星期几的名称是中文或英文,en

表示英文,zh

表示中

Documentation.FieldDescription = " en

表示英文,zh

表示中文,缺省默认与系统一致。",

Documentation.SampleValues = { "zh" }

])

)

as table meta [

Documentation.Name = "

构建日期表",

Documentation.LongDescription = "

创建指定年份之间的日期表。并可进行各种设置。",

Documentation.LongDescription = "

创建指定年份之间的日期表。并可进行各种设置。",

Documentation.Examples = {

[

Description = "

返回当前年份日期表",

Code = "CreateCalendar()",

Result = "

当前年份日期表。"

],

[

Description = "

返回指定年份的日期表",

Code = "CreateCalendar( 2017 )",

Result = "

返回2017/01/01

至2017/12/31

之间的日期表。"

],

[

Description = "

返回起止年份之间的日期表",

Code = "CreateCalendar( 2015 , 2017 )",

Result = "

返回2015/01/01

至2017/12/31

之间的日期表。"

],

[

Description = "

返回起止年份之间的日期表,并指定周二为每周的第一天",

Code = "CreateCalendar( 2015 , 2017 , ""Tuesday"" )",

Result = "2015/01/01

至2017/12/31

之间的日期表,且周二是每周的第一天。"

],

[

Description = "

返回起止年份之间的日期表,并指定周二为每周的第一天,并使用英文显示名称。",

Code = "CreateCalendar( 2015 , 2017 , ""Tuesday"", ""en"" )",

Result = "2015/01/01

至2017/12/31

之间的日期表,且周二是每周的第一天,并使用英文显示月名称及星期几的名

]

}

],

CreateCalendar = ( optional CalendarYearStart as number, optional CalendarYearEnd as number, optiona

begin_year = CalendarYearStart ,

end_year = CalendarYearEnd ,

first_day_of_week = if Text.Lower( CalendarFirstDayOfWeek ) = "monday" then Day.Monday

else if Text.Lower( CalendarFirstDayOfWeek ) = "tuesday" then Day.Tuesday

else if Text.Lower( CalendarFirstDayOfWeek ) = "wednesday" then Day.Wednesda

else if Text.Lower( CalendarFirstDayOfWeek ) = "thursday" then Day.Thursday

else if Text.Lower( CalendarFirstDayOfWeek ) = "friday" then Day.Friday

else if Text.Lower( CalendarFirstDayOfWeek ) = "saturday" then Day.Saturday

else if Text.Lower( CalendarFirstDayOfWeek ) = "sunday" then Day.Sunday

else if CalendarFirstDayOfWeek <> null then error "

参数错误:参数CalendarFirs

else Day.Monday ,

culture = if CalendarCulture <> null then CalendarCulture else "zh" , // "en" , "zh"

y1 = if begin_year <> null then begin_year else if end_year <> null then end_year else Date.Year

y2 = if end_year <> null then end_year else if begin_year <> null then begin_year else Date.Year

calendar_list = { Number.From ( #date( Number.From( y1 ) , 1 , 1 ) ) .. Number.From( #date( Numb

calendar_list_table = Table.FromList(calendar_list, Splitter.SplitByNothing(), null, null, Extra

#"Changed Type" = Table.TransformColumnTypes(calendar_list_table,{{"Column1", type date}}),

#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "Date"}}),

#"Inserted Year" = Table.AddColumn(#"Renamed Columns", "Year", each Date.Year([Date]), Int64.Typ

#"Inserted Quarter" = Table.AddColumn(#"Inserted Year", "Quarter", each Date.QuarterOfYear([Date

#"Inserted Month" = Table.AddColumn(#"Inserted Quarter", "Month", each Date.Month([Date]), Int64

#"Inserted Week of Year" = Table.AddColumn(#"Inserted Month", "WeekOfYear", each Date.WeekOfYear

#"Inserted Week of Month" = Table.AddColumn(#"Inserted Week of Year", "WeekOfMonth", each Date.W

#"Inserted Start of Week" = Table.AddColumn(#"Inserted Week of Month", "DateOfWeekStart", each D

#"Inserted End of Week" = Table.AddColumn(#"Inserted Start of Week", "DateOfWeekEnd", each Date.

合集下载

PowerBI技巧之如何使用DAX函数计算上年值

PowerBI技巧之如何使用DAX函数计算上年值

使用 Power BI 的 DAX 函数来计算上年值是非常常见的需求。上年值的计算可以用于比较本年度与上年度的数据差异,或者用于预测未来趋势。以下是几种常见的方法来计算上年值的 DAX 函数技巧。

一、使用SAMEPERIODLASTYEAR函数

SAMEPERIODLASTYEAR 函数可以根据当前上下文中的日期来计算上年同期的值。例如,如果我们有一个日期字段 Date,我们可以使用以下公式来计算上年值:

Sales LY = CALCULATE(SUM(Sales[Amount]),

SAMEPERIODLASTYEAR(Sales[Date]))

这个公式将返回当前日期的上年同期的销售总额。

二、使用DATEADD函数

DATEADD函数可以根据指定的时间单位和偏移量,计算出一个新的日期值。我们可以使用DATEADD函数来计算上年同期的日期,然后再根据这个日期来计算上年值。以下是一个例子:

Sales LY = CALCULATE(SUM(Sales[Amount]), DATEADD(Sales[Date],

-1, YEAR))

这个公式将返回当前日期的上一年的销售总额。

三、使用PREVIOUSYEAR函数

PREVIOUSYEAR函数可以根据当前上下文中的日期,返回上年的日期范围。我们可以将PREVIOUSYEAR函数与SUMX函数结合使用,来计算上年的销售总额。以下是一个例子: Sales LY = SUMX(PREVIOUSYEAR(Sales[Date]), Sales[Amount])

这个公式将返回上年的销售总额。

四、使用PARALLELPERIOD函数

PARALLELPERIOD函数可以根据当前上下文中的日期,返回指定时间单位的偏移量。我们可以将PARALLELPERIOD函数与CALCULATE函数结合使用,来计算上年的销售总额。以下是一个例子:

Sales LY = CALCULATE(SUM(Sales[Amount]),

powerbi 时间智能函数

powerbi 时间智能函数

PowerBI 是一种业务智能工具,它可以帮助用户分析、可视化和共享数据。其中,时间智能函数是 PowerBI 中非常重要的一部分,它可以帮助用户更好地处理和展示时间相关的数据。本文将详细介绍

PowerBI 中的时间智能函数,帮助读者更好地理解和运用这一功能。

一、时间智能函数的概念与作用:

1. 时间智能函数是指在 PowerBI 中能够处理时间数据的一系列函数,包括日期函数、时间函数等。这些函数可以帮助用户对时间数据进行格式转换、计算、筛选等操作。

2. 时间智能函数的作用主要有三个方面:一是对时间数据进行标准化和规范化,使其符合分析和展示的需要;二是对时间数据进行计算和推演,从而得出更深层次的洞察;三是对时间数据进行筛选和聚合,使其更好地支持报表和可视化。

二、常用的时间智能函数及其用法:

1. DATE函数:DATE函数可以将年、月、日组合成一个日期,并返回对应的日期值。DATE(2022, 12, 31)可以返回 2022 年 12 月 31 日的日期值。

2. YEAR、MONTH、DAY函数:这三个函数分别可以从日期值中提取年、月、日的值。YEAR(DATE(2022, 12, 31))可以返回 2022,MONTH(DATE(2022, 12, 31))可以返回 12。 3. CALENDAR函数:CALENDAR函数可以生成一个包含连续日期的日期表。CALENDAR(DATE(2022, 1, 1), DATE(2022, 12, 31))可以生成一个包含 2022 年全年日期的日期表。

4. TOTALYTD、SAMEPERIODLASTYEAR函数:这两个函数可以帮助用户对时间序列数据进行累计、同比等计算。TOTALYTD([销售额],

'日期'[日期])可以计算截止到当前日期的年累计销售额。

三、时间智能函数在实际应用中的案例分析:

以某零售企业的销售数据为例,可以通过时间智能函数对其销售额进行分析和可视化:

powerbi中函数分类

powerbi中函数分类

powerbi中函数分类

Power BI是一款功能强大的数据分析和可视化工具,它提供了丰富的函数来帮助用户对数据进行处理和计算。这些函数可以根据其功能和用途进行分类,下面我们将对Power BI中的函数分类进行介绍。

一、文本函数

文本函数用于对文本数据进行处理和提取,常用的文本函数有:

1. LEFT函数:用于从文本字符串的左侧提取指定个数的字符。

2. RIGHT函数:用于从文本字符串的右侧提取指定个数的字符。

3. MID函数:用于从文本字符串的指定位置开始提取指定个数的字符。

4. CONCATENATE函数:用于将多个文本字符串连接成一个字符串。

5. SUBSTITUTE函数:用于替换文本字符串中的指定字符或文本。

二、数学函数

数学函数用于对数值数据进行计算和处理,常用的数学函数有:

1. SUM函数:用于计算一组数值的和。

2. AVERAGE函数:用于计算一组数值的平均值。

3. MAX函数:用于计算一组数值的最大值。

4. MIN函数:用于计算一组数值的最小值。

5. ROUND函数:用于将数值四舍五入到指定的小数位数。

三、日期和时间函数

日期和时间函数用于处理日期和时间类型的数据,常用的日期和时间函数有:

1. YEAR函数:用于提取日期中的年份。

2. MONTH函数:用于提取日期中的月份。

3. DAY函数:用于提取日期中的天数。

4. HOUR函数:用于提取时间中的小时。

5. MINUTE函数:用于提取时间中的分钟。

四、逻辑函数

逻辑函数用于进行条件判断和逻辑运算,常用的逻辑函数有:

1. IF函数:用于根据指定条件进行判断并返回不同的结果。

2. AND函数:用于判断多个条件是否同时成立。

3. OR函数:用于判断多个条件是否有至少一个成立。

4. NOT函数:用于对条件进行取反操作。

五、聚合函数

聚合函数用于对数据集进行分组和计算,常用的聚合函数有:

1. GROUPBY函数:用于按照指定的列对数据进行分组。

powerbi查找函数

powerbi查找函数

powerbi查找函数

Power BI 的查找函数如下:

1. LOOKUPVALUE:根据指定条件查找数据表中的值。

2. FIND:查找一个字符串中子字符串出现的位置。

3. SEARCH:查找一个字符串中子字符串出现的位置(不区分大小写)。

4. FILTER:按照指定条件筛选数据表中的数据。

5. CONTAINS:检查一个字符串是否包含另一个字符串。

6. SUBSTITUTE:替换一个字符串中所有出现的指定文本。

7. LEFT:从左侧开始,返回一个字符串的指定数量的字符。

8. RIGHT:从右侧开始,返回一个字符串的指定数量的字符。

9. MID:返回一个字符串中指定位置开始并长度为指定数量的字符。

10. CONCATENATE:连接两个或多个字符串。

除此以外,Power BI 还有其他许多函数,如数学函数、日期函数、逻辑函数等,可以根据实际需要来使用。

PowerBI技巧之Power BI 中不显示当前月的一种方法

PowerBI技巧之Power BI 中不显示当前月的一种方法

Power BI

中不显示当前月的一种方法

01

课题背景

报表呈现中有这样一种需求:

限制Power BI

视觉对象仅显示已经过去的完整月份的数据,而不显示目前正处于的月份 ”

如果按日显示数据通常问题不大,但按月显示时,当前月的实际值比较参考价值较小,如下图:

此图表是2019

年某书店书籍的销量,看起来10

月份销量有明显下滑,但事实并非如此,这份报告是10

月上旬时生成的,仅包含

了10

月的部分数据,所以有些误导。

在Power BI

中可能有多种方法解决此问题,今天我们介绍一种在日期表中创建辅助列的办法。

02

月份编号与当前月

我们准备生成一列名为IsCompletedMonth

的辅助列,如果是已经发生的月份,我们返回True

,否则返回False.

首先,我们的思路是给月份添加一列编号给月份添加一列编号,以识别每个月份——

日期表中第一个月编号为1

,第二个为2

,依次类推……

,可以

使用PQ

添加该列,此处我们介绍使用DAX

表达式添加

Month Index = RANKX(ALL('Calendar'[

年月]),'Calendar'[

年月],,ASC)

接下来,我们来写出当前月的写出当前月的ID

,此处介绍一种使用LOOKUPVALUE

函数的方法

CurrentMonthID =

VAR ThisMonthID =

LOOKUPVALUE ( 'Calendar'[Month Index], 'Calendar'[Date], TODAY () )/查询日期表中Date = Today

()的行对应的月编号/

RETURN

ThisMonthID

03

完整月判断与筛选

IsCompletedMonth =

'Calendar'[Month Index] < 'Calendar'[CurrentMonthID]/如果在当前月之前,则返回TRUE

,否则返回FALSE /

如果在当前月之前的月份,返回TRUE,如果是当前月及之后的月份,则返回FALSE

powerbiformat函数

powerbiformat函数

powerbiformat函数

Power BI是一种基于云的商业智能工具,可以帮助用户连接、转换和可视化数据,以便更好地理解和分析业务数据。Power BI的格式函数是其中一个强大的功能。

格式函数在Power BI中允许用户更改报表中数值的显示方式,以满足特定的需求或提供更好的数据可视化效果。格式函数可以应用于数值、日期和时间等不同类型的数据。

在字段属性面板中使用格式函数,用户可以直接选择要应用的格式类型,并进行相应的设置,如小数位数、千位分隔符、货币符号等。这种方式适用于单个字段的格式设置。

以下是一些常用的格式函数示例:

1.格式化数值:

-FORMAT(1000,"$0.00")返回"$1000.00"

2.格式化日期和时间:

- FORMAT(DATE(2024, 1, 1), "yyyy-mm-dd") 返回 "2024-01-01"

- FORMAT(TIME(12, 30, 0), "hh:mm:ss") 返回 "12:30:00"

3.格式化货币:

- FORMAT(1000, "Currency") 返回 "$1,000.00"

-FORMAT(1000,"C2")返回"$1,000.00"

4.格式化千位分隔符: -FORMAT(1000,"_-$#,###")返回"_-$1,000"

需要注意的是,Power BI的格式函数是在可视化层面上对数据进行格式化,不会对数据源进行更改。因此,格式函数只会影响在报表中显示的数据,而不会对原始数据进行修改。

总结起来,Power BI的格式函数是一种非常有用的功能,可以根据用户的需求调整数据的显示方式,提供更好的数据可视化效果。通过格式函数,用户可以灵活地自定义数值、日期和时间等数据类型的显示格式。

power bi函数

- 1 - power bi函数

PowerBI(PowerBusinessIntelligence)是一种全新的商业智能分析解决方案,它包含了各种强大的工具和功能,帮助企业从大量原始数据中获取有价值的信息。此外,Power BI包含一套内置的可视化功能,可以更直观地帮助用户查看数据并做出正确的商业决策。为了提供更多的分析功能,Power BI提供了一系列函数,用户可以使用这些函数来实现特定的功能,从而使分析过程更有效率。

此外,Power BI数也可以大大减少用户对数据的输入/输出操作量,从而使数据更容易可用、可操作。Power BI数可以通过使用者指定数据,并为用户定义一些相应参数,然后根据参数和数据计算出结果,从而节省了大量的时间和精力。

Power BI置了很多函数,例如汇总函数、统计函数、逻辑函数、文本函数、日期/时间函数等,用户可以使用这些函数来操作数据,以及实现一些复杂的功能。汇总函数可以用来计算总和、平均数、最大值、最小值,统计函数可以用于计算聚合、分位数、计数、排序等,逻辑函数可以用于检查一系列的真假表达式,文本函数可以用于检索、替换、拆分、合并文本,日期/时间函数用于计算日期和时间间隔,以及改变日期和时间格式等。

使用者也可以使用Power BI来开发自己的函数,这些自定义函数可以帮助实现一些更为复杂的分析功能。这些函数可以用于计算数据的增量值、创建自定义维度和度量、计算百分比分布、实现连接性分析等。 - 2 - 总之,Power BI数可以大大提高用户数据分析的效率和准确性,使用者可以利用 Power BI做出更有效和准确的商业决策,提升企业的业务效率和竞争力。

powerbi累计计数函数

powerbi累计计数函数

Power BI是一款强大的商业智能工具,它可以帮助用户从各种数据源中提取数据,并将其转换为可视化的报表和仪表板。在Power BI中,累计计数函数是一种非常有用的函数,它可以帮助用户对数据进行累计计数,从而更好地了解数据的趋势和变化。

累计计数函数可以用于各种不同的场景,例如统计某个时间段内的销售量、计算某个产品的累计销售量、或者计算某个地区的累计人口数量等等。在Power BI中,累计计数函数通常使用DAX语言编写,下面我们来看一些常用的累计计数函数。

1. TOTALYTD函数

TOTALYTD函数可以用于计算某个时间段内的累计值。例如,我们可以使用TOTALYTD函数来计算某个产品在今年的累计销售量。该函数的语法如下:

TOTALYTD(,)

其中,表示要计算的表达式,表示日期列。例如,我们可以使用以下公式来计算某个产品在今年的累计销售量:

Total Sales YTD = TOTALYTD(SUM(Sales[Sales

Amount]),Sales[Order Date])

2. TOTALQTD函数

TOTALQTD函数可以用于计算某个季度内的累计值。例如,我们可以使用TOTALQTD函数来计算某个产品在第二季度的累计销售量。该函数的语法如下:

TOTALQTD(,)

其中,表示要计算的表达式,表示日期列。例如,我们可以使用以下公式来计算某个产品在第二季度的累计销售量:

Total Sales QTD = TOTALQTD(SUM(Sales[Sales

Amount]),Sales[Order Date])

3. TOTALMTD函数

TOTALMTD函数可以用于计算某个月份内的累计值。例如,我们可以使用TOTALMTD函数来计算某个产品在本月的累计销售量。该函数的语法如下:

TOTALMTD(,)

powerbi中sumif函数用法

在Power BI中,你可以使用DAX函数来模拟Excel中的SUMIF函数。DAX是一种用于Power BI和其他Microsoft Office应用程序的公式语言,它允许你执行各种数据分析任务。

在Power BI中使用DAX进行SUMIF操作的步骤如下:

1. 打开Power BI并导入你的数据集。

2. 在“字段”面板中,找到你想要对其进行SUMIF操作的字段。

3. 创建一个新的计算列,在弹出的对话框中输入你的DAX公式。

4. 在公式中使用SUMIF函数来应用条件并计算符合条件的值。

SUMIF函数的语法如下:

`SUMIF(condition, value_if_true, value_if_false)`

其中:

* `condition`:是一个表达式,用于定义条件。它可以是一个数字、文本、日期或逻辑值。

* `value_if_true`:是条件为真(即满足条件)时返回的值。

* `value_if_false`:是条件为假(即不满足条件)时返回的值。

例如,假设你有一个数据表,其中包含销售数据和产品类别信息。你可以创建一个新的计算列来计算每个产品类别的总销售额。使用SUMIF函数来实现这个目标:

* `=SUMIF(Table[Product Category] = "Electronics",

Table[Sales])`

这个公式将返回“Electronics”产品类别的总销售额。如果产品类别不是“Electronics”,则返回0。

请注意,在Power BI中使用DAX函数时,你可以使用更复杂和高级的条件来执行更复杂的分析任务。DAX函数提供了丰富的数据分析功能,可以根据需要进行深入学习和探索。

PowerBIExcelCEO驾驶舱-第四弹

PowerBIExcelCEO驾驶舱-第四弹

从本文开始合并之前的三篇文章并入一个系列《PowerBI & Excel

CEO 驾驶舱》。

第一弹 - PowerBI 日期区间

第二弹 - Excel 日期区间

第三弹 - PowerBI 相对日期区间

第四弹 - Excel 相对日期区间(也就是本文)

也许您从纯办公进入PowerBI领域,在这个系列中,我们也会分享如果用极简的工程式方法来不断优化迭代一个小项目。

本文主要是:【Excel版】PowerBI & Excel CEO 驾驶舱 - 0.2.00

- 190810 - 加入:相对日期XTD 的实现。

效果

也就是,用户选择:【截止到】【相对于】【XTD区间】系统应该自动计算近期结果并与上期做出实时比对以帮助决策者快速制定调整策略。

这与【Excel版】的历史分析一起配合,如下:

整个Excel文件也得到整理:

数据模型

在 Excel 数据模型中,如下: 除了此前的日期区间,本次加入相对日期区间。

相对日期区间

我们知道在 Excel 的数据模型中是无法实现 双向筛选 的,为此,我们的计算公式需要有些调整,如下:

KPI.Period.XTD:=CALCULATE( [KPI.Core] ,

CALCULATETABLE( '日期' , 'DatePeriod XTD' ) )

这非常简单,我们使用 CALCULATETABLE 来计算根据用户实时选择的区间,再计算 KPI。

对于相对应的上期,如下:

KPI.PX.Period.XTD:=

VAR XTD = IF( HASONEVALUE( 'DatePeriod XTD'[区间类型] ) ,

VALUES( 'DatePeriod XTD'[区间类型] ) )

RETURN SWITCH( TRUE(),

XTD = '当日' , CALCULATE( [KPI.Core] ,

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档