在Power BI中的R脚本返回日期为Microsoft.OleDb.Date。

13

本质:

为什么Powerbi显示形式为2017-01-04 (yyyy-mm-dd)的日期数据会像这样显示?

enter image description here


细节:

我正在尝试使用编辑查询中的运行R脚本功能来转换Power BI中的表格。表格的来源是带有以2017-01-04 (yyyy-mm-dd)格式表示的日期列的csv文件:

2017-01-04
2017-01-03
2017-01-02
2017-01-01
2016-12-31
2016-12-30
2016-12-29
2016-12-28
2016-12-27
2016-12-26
2016-12-25
2016-12-24
2016-12-23
2016-12-22

使用 获取数据 功能,Power BI 显示的日期列如下图所示:

enter image description here

打开 编辑查询 窗口后,同样的日期列仍然是这样显示的:

enter image description here

然而,当尝试使用相同的数据运行 R 脚本时,该列仅由 "值" Microsoft.OleDb.Date 组成,如下图所示:

enter image description here

我正在运行的 R 脚本非常简单:

# 'dataset' holds the input data for this script
output <- head(dataset)

如果我试图更改数据类型,就会返回错误:

在此输入图片描述

这一切对我来说都很奇怪,即使使用谷歌也没有找到合理的解释。

有什么建议吗?


2
这一次,Power BI论坛实际上给出了一个很好的解决方案来解决与R相关的问题。只需在运行R脚本之前将数据类型更改为字符串格式即可。然后您可以在之后更改回任何日期格式。如果没有得到任何关注,我将在一两天内删除这个问题。 - vestland
2
将其作为答案发布并标记为正确。也许它会吸引点赞 :) - Mike Wise
1
很高兴你没有删除这个问题。我需要它。 - Jacob Nordstrom
2个回答

20

我已经在评论区提供了解决方案,但是我也会在这里添加详细的建议。

在Power BI中应用以下步骤,并且生成的日期列应如下所示: enter image description here

以下是详细说明:

  1. 从csv文件加载数据后,转到 Edit Queries 并更改数据类型为文本:

enter image description here

  1. 运行R脚本

  2. 一旦脚本提供了输出,就将数据类型更改回日期


5
上周我偶然发现了这篇答案,但我发现它对我无效。运行R脚本时,我会收到一个错误提示:"字符字符串不是标准且不具歧义的格式"。我的猜测是由于自原回答以来,Power BI已经推出了多次更新,可能导致此错误。因为据我观察,所有日期都以完全相同的格式呈现(如果我在R / RStudio中单独运行数据,就不会出现此错误)。因此,我想把我的解决方案留给那些像我一样遇到类似问题的人。

我尝试实施了vestland提供的方法,只不过我将数据类型从文本更改为整数:

1)编辑查询。 2)将所有日期列转换为“整数”。 3)运行R脚本,将日期列从数字转换回日期:

在R中,这需要使用as.Date()或lubridate::as_date()函数,同时设置origin参数,origin = "1899-12-30",以正确地将整数转换为日期。(这里的起点是"1899-12-30"而不是"1900-01-01",因为Excel / Power BI没有考虑20世纪早期的两个闰年,我听说过这个问题。)


1
有意思啊!而且,很可能是版本问题。 - vestland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接