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

时间:2017-01-24 08:25:04

标签: r powerbi

我尝试使用Run R Script中的Edit Query功能转换Power BI中的表格。 该表的来源是一个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会显示与此相同的日期列:

enter image description here

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

enter image description here

但是,当尝试使用相同数据运行R sctript时,该列仅包含"值" Microsoft.OleDb.Date喜欢这样:

enter image description here

我正在运行的R脚本只是:

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

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

enter image description here

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

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

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

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

以下是详细信息:

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

    1. 运行R脚本

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

答案 1 :(得分:3)

我上周在这个答案上徘徊,发现它对我不起作用。我从R脚本收到一个错误消息,“字符字符串不是标准的明确格式”。我认为这是由于自原始答案以来,多年来Power BI发生了许多更新,因为据我所知,所有日期都是完全相同的格式(如果我执行此错误,则不会发生数据分别在R / RStudio中)。我想我会把解决方案留给像我这样的人。

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

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

在R中,这要求您使用带原点参数origin =“ 1899-12-30”的as.Date()或lubridate :: as_date()来获取从整数转换回来的正确日期至今。 (我听说这是起源,而不是“ 1900-01-01”,因为我听说Excel / Power BI在20世纪初期并没有解决两个leap年。)