【问题标题】:Run R Script on Power BI Column在 Power BI 列上运行 R 脚本
【发布时间】:2020-03-04 14:20:31
【问题描述】:

我在 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 的新手,因此我们将不胜感激!提前致谢!

【问题讨论】:

    标签: r powerbi


    【解决方案1】:

    在 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/

    【讨论】:

      【解决方案2】:

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

      在 Power Query 编辑器中,导航 添加列 > 自定义列,然后输入 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
      

      【讨论】:

        猜你喜欢
        • 2021-05-01
        • 1970-01-01
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多