PARAM

为解析创建一个输入参数,并且为输入值定义要求。

输入参数是一个占位符,它使用户可以在调度或运行解析时指定实际值。

语法

//PARAM 变量名称 类型 <OPTIONAL> <MULTI> <SEPARATOR > <QUALIFIER >
<VALUES 值列表> 标签
    <描述>

参数

名称 描述
变量名称

存储用户选择或指定的分析输入值的变量的名称。

例如:

  • v_start_date
  • v_regions
  • v_input_file

还用作参数的唯一标识符。

说明

运行解析时,仅当用户提供输入值时才会创建变量。如果参数是可选的,并且用户跳过它,则不会创建该变量。

如果该解析中的后续逻辑要求该变量存在,您可以测试它是否存在,如果它不存在,则可以创建它并将其初始化。要了解更多信息,请参考设计可选的输入参数

类型

参数的数据类型,它控制可以输入的输入值的种类。

可以使用大写字母指定以下类型:

  • C – 字符数据
  • N – 数值数据
  • D – 日期时间数据的日期子类型
  • DT – 日期时间数据的日期时间子类型
  • T – 日期时间数据的时间子类型
  • L – 逻辑数据

说明

要使解析成功运行,必须限定字符输入值。

PARAM... F 工作方式

您还可以指定文件上传实用工具或 Windows 文件浏览器打开:

  • F – 打开一个文件上传实用工具或一个 Windows 文件浏览器,并允许用户在 AX Web 客户端或分析应用程序窗口中运行时,为解析选择一个非 Analytics 输入文件

    选择后,该文件名被自动输入为字符输入值。请仅指定 F。不要指定 F C

    例如:

    //PARAM v_input_file F... 

要了解更多信息,请参考为分析指定或选择一个非 Analytics 输入文件

说明

对于在机器人应用程序或 AX 客户端中运行的解析,不支持使用类型 F。要为这些环境指定输入文件,请使用 FILE 标记。要了解更多信息,请参考FILE

OPTIONAL

可选

指定参数可选,用户无需输入值。

要了解更多信息,请参考设计可选的输入参数

MULTI

可选

指定参数接受多个输入值。

说明

如果类型L(逻辑)或F(文件),则不能使用 MULTI

同时使用 MULTI 和 VALUES

MULTI 可以带 VALUES 选项,也可以不带该选项:

MULTI 

VALUES 

用户可以从值列表中选择一个或多个值。

MULTI 

VALUES 

用户可以手动输入一个或多个值。

有关详细信息,请参见MULTI 和 VALUES 选项内容汇总

多字符输入值

如果您指定 MULTI,并且类型C(字符),您还可以指定 SEPARATORQUALIFIER 选项,以自动在输入值字符串中插入分隔符(定界符)和文本限定符。

说明

要使解析成功运行,必须定界和限定多字符输入值。可以自动插入或者由用户手动插入分隔符和限定符。

SEPARATOR

可选

仅当指定 MULTI类型C(字符)时,才能使用 SEPARATOR

指定在多个字符输入值之间自动插入分隔符,以创建可传递给解析进行处理的分隔列表。

指定要使用的分隔符。常用分隔符(也称定界符)是逗号 ,

如果省略 SEPARATOR,则默认情况下使用单个空格作为分隔符。不能将空格符指定为

要了解更多信息,请参考定界和限定字符输入值

QUALIFIER

可选

仅当指定 MULTI类型C(字符)时,才能使用 QUALIFIER

指定在要传递给解析以进行处理的分隔列表中的每个字符输入值的开头和末尾自动插入一个文本限定符。包含在限定符中的所有文本都被视为纯文本。

指定要使用的限定符。常用限定符是单引号 '

如果省略 QUALIFIER,则不使用默认限定符。不能将空格符指定为

要了解更多信息,请参考定界和限定字符输入值

说明

