RCOMMAND 命令
将 Analytics 表作为数据框架传递给一个外部 R 脚本,并且使用该外部 R 脚本的输出在 Analytics 项目中创建一个新表。
语法
RCOMMAND FIELDS 域 <...n> RSCRIPT 脚本路径 TO 表名称 <IF 测试> <WHILE 测试> <FIRST 范围|NEXT 范围> <KEEPTITLE> <SEPARATOR 字符> <QUALIFIER 字符> <OPEN>
参数
名称 | 描述 |
---|---|
FIELDS 域名称 <...n> |
要包括在发送给 R 脚本的数据帧中的源 Analytics 表中的域或表达式。 根据您所使用的 Analytics 版的不同,您可能在向 R 发送包含某些特殊字符的数据时遇到错误:
说明 混合语言数据也不受支持,例如,同时包含日语字符和中文字符的表。 |
RSCRIPT 脚本路径 |
文件系统上的 R 脚本的完整或相对路径。 请将脚本路径放在引号中。 |
TO 表名 |
要将命令结果发送到的位置:
输出表是从 R 脚本返回的数据帧或矩阵创建的。 |
IF 测试 可选 |
要处理当前记录所必须满足的条件。 被传递给 R 脚本的数据帧仅包含那些满足该条件的记录。 |
WHILE 测试 可选 |
一个条件表达式,它必须为真以便处理每个记录。 该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。 说明 如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。 |
FIRST 范围 | NEXT 范围 可选 |
要处理的记录数:
请使用范围指定要处理的记录数。 如果您省略 FIRST 和 NEXT,则会默认处理所有记录。 注意 在运行 RCOMMAND 时,当前版本的 NEXT 存在一个已知的问题。 请避免使用此选项,否则记录索引可能重置到第一个记录,而无论选择了哪个记录。 |
KEEPTITLE 可选 |
将第一行数据视为域名称而非数据。 如果被省略,则使用通用域名称。 如果您想要在 R 脚本中使用列名称检索数据,则需要此选项。 |
SEPARATOR 字符 可选 |
要用作域之间的分隔符的字符。 您必须将该字符指定为带引号的字符串。 默认字符是一个逗号。 说明 请避免使用出现在输入域中的任何字符。 如果 SEPARATOR 字符出现在输入数据中,则结果可能受到影响。 |
QUALIFIER 字符 可选 |
要用作文本限定符以便环绕和标识域值的字符。 您必须将该字符指定为带引号的字符串。 默认字符是一个双引号。 说明 请避免使用出现在输入域中的任何字符。 如果 QUALIFIER 字符出现在输入数据中,则结果可能受到影响。 |
OPEN 可选 |
在命令执行后打开该命令创建的表。 仅当该命令创建输出表时有效。 |
示例
使 R 启动并运行 (Hello world)
您创建一个 hello world 脚本以测试 Analytics 和 R 之间的连接:
Analytics 命令
RCOMMAND FIELDS "Hello", ", world!" TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r"
R 脚本 (analysis.r)
srcTable<-acl.readData() # 创建表并将其发送回 ACL output<-data.frame( c(srcTable[1,1]), c(srcTable[1,2]) ) # 添加列名称并将该表发送回 ACL colnames(output) <- c("Greeting","Subject") acl.output<-output
使用行和列坐标访问域数据
您将一些发票域发送到一个 R 脚本以便在 Analytics 外部进行分析:
Analytics 命令
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Date Invoice_Number Vendor_Number TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r"
R 脚本 (analysis.r)
# 从 R 脚本中数据帧的第二行检索发票编号 srcTable<-acl.readData() srcTable[2,4]
使用列名称访问域数据
您将一些发票域发送到一个 R 脚本以便在 Analytics 外部进行分析。 您使用 KEEPTITLE 选项以便可以在 R 中按名称引用列:
Analytics 命令
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Number TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE
R 脚本 (analysis.r)
# 从 R 脚本中数据帧的第二行检索发票编号 srcTable<-acl.readData() srcTable["2","Invoice_Number"]
将超过 1000.00 的发票记录发送到 R 脚本
您将一些发票域发送到一个 R 脚本以便在 Analytics 外部进行分析。 您使用 IF 限制被发送到 R 的记录。只有那些发票金额超过 1000.00 的记录被发送:
Analytics 命令
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Number TO "r_result" IF Invoice_Amount > 1000.00 RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE
R 脚本 (analysis.r)
# 从 R 脚本中数据帧的第二行检索发票编号 srcTable<-acl.readData() srcTable["2","Invoice_Number"]
发送发票记录并返回倍增的发票金额
您将一些发票域发送到一个 R 脚本以便在 Analytics 外部进行分析。 R 脚本针对命名列中的每个单元执行单个操作:
Analytics 命令
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Number TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE
R 脚本 (analysis.r)
# 返回 ACL 表的一部分并使其中的值翻倍 srcTable<-acl.readData() acl.output<-srcTable["Invoice_Amount"] * 2
备注
说明
有关此命令工作原理的详细信息,请参见 Analytics 帮助。
在 R 脚本中引用 Analytics 数据
Analytics 表被作为 R 数据框架传递给脚本。 数据框架是可能包含数据的不同模式或类型的表格式数据对象。
要在 R 脚本中使用由 Analytics 创建的数据框架,请调用 acl.readData() 函数并且在变量中存储所返回的数据框架:
# 在可以在整个脚本中引用的名为 myTable 的数据帧中存储该 Analytics 表 myTable<-acl.readData()
如需从数据框架中的单元格检索数据,请使用如下方法之一:
-
使用行和列坐标:
# 检索数据帧的第一行、第二列中的值 myTable[1,2]
说明
坐标基于在命令中指定的域的顺序,而非当前打开的表布局或视图。
-
使用行和列名称:
# 检索该数据帧的第一行和“myColumnTitle”列中的值 myTable["1","myColumnTitle"]
您必须指定该命令的 KEEPTITLE 选项才能使用列名称。
行被命名为“1”、“2”、“3”,并相应递增。 您也可以使用名称和坐标的组合。
将数据传回 Analytics
要将一个数据帧或数据矩阵返回至 Analytics 并创建一个新表,请使用以下语法:
# 将 myNewTable 数据帧返回至 Analytics 以创建一个新表 acl.output<-myNewTable
说明
当 R 脚本终止时,您必须将数据帧或数据矩阵返回至 Analytics。 请确保该数据帧或数据矩阵中的列仅包含原子值,而不包含列表、矩阵、数组或非原子对象。 如果无法将这些值转换到 Analytics 数据类型,该命令会失败。
数据类型映射
Analytics 数据类型被使用 Analytics 项目和 R 脚本之间的转换流程转换为 R 数据类型:
Analytics 数据类型 | R 数据类型 |
---|---|
逻辑 | 逻辑 |
数值 | 数值 |
字符 | 字符 |
日期时间 | 日期,POSIXct,POSIXlt |
性能和文件大小限制
对于大小超过 1 GB 的输入数据,运行您的 R 脚本以及处理返回数据所花费的时间会增加。 R 不支持大小不低于 2 GB 的输入文件。
被发送到 R 的记录数也会影响性能。 对于两个具有相同文件大小和不同记录数的表而言,处理包含较少记录的表时更快一些。
处理多字节字符数据
如果要在多字节字符集(例如,中文)中向 R 发送数据,则必须在 R 脚本中适当地设定系统区域设置。 要成功向 R 发送多字节数据表,则 R 脚本的第一行必须包含以下函数:
# 将区域设置设定为中文的示例 Sys.setlocale("LC_ALL","Chinese")
有关 Sys.setlocale( ) 的更多信息,请参阅 R 文档。
R 日志文件
Analytics 将 R 语言消息记录到项目文件夹中的 aclrlang.log 文件。 使用此日志文件可调试 R 错误。
提示
该日志文件位于 Analytics Exchange 解析作业的结果文件夹中。
在 AX 服务器上运行 R 脚本
如果您正在编写要在 AX 服务器上运行的分析应用程序并且想要使用外部 R 脚本,请:
- 将该文件作为相关文件与分析应用程序一同上传。
- 使用 FILE 解析标记标识文件。
- 使用相对路径 ./文件名.r 引用文件。
说明
使用相关文件可确保在用 Analytics Exchange 运行 R 时,TomEE 应用服务器账户具有足够的权限访问文件。