Power BI 中的 R 脚本 returns 日期为 Microsoft.OleDb.Date

R script in Power BI returns date as Microsoft.OleDb.Date

精华:

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


详情

我正在尝试使用 Edit Query 中的 Run R Script 功能在 Power BI 中转换 table。 table 的来源是一个 csv 文件,其中有一列日期格式为 2017-01-04 (yyyy-mm-dd):

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

使用 Get Data,Power BI 显示相同的日期列,如下所示:

打开 Edit Query window 后,相同的日期列仍然如下所示:

但是,当尝试 运行 具有相同数据的 R 脚本时,该列仅包含“值”Microsoft.OleDb.Date,如下所示:

我 运行ning 的 R 脚本很简单:

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

如果我尝试更改数据类型,则会返回 en 错误:

这一切对我来说都很奇怪,我还没有找到合理的解释 Google。

有什么建议吗?

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

Power BI 中的应用步骤和生成的日期列应如下所示:

详情如下:

  1. 从 csv 文件加载数据后,转到 编辑查询 并将数据类型更改为文本:

  1. 运行 R 脚本

  2. 脚本提供输出后,将数据类型改回 日期

上周我仔细研究了这个答案,发现它对我不起作用。我从 R 脚本收到一个错误 "character string is not in a standard unambiguous format." 我假设这是由于自原始答案以来的几年中 Power BI 发生的许多更新,因为据我所知,所有日期格式完全相同(如果我 运行 在 R/RStudio 中单独显示数据,则不会发生此错误)。我想我会把我的解决方案留给那些像我一样发生这种情况的人。

我做了与 vestland 的解决方案完全相同的事情,只是我没有将数据类型更改为文本,而是必须将其更改为整数:

1) 编辑查询。 2) 将所有日期列转换为 "Whole Number." 3) 运行 R 脚本,并将日期列从数字转换为日期:

在 R 中,这需要您使用 as.Date() 或 lubridate::as_date() 以及 origin 参数,origin = "1899-12-30" 以获得正确的日期,当您从整数转换回日期。 (这是起源而不是“1900-01-01”,因为 Excel/Power 我听说 BI 在 20 世纪初没有考虑两个闰年。)