解析输入参数当前不支持使用双引号 (") 作为文本限定符。您可以改而使用单引号 (')。指定双引号限定符会导致 PARAM 标记失效。

VALUES 值列表

可选

可供用户在运行解析时从中进行选择的值的列表。

使用以下语法指定值:

VALUES |值 1|值 2|值 3|值 n|

VALUES 和 MULTI

VALUES 可以带 MULTI 选项,也可以不带该选项:

VALUES 

MULTI 

用户可以从值列表中选择一个或多个值。

VALUES 

MULTI 

用户可以从值列表中选择单个值。

有关详细信息,请参见MULTI 和 VALUES 选项内容汇总

值列表中值的格式

字符值
  • 可以包含空格和标点符号
数值类型值
  • 可以是正数或负数
  • 必须使用十进制记数法指定它们,且不能使用千位分隔符

    例如,1500.00-1500.00

日期时间值
  • 必须使用格式 MM/DD/YYYY 指定日期

    例如,12/31/2014

  • 必须使用格式 MM/DD/YYYY hh:mm:ss 指定日期时间

    例如,12/31/2014 23:59:59

  • 必须使用格式 hh:mm:ss 指定时间

    例如,23:59:59

逻辑值 如果类型L(逻辑),则不能使用 VALUES
标签

参数的用户界面标签。

在客户端应用程序中,标签与输入域一起显示。

描述

可选

提供有关该参数的附加信息的描述性文本。

在客户端应用程序中,描述与输入域一起显示。

描述可提供帮助用户的说明。例如,“请输入工资结算期的截止日期”。

必须在关联 PARAM 标记后的下一行中输入描述。该文本可以有多行,但不能跳行。在客户端应用程序中显示时,不会保留换行符。

示例

基本示例

允许用户选择性地指定日期范围:

//PARAM v_start_date D OPTIONAL 开始日期(可选)
  输入分析的开始日期
//PARAM v_end_date D OPTIONAL 结束日期(可选)
  输入分析的结束日期

要求用户选择要处理的最大交易数

//PARAM v_maxTrans N VALUES |250|500|750|1000| 要处理的最大交易数

要求用户指定一个或多个贸易商类别代码:

//PARAM v_codes C MULTI SEPARATOR , QUALIFIER ' 要包括的贸易商代码
  指定一个或多个贸易商类别代码。在每个代码后按 Enter 键,以便使每个代码都位于单独的行上。请勿将代码放在引号中。

要求用户选择一个或多个贸易商类别代码

//PARAM v_codes C MULTI SEPARATOR , QUALIFIER ' VALUES |4121 出租汽车/豪华轿车|5812 餐馆|5813 酒吧 - 酒精饮料|5814 快餐店| 要包括的贸易商代码
  选择一个或多个贸易商类别代码。

高级示例

要求用户指定金额范围

您需要对表中落入最小和最大金额范围内的记录进行分类。此范围偶尔会改变,因此您提供输入参数,以允许运行解析的用户在调度或运行脚本时定义该范围:

COMMENT
//ANALYTIC test_analytic
//PARAM v_min_amount N 最低金额
  输入一个最低金额
//PARAM v_max_amount N 最高金额
  输入一个最高金额
END

CLASSIFY ON %v_FieldA% IF BETWEEN(金额, v_min_amount, v_max_amount) SUBTOTAL 金额 TO "Classified_%v_AnalysisTable%.FIL"

允许用户选择性地排除一个或多个客户编号

您需要对表中的记录进行分类,但是您想要给予用户从分析中排除某些客户的选择。

为此,您提供了一个可选的字符参数。您的脚本测试值是否被提供,如果已提供,则这些客户编号将被从分类命令中排除:

COMMENT
//ANALYTIC test_analytic
//PARAM v_cust_no C OPTIONAL MULTI SEPARATOR , QUALIFIER ' 要排除的客户编号(可选)
  请指定一个或多个客户编号。在每个编号后按 Enter 键,以便使每个编号都位于单独的行上。请勿将编号放在引号中。
END

IF FTYPE("v_cust_no") = "U" v_cust_no = ""
GROUP IF v_cust_no = ""
  CLASSIFY ON %v_FieldA% SUBTOTAL AMOUNT TO "Classified_%v_AnalysisTable%.FIL"
ELSE
  CLASSIFY ON %v_FieldA% IF NOT MATCH(CUSTNO, %v_cust_no%) SUBTOTAL AMOUNT TO "Classified_%v_AnalysisTable%.FIL"
END

允许用户选择输入文件(仅限AX Web 客户端或分析应用程序窗口)

您要将分析应用程序分发给同事以供其在分析应用程序窗口中运行它。当他们在该应用程序中运行解析脚本时,您想要向其提供一个 Windows 文件浏览器,以便选择从中导入数据的 Microsoft Excel 文件:

COMMENT
//ANALYTIC test_analytic
//PARAM v_input_file F 输入文件
  请选择一个输入文件
END

IMPORT EXCEL TO 五月交易原始数据 五月交易原始数据.fil FROM "%v_input_file%" TABLE "Trans2_May$" CHARMAX 100 KEEPTITLE

需要用户指定输入文件路径和文件名(仅限分析应用程序窗口)

您要将分析应用程序分发给同事以供其在分析应用程序窗口中运行它。当他们在应用程序中运行解析脚本时,您希望他们指定文件路径和文件名以用作导入文件:

COMMENT
//ANALYTIC test_analytic
//PARAM v_input_file C 输入文件路径和名称
  请输入一个绝对文件路径和一个文件名,例如:C:\Users\用户名\Documents\ACL Data\Sample Data Files\Trans_May.xls
END

IMPORT EXCEL TO 五月交易原始数据 五月交易原始数据.fil FROM "%v_input_file%" TABLE "Trans2_May$" CHARMAX 100 KEEPTITLE

对可选参数使用默认值

您正在创建一个解析,以便将交易记录提取至结果表。您想要给予运行该脚本的用户一个选项,使其可以提供一个日期范围和一个用于过滤要提取的记录的实体列表。

为此,您创建了三个可选参数:

  • v_start_date
  • v_end_date
  • v_entity_list

在该脚本的起始行中,您测试是否已设置这些值。如果它们未设置,则设置最小日期和最大日期的默认值以及一个要用 v_entity_list 测试的默认标记。

在 EXTRACT 命令中,您使用这些值来过滤记录:

COMMENT
//ANALYTIC test
  此解析测试 PARAM
//RESULT TABLE t_results
//PARAM v_start_date D OPTIONAL 输入开始日期
//PARAM v_end_date D OPTIONAL 输入结束日期
//PARAM v_entity_list C MULTI OPTIONAL |entity1|entity2|
END

IF NOT ISDEFINED("v_start_date") v_start_date = `19000101`
IF NOT ISDEFINED("v_end_date") v_end_date = `99991231`
IF NOT ISDEFINED("v_entity_list") v_entity_list = "'all'"

EXTRACT FIELDS ALL TO t_results IF BETWEEN(transaction_date v_start_date v_end_date) AND (MATCH(entity_field %v_entity_list%) OR v_entity_list = "'all'")

备注

设计可选的输入参数

如果您将 OPTIONALPARAM 标记结合使用,则当解析运行时,可能创建或不创建与解析输入参数相关联的变量。

  • 自动创建变量如果用户指定输入值
  • 不创建变量如果用户跳过可选参数且不指定输入值

测试该参数变量是否存在

如果解析中的后续逻辑依赖于能够评估参数变量的内容,包括评估空或空值状态,您需要测试该参数变量是否存在。如果该参数变量不存在,您需要创建它并将其初始化为空值。

将 IF 命令与 FTYPE( ) 函数或 ISDEFINED( ) 函数结合使用,以执行该测试并创建该变量(如果它不存在):

IF FTYPE("变量名") = "U" 变量名 = ""
IF NOT ISDEFINED("变量名") 变量名 =	""

何时执行测试

请在分析标头之后和任一依赖于该参数变量的 ACLScript 逻辑之前执行该测试。

MULTI 和 VALUES 选项内容汇总

下表汇总了 MULTI 和 VALUES 选项对用户界面中的用户输入控制的影响。

用户输入控制(机器人应用程序)

参数设计

MULTI

VALUES

在域中手动输入单个输入值

在域中手动输入一个或多个输入值

从值下拉列表中选择单个输入值

从值核对列表中选择一个或多个输入值

定界和限定字符输入值

如果有一个以上的字符输入值,则必须用分隔符分隔字符输入值,并且必须对这些值进行限定,才能使解析成功运行。

避免嵌套文本限定符

当您创建字符输入参数时,以及当您指示解析的用户如何输入字符输入值时,您需要十分小心,避免创建冗余或嵌套文本限定符(限定符内的限定符)。冗余文本限定符会导致输入参数失效。

插入文本限定符的方法

有四种用来在字符输入值前后插入文本限定符的不同方法。根据方法的不同,还会在输入值之间插入分隔符。

在您开发解析时,您可能需要试用不同的方法,以查找哪种方法最适合于用户将输入的字符值。

说明

其中的一个或多个方法可能不适用,具体取决于您如何使用 MULTI 和 VALUES 选项。

每个输入参数都只能使用这些方法中的一种方法。

1 使用 SEPARATOR 和 QUALIFIER

在 PARAM 标记中包括 SEPARATOR 和 QUALIFIER 选项

例如:

//PARAM v_regions C MULTI SEPARATOR , QUALIFIER '

如果您使用不带 MULTI 的 VALUES,则不适用。

提示

请尽量使用此方法。它是最省力和最不容易出错的方法。

2 手动指定分隔符和限定符

需要解析用户除了输入实际输入值以外,还要手动指定分隔符和限定符。

例如:

'北美','欧洲','亚洲'

如果您使用带有或不带 MULTI 的 VALUES,则不适用。

3 在值列表中包括限定符

对于用 VALUES 选项指定的值列表中的每个值,包括限定符。

例如:

VALUES |'亚洲'|'欧洲'|'中东'|'北美'|

如果您使用不带 VALUES 的 MULTI,则不适用。

4 将参数变量围在限定符中

在 Analytics 脚本的语法中,将参数变量围在文本限定符中。

例如:

IF MATCH(REGIONS, "%v_regions%")

仅当您使用不带 MULTI 的 VALUES 时,才应使用此方法。

 

说明

解析输入参数当前不支持使用双引号 (") 作为文本限定符。在值列表中,或者当您手动指定输入值周围的限定符时,您可以对 QUALIFIER 选项使用单引号 (')。在 Analytics 脚本正文中,可以使用双引号作为文本限定符。

何时使用不同的方法

下表对何时使用插入文本限定符的不同方法进行了总结。

 

MULTI 

VALUES 

MULTI 

VALUES 

MULTI 

VALUES 

方法 1

使用 SEPARATOR 和 QUALIFIER 选项

如果使用,则不要使用方法 2

不适用

如果使用,则不要使用方法 3

方法 2

手动指定分隔符和限定符

如果使用,则不要使用方法 1

不适用

不适用

方法 3

值列表中包括限定符

不适用

如果使用,则不要使用方法 4

如果使用,则不要使用方法 1

方法 4

将参数变量围在限定符中

不使用

如果使用,则不要使用方法 3

不使用

为分析指定或选择一个非 Analytics 输入文件

下表总结了为分析指定或选择非 Analytics 输入文件的不同方法。您选择的方法部分取决于将使用哪个客户端应用程序来运行解析。

方法

详情

机器人

AX 客户端

AX Web 客户端

分析应用程序窗口

'F' 类型的 PARAM 标记

  • AX Web ClientAX Web 客户端用户使用文件上传实用工具选择输入文件

    该文件名被自动指定为解析输入值。该文件被自动上传到 AX 服务器上的适当相关文件子文件夹。

  • 分析应用程序窗口用户使用 Windows 文件浏览器选择输入文件

    文件路径和文件名被自动指定为解析输入值。

此方法是最佳选择,因为它将灵活性、易用性和精确性融为一体。

 

 

'C' 类型的 PARAM 标记

用户手动指定输入文件路径和文件名作为解析输入值。

因为文件路径和文件名不是预先指定的,所以此方法可提供灵活性。但是,此方法比较费力且容易出错,因为它要求用户手动输入这些值。

 

 

 

FILE 标记

(有关详细信息,请参见FILE

  • 机器人应用程序 输入文件必须位于机器人中的输入/输出选项卡中
  • AX 客户端、AX Web 客户端 输入文件必须位于 AX 服务器上适当的相关文件子文件夹中

 

在解析中硬编码的输入文件路径和文件名

此方法可避免使用 PARAM 标记,但是它的灵活性最差。在每一台运行该解析的计算机上,用户都必须确保输入文件所包含的文件路径和文件名与该解析中指定的完全相同。

 

 

 

ACL 脚本指南 14.1