繁体   English   中英

在 Power BI 列上运行 R 脚本

[英]Run R Script on Power BI Column

我在 Power Bi 中有一个包含许多列的数据集,其中包含有关事故单的信息(例如解决问题需要多长时间等)

不幸的是,我得到的数据不是正确的时间格式。 我写了一个简单的 R 函数,它会重新计算时间并返回正确的值:

calculateHours <- function(hours) {
  x <- trunc(hours/24)
  rest <- mod(hours,24)
  y <- trunc(rest/10)
  z <- mod(rest,10)
  result <- (((x+y)*10)+z)
  return(result)
}

示例:如果您通过函数运行它,204 小时将变成 92 小时。

现在我需要有一个包含计算值的新列。 例如,“业务经过时间 = 204”->“业务经过时间计算(新列)= 92”

如何在 Power BI 中使用此函数添加一个新列,该列使用来自该表另一列的值,然后计算正确的时间值?

我还是 Power Bi 和 R 的新手,所以任何帮助将不胜感激! 提前致谢!

在 Power BI 查询编辑器中,您可以向查询添加 R 脚本(转换 -> 运行 R 脚本)。 这是一个简单的示例,假设您有一列Number

# 'dataset' holds the input data for this script

myfunction <- function(x) 
{
    return (x + 1)
}

dataset$NewNumber <- myfunction(dataset$Number) ## apply function and add result as new column
output <- dataset ## PowerBI uses "output" as result from this query step

这是更详细的介绍: https : //www.red-gate.com/simple-talk/sql/bi/power-bi-introduction-working-with-r-scripts-in-power-bi-desktop-part- 3/

Power Query 可以使用 M 公式处理大部分计算本身。 它比调用 R 脚本要简单得多,集成度更高,而且可能更快。

在 Power Query Editor 中,导航Add Column > Custom Column ,然后输入 M 公式,如下所示。

自定义列

let
    x = Number.IntegerDivide([Hours], 24),
    rest = Number.Mod([Hours], 24),
    y = Number.IntegerDivide(rest, 10),
    z = Number.Mod(rest, 10),
    result = (x + y) * 10 + z
in
    result

结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM