添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

由于不同国家地区风俗不同,导致使用的日期格式不一样,例如天朝和很多亚洲国家,使用的是年月日格式(YYYMMDD),即2018/01/12,代表2018年1月12日;大部分欧洲国家以及其之前的殖民地使用的是日月年格式(DDMMYYYY),例如英国,法国,澳大利亚,新西兰等,在这种格式下01/12/2018代表2018年12月1日。还有少部分追随美国的非主流国家使用了月日年格式(MMDDYYYY),而在这些国家中01/12/2018代表2018年1月12日,与日月年格式的意义有很大差别。因此,在Power BI中对数据进行处理时要特别留意数据的日期格式。

如果亲要处理的日期数据都是统一的US格式,那恭喜你,基本不需要任何特殊处理,只需要留意一下选项->区域设置中区域导入设置是否选了英语(美国)就行。这个是一个全局控制选项,会控制导入到当前Power BI报表中数据的显示样式。选择美国意味着所有的日期数据都会按照MMDDYYYY的格式进行导入,并且按照MMDDYYYY的样式进行显示。

如果处理的数据格式是既有US格式又有UK格式的怎么办?即,可能有两行日期列,一行是MMDDYYYY的格式,另外一行是DDMMYYYY的格式。一般情况下,如果导入区域选择的是美国,当导入这种数据时,Power BI会拼命的按照MMDDYYYY要求对所有日期进行处理,如果它发现有月份数大于12时,就会跑错,认为当前日期数据有问题。

显然,按照UK日期DDMMYYYY格式解读的话,Date UK一行表示1月1日,2日,3日和13日,与Date US一列中的日期相同。但是按照US格式解读,这一行就变成了1月1日,2月1日,3月1日和无法解析的13月1日,明显数据意义都发生了变化。要解决该问题,需要把UK日期数据转换成US日期数据。方法是选择Date UK数据列,然后右键,选择更改类型->使用区域设置。这个地方选择日期数据类型,然后区域设置选择英语(英国),目的是告知Power BI当前导入的数据是原始格式是DDMMYYYY,需要转译成选项->区域设置中区域导入设置是英语(美国)使用的MMDDYYYY的格式。
这里写图片描述
这里面需要特别注意,更改UK Date区域设置这一步,必须是在原始数据上进行,即Date UK列下没有任何Error,不能在Date 包含Error的情况下进行,否则Power BI无法正确解析。
这里写图片描述

如果要处理的当前表单所有日期都是UK的,则可以直接更改选项->区域设置中区域导入设置,换成英语(英国)即可。但是注意,无论是那种区域更改,修改的都是Power BI中日期的显示样式,并不会对DAX中的日期函数产生影响。为什么这么说呢,可以看下面这个例子。

把Power BI的区域设置改成英语(英国),这样,当前Power BI文件中所有显示的日期都变成了DDMMYYYY格式。
这里写图片描述
如果用DDMMYYYY格式在这个文件中创建一个1月1日到12月1日的日历,效果是下面这个样子。

Calendar = CALENDAR("1/1/2018","1/12/2018")

这里写图片描述
我们期待的是DAX CALENDAR函数会将输入的1/12/2018解析为2018年12月1日,但实际上DAX函数还是将该日期按照美国MMDDYYYY的格式进行了解读,变成了2018年1月12日。

那么DAX函数是否始终如一的对日期数据按照MMDDYYYY格式进行解读呢,似乎也不是,例如对当前公式进行修改,变为:

Calendar = CALENDAR("1/1/2018","31/12/2018")

此时,生成的日历变成了从1月1日到12月31日,符合UK格式标准。
这里写图片描述

从这个例子中可以看出,其实DAX中对日期的处理并不是完全固定死按照MMDDYYYY的格式进行了解读,但是一旦遇到数据可以符合MMDDYYYY的格式要求,就一定会按照MMDDYYYY的格式进行了解读。因此,为了兼容DDMMYYYY数据,防止DAX对日期格式解读出错,对于上面公式可以使用DATE函数来输入日期。因为DATE函数固定了需要以年月日顺序输入日期,因此可以保证解读日期格式不会出错。

Calendar = CALENDAR(DATE(2018,1,1),DATE(2018,12,1))

DATE函数输入日期比较适用于需要使用固定日期所谓参数的表达式。如果是需要动态日期,则可以考虑使用MIN和MAX函数。例如,对于DATEDIFF这个函数,如果按照UK DDMMYYYY格式求1月1日到3日一共间隔多少天,当直接输入日期时,DATEDIFF函数会按照US格式解析,认为求得是1月1日到3月1日的日期间隔,结果是59天。
这里写图片描述

如果用MIN和MAX函数获取当前表单中的最大日期和最小日期,则DATEDIFF函数就能按照DDMMYYYY格式正确计算出日期间隔。

FixDate = DATEDIFF(MIN(Locale[Date UK]),MAX(Locale[Date UK]),DAY)
PowerBI 中, 日期 表的问题是始终都无法绕过的一个问题,首先是微软默认的 日期 显示 如下: 可能这种形式我们自己看起来没啥的,但是要考虑做出来的可视化报表呈现的对象绝对不仅仅是自己,那么就需要我们自己来制作自己的 日期 维度表。 太多方法就不说了,这里提供两种方法大家参考: 一、M函数: 1、在PQ编辑器界面,左边查询的位置,点击鼠标右键,新建空白查询: 2、点击操作界面的上方的高级属性编辑器: 3、将查询里面所有的内容清空,复制下面这段代码进去: CalendarType .
一、 日期 日期 表会填充跟 日期 相关的信息 ,比如有专门的列( 日期 列)(唯一 不重复 且 不间断) ,都会有他的 份 等信息 (有助于我们不同层级的去分析数据)。 p bi 内置 日期 表会将p bi 中时间 日期 格式 的字段 自动内置 日期 表 标记 日期 表 层次结构取消 (1)在字段处取消(2)在设置里取消 二、层级结构 (1)直接拖 如何将两个 日期 列展开成多行? 因为业务需求,开始 日期 和结束 日期 是一个值的时间范围,想要将开始 日期 和结束 日期 之间的所有 日期 展开成多行,结果为 日期 列和值列,最后将 日期 列与 日期 表建立关系进行数据分析。 我们先从最简单的内容分析,先看第一行,如果我们要得到2012/4/2到2012/4/4之间的 日期 ,我们该怎么做?大家应该立马会想到使用数字列表的{1…n}...
8足不出户,足不出沪在企业报表中,特别是电商或零售企业最常用的报表是日报,那么怎么设置才能每天打报表时默认状态都是最新的 日期 呢?我们先来构建一张 日期 表,用到的都是些基础的 日期 函数,就不再过多介绍Date = ADDCOLUMNS ( CALENDAR (DATE(2020,1,1), TODAY()-1), "Year", YEAR ( [Date] ), "Month", Month ( [Date] ), "YearMonth", FORMAT ( [Date], "YYYYMM" ),
Power BI 中,可以使用DATEVALUE函数将文本转换为 日期 格式 。如果文本无法转换为 日期 格式 ,则DATEVALUE函数将返回错误。因此,您可以使用以下公式来判断文本是否可以转换为 日期 格式 : =IFERROR(IF(DATEVALUE(<text>)>0, "可以转换为 日期 格式 ", "无法转换为 日期 格式 "), "无法转换为 日期 格式 ") 其中,`<text>`是您要判断的文本。该公式将返回“可以转换为 日期 格式 ”或“无法转换为 日期 格式 ”。