【问题标题】:Using R in icCube MDX+, how to pass and retreive an array?在icCube MDX中使用R,如何传递和检索数组?
【发布时间】:2018-03-13 18:50:25
【问题描述】:

您可以在 icCube 中使用 R 函数,如 https://www.iccube.com/support/documentation/mdx_integration/r_integration.php 上演示的那样

我需要调用一个更复杂的自定义 R 脚本,该脚本对我想要提供的矩阵进行计算。结果应该是一个向量。

示例: - 矩阵:有措施的项目:总周数,小时/周 - 矢量:(与项目顺序相同):开始周

这可能吗?从 MDX 中执行此操作的语法如何?

【问题讨论】:

    标签: r mdx iccube


    【解决方案1】:

    像这样,R_RandomgVector 正在生成一个由参数定义的大小的随机值向量。成员 TEST 只是返回返回向量的长度。我猜 v_ 可以是一个矩阵,在 R 函数中转换并返回一个向量,如下所示

    WITH
        NATIVE FUNCTION R_RandomVector(Value v_) AS
            /* R    
    
              round(runif(v_,0,1), 2)    
            */
        MEMBER TEST as R_RandomVector(100)->length()
    SELECT
      TEST on 0
    FROM [Sales]
    

    还有一个矩阵

    WITH
        NATIVE FUNCTION R_RandomVector(Value v_) AS
            /* R
    
              t( v_ %*% runif( nrow(v_) ,0,1) )
    
            */
        MEMBER TEST as R_RandomVector( Matrix([Product].[Product].[Article],[Product].[Product].[Article], [Measures].[Count])  )
    SELECT
      TEST on 0
    FROM [Sales]
    

    【讨论】:

    • 谢谢,有了你的建议和提示,我终于让它工作了。我在将向量结果绑定到真正的 MDX 语句时遇到了一些问题,但我设法通过以下方式做到了这一点:R function TEST .... MEMBER [Measures].[result] as TEST->value(rank(set , member)-1) SELECT {[Measures].[result]} on 0 , set on 1 FROM [cube] 我现在唯一的问题是,为集合的每个成员调用函数 TEST 。有没有办法缓存 TEST 的结果?
    • 也许添加一个中间计算。将被缓存的成员(使用 R 函数)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多