计算域
在 Analytics 表中,计算域是一个显示表达式的结果而不是实际物理数据的域。 计算域通常执行某些种类的计算、操作或数据转换。
有关表达式的详细信息,请参见表达式使用。
计算域有什么用处?
您使用的物理数据为分析提供了基础,但您经常需要从物理数据中推断信息或者执行计算以推进您的分析。
使用计算域,您可以进行推断和计算,而无须改变物理源数据。 它们是“虚拟域”,您可以使用它们创建未直接存在于您所使用的物理数据源中的有用数据。
计算域的一些用途
| 显示计算结果 | 在库存文件中,您创建一个称作 Value 的计算域,它将 Quantity 域乘以 Unit_cost 域以计算每个库存条目的合计值。 |
|---|---|
| 将物理数据域转换为所需的数据类型 | 为了像使用字符数据那样使用数值域,您可以创建一个使用 STRING( ) 函数的计算域,将数值类型值转换为字符值。 |
| 使用条件将数值代码替换为文本值 | 您创建一个条件计算域,通过将国家/地区映射到物理域中的数值类型国家/地区代码来显示其实际名称。 例如,显示 “Canada” 而非 01,显示 “USA” 而非 02。 |
| 计算一个或多个条件并基于结果确定该域的值 | 您创建一个条件计算域,以根据销售地区计算某个条目的税额。 如果该货物被在一个地区销售,则按 7% 计算税费。 如果它被在另一个地区销售,则按 6% 计算税费。 |
计算域的数据类别
就像物理域一样,计算域属于下列数据类别之一:
- 字符
- 数值
- 日期时间
- 逻辑
与物理域不同的是,在定义计算域时,您不显式选择数据类型甚至数据类别。 相反,您为计算域指定的默认值决定了计算域数据类别。
下表提供了计算域默认值和关联数据类别的示例。
| 计算域默认值 | 计算域数据类别 |
|---|---|
| "Location Unknown" | 字符 |
| STRING(Employee_number, 10) | |
|
0.00 |
数值 |
|
Quantity * Unit_cost |
|
| VALUE(Salary, 0) | |
| `20180331` | 日期时间 |
| CTOD(发票日期, "DD/MM/YYYY") | |
| T | 逻辑 |
| Value > 1000 |
控制数值计算域中的小数精度
在数值计算域中,所有数值计算值的小数精度由在默认值域中指定的表达式或字面量值的精度控制。
- 表达式如果您指定默认表达式 Invoice_Amount * 0.375,并且发票金额域中的值具有两个小数位,则所有计算值被计算至三个小数位,并且被根据需要取整。
表达式的小数精度由控制数值表达式中的取整和小数精度中概述的规则控制。
- 字面量值 如果您指定默认值 0.00,则所有计算值都被计算至两个小数位,并且被根据需要取整。
增加小数精度
要增加数值计算值的小数精度,请增加默认值域中的小数位数。
表达式
将表达式乘以后面跟所需精度的小数位数的 1。 请确保将 1 放在该表达式的开头。 下面的示例将该精度增加到四个小数位:
1.0000 * Invoice_Amount * 0.375
字面量值
将后继零添加到字面量值的小数部分。 下面的示例将该精度增加到三个小数位:
0.000
计算域的类型
您可以创建两个类型的计算域(接下来的各节对其进行了描述):
- 基本计算域
- 条件计算域:
- 使用字面量值
- 使用计算值
基本计算域
基本计算域使用单个表达式或字面量值,并且将其应用于表中的所有记录,而无论每个记录中的值是什么。
基本计算域的示例
您想要验证库存报告中每个产品的按成本计算的总库存价值。
您创建计算域库存价值检查,将现存数量域乘以单位成本域。 您可以比较计算域计算的值与报告值,以了解它们是否匹配。
下面的示例显示了表布局对话框中 Inventory_Value_check 计算域的定义。 计算表达式 ( QtyOH * UnCst ) 出现在默认值域中。
在表视图中,您可以将计算域(库存价值检查)放在物理的源数据域(按成本计算的库存价值)的旁边,然后进行比较。
您还可以创建一个返回任何非匹配值的过滤器:
Inventory_Value_check <> Inventory_Value_at_Cost
定义一个基本计算域
定义一个使用单个表达式或字面量值的计算域,并且将其应用于表中的所有记录,而无论每个记录中的值是什么。
指定该计算域的名称和默认值
- 选择编辑 > 表布局。
- 在编辑域/表达式选项卡中,单击新增表达式
。 - 在名称文本框中输入该域的名称。
说明
域名称被限制为不超过 256 个大小写字母数字字符。 该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。 该名称不能以数字开头。
Analytics 具有多个保留关键字,这些字不能用作域名称。 要获取完整列表,请参阅 保留关键字。
- 执行以下操作之一:
- 在默认值文本框中输入一个表达式或字面量值。
此方法仅适合于简单表达式。
- 单击 f(x) 以使用表达式生成器创建一个表达式。
有关详细信息,请参见使用表达式生成器创建表达式。
- 在默认值文本框中输入一个表达式或字面量值。
指定域元数据
- (可选)在宽度文本框中,以字符为单位指定域的显示宽度。
在 Analytics 视图和报告中显示域时,宽度值被用作列大小。
- (可选)在备用列标题文本框中指定显示名称。
在 Analytics 视图和报告中显示域时,该显示名称而不是域名称被用作列标题。 如果值尚未指定,则使用域名称。
- 如果需要,请为下面列出的一个或多个设置指定值。
您在默认值文本框中指定的表达式或者字面量值的数据类别决定了哪些设置被启用。
设置 数据类别 描述 格式 仅限数值 控制视图和报告中数值域的显示格式。
您可以从下拉列表中选择格式,手动键入格式,或在选择格式后从列表中对其进行编辑。
如果格式下拉列表为空,则在选项对话框中指定的默认显示格式将应用于此域的数据。 在此处指定的格式会覆盖默认格式。
禁止合计 仅限数值 防止该域中的值被合计。
Analytics 自动对报告中的数值域进行合计。 一些数值域包含一些不应该汇总的数据,如单位价格或帐户号码。
静态 改变 Analytics 在评估与该域关联的 IF 语句时使用的默认行为。 (有关可选 IF 语句的详细信息,请参见最终完成域定义。)
取消选择静态(默认)如果 IF 语句的值为假,则该域被分配一个空值 – 空白、零 (0) 或者假 (F),具体取决于该域的数据类别。
选择静态如果该 IF 语句的值为假,则 Analytics 会重复该域中的最后一个有效值,而不是使用空值。 最后一个有效值被在每个行中重复,直到该 IF 语句的值为真并且使用了新的有效值为止。
日期时间 此选项不可用于计算域。
控制合计 仅限数值 指定该域为控制合计域。
控制汇总是数值域中值的总和,可用于检查数据完整性。 将数据提取到一个新表或在新表中排序时,Analytics 将在表历史记录中包含控制合计域的输入和输出合计。 输入是指原始表。 输出是指新表。 如果两个汇总值相符,则提取或排序操作未丢失任何数据。
您还可以将 Analytics 计算出的控制汇总值与数据提供程序提供的控制汇总值进行比较,以确定是否收到所有数据。
如果您为多个域指定控制汇总值,则表历史记录仅报告具有最左侧起始位置的数字域。
默认过滤器 仅限逻辑 基于该域的值(真或假)过滤默认视图中的记录。 仅显示值为“真”的记录。
每当包含该域的 Analytics 表被打开时,都会自动应用该过滤器。
最终完成域定义
- (可选)如果您想要限制该计算域所评估的记录,请在如果文本框中输入一个条件,或者单击如果以使用表达式生成器创建一个 IF 语句。
- 满足 IF 语句的由计算域评估的记录
- 不满足 IF 语句的不由计算域评估的记录
例如,IF 语句 Invoice_Amount >= 1000 可防止其发票金额小于 $1000 的记录被评估。
对于被排除的记录而言,计算域值为空白、零 (0) 或者假 (F),具体取决于该计算域的数据类别。 您可以随时通过删除 IF 语句撤销排除。
- (可选)如果您不希望新的计算域被自动添加到已打开的表视图,请取消选择向当前视图添加已创建的域。
如果您使该选项保持选定状态,则新域被添加到表视图中。 该域被定位为视图中的最后一个列,或者被定位到该视图中任何选定列的左侧。
您随时可以将域手动添加到视图中。 有关详细信息,请参见向视图中添加列。
- (可选)如果您想要添加一个伴随该域定义的说明,请单击编辑域说明
,输入说明文本,然后单击关闭
。 - 单击接受输入
。Analytics 将该计算域添加到表布局中。 您可以在命令或报告中使用该域。
- 单击关闭
以退出表布局对话框。如果您使向当前视图添加已创建的域保持选定状态,则关联的列会被添加到表视图中。
条件计算域
条件计算域包含多个表达式或字面量值,并且有条件地将其应用于表中的记录。 被应用于每个记录的特定表达式或字面量值取决于该记录中的值。
包含字面量值的条件计算域的示例
您想要根据发票金额的大小将字面量值 "Small"、"Medium" 或 "Large" 分配给每个记录。
您创建计算域 Invoice size,以标识每个记录中的发票金额的大小,并且分配正确的字面量值:
- "Small" 小于 $5,000.00 的金额
- "Medium" 从 $5,000.00 到 $9,999.99 的金额
- "Large" $10,000.00 和更大的金额
下面的示例显示了表布局对话框中 Invoice size 计算域的定义。 字面量值 "Small" 出现在默认值域中。 字面量值 "Medium" 和 "Large" 分别出现在单独的条件中。
每个条件都包含一个必须评估为“真”的计算表达式,以便在该计算域中使用关联的值。 如果某个记录不满足任一条件,则使用默认值。
说明
条件的列出顺序很重要。 有关详细信息,请参见按照从严格到宽松的顺序列出条件。。
| 在表视图中,发票大小现在出现在每个记录中。 |
|
|
您还可以创建一个只显示具有一个大小的记录的过滤器: Invoice_size = "Large" |
|
包含计算值的条件计算域的示例
您想要根据随着发票大小而变化的折扣百分比来计算每个记录的折扣金额。
您创建计算域 Discount amount 以标识每个记录中的发票金额的大小,并且使用正确的百分比计算折扣金额:
- 0% 折扣 小于 $5,000.00 的金额
- 10% 折扣 从 $5,000.00 到 $9,999.99 的金额
- 15% 折扣 $10,000.00 和更大的金额
下面的示例显示了表布局对话框中 Discount amount 计算域的定义。 字面量值 0.00 出现在默认值域中。 计算值 Invoice_Amount * 0.10 和 Invoice_Amount * 0.15 分别出现在单独的条件中。
每个条件都包含一个必须评估为“真”的计算表达式,以便使用关联的计算值。 如果某个记录不满足任一条件,则使用默认值。
说明
条件的列出顺序很重要。 有关详细信息,请参见按照从严格到宽松的顺序列出条件。。
| 在表视图中,折扣金额现在出现在每个记录中。 |
|
|
您还可以创建一个过滤器,以显示大于特定金额的折扣: Discount_amount >= 750 |
|
按照从严格到宽松的顺序列出条件。
如果您定义多个条件,则 Analytics 会按照这些条件在表布局对话框中的条件列表中的显示顺序,从顶部开始评估它们。
在上面的发票大小示例中,根据遵守此顺序的条件测试发票金额:
| 订单 | 条件 | 值 |
|---|---|---|
| 1 | Invoice_Amount >= 10000 | "Large" |
| 2 | Invoice_Amount >= 5000 | "Medium" |
要确保满足一个以上的条件的记录被按您所希望的方式进行处理,请按照从严格到宽松的顺序从上到下列出条件。
“严格”意味着什么?
“严格”是指一组值中满足某个条件的值的比例。 一个条件越严格,满足条件的值的比例越低。
请考虑下面这组值:
- $12,000
- $8,000
- $7,000
最宽松的条件 所有三个值都满足条件 Invoice_Amount >= 5000。 因为整组值都满足条件,所以该条件最宽松。
最严格的条件 只有 $12,000 满足该条件 Invoice_Amount >= 10000。 因为整组值中只有一个值满足条件,所以该条件最严格。
Analytics 如何分配条件计算域值
对于每个记录,Analytics 都会分配与第一个为“真”的条件相关联的计算域值。 一旦被分配,即使某个记录满足后续的条件,计算域值也不会被更改。
请考虑发票金额 $12,000:
- 分配值 = Large 使用上述条件顺序,金额被分配值 Large,而这是正确的,因为该金额大于 $10,000。
- 分配值 = Medium 如果您颠倒条件顺序,则该金额被分配值 Medium,这也是正确的,因为该金额大于 $5,000。 但是,值的分配不会按照您希望的方式工作,因为 Invoice_Amount >= 5000 是一个比较宽松的条件,而它会捕捉到您不希望它捕捉的金额。
借助于子集考虑严格性。
另外一种考虑严格性的方式是借助于子集。 满足所列出的第一个条件的值应该构成一组值的最小子集。 对于每个附加条件,满足条件的子集的大小都会增长,并且包含所有以前的子集。
请记住,一旦 Analytics 将一个计算域值分配给一个记录,该值就不会被更改。 因此,在下面的示例中,"Large" 被分配给包含发票金额 $12,000 的记录,并且即使该记录满足条件 2,该值也不会被更新为 "Medium"。
定义一个条件计算域
定义一个包含多个表达式或字面量值的计算域,并且有条件地将其应用于表中的记录。
指定该计算域的名称和默认值
- 选择编辑 > 表布局。
- 在编辑域/表达式选项卡中,单击新增表达式
。 - 在名称文本框中输入该域的名称。
说明
域名称被限制为不超过 256 个大小写字母数字字符。 该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。 该名称不能以数字开头。
Analytics 具有多个保留关键字,这些字不能用作域名称。 要获取完整列表,请参阅 保留关键字。
- 执行以下操作之一:
- 在默认值文本框中输入一个表达式或字面量值。
此方法仅适合于简单表达式。
- 单击 f(x) 以使用表达式生成器创建一个表达式。
有关详细信息,请参见使用表达式生成器创建表达式。
说明
对于数值计算域而言,所有数值类型计算值的小数精度由在默认值域中指定的表达式或字面量值的精度控制。
有关详细信息,请参见 控制数值计算域中的小数精度。
必须将字面量文本值放在引号 (" ") 中。 必须将字面量日期值放在反引号 (` `) 中。
- 在默认值文本框中输入一个表达式或字面量值。
指定域元数据
- (可选)在宽度文本框中,以字符为单位指定域的显示宽度。
在 Analytics 视图和报告中显示域时,宽度值被用作列大小。
- (可选)在备用列标题文本框中指定显示名称。
在 Analytics 视图和报告中显示域时,该显示名称而不是域名称被用作列标题。 如果值尚未指定,则使用域名称。
- 如果需要,请为下面列出的一个或多个设置指定值。
您在默认值文本框中指定的表达式或者字面量值的数据类别决定了哪些设置被启用。
设置 数据类别 描述 格式 仅限数值 控制视图和报告中数值域的显示格式。
您可以从下拉列表中选择格式,手动键入格式,或在选择格式后从列表中对其进行编辑。
如果格式下拉列表为空,则在选项对话框中指定的默认显示格式将应用于此域的数据。 在此处指定的格式会覆盖默认格式。
禁止合计 仅限数值 防止该域中的值被合计。
Analytics 自动对报告中的数值域进行合计。 一些数值域包含一些不应该汇总的数据,如单位价格或帐户号码。
静态 改变 Analytics 在评估与该域关联的 IF 语句时使用的默认行为。 (有关可选 IF 语句的详细信息,请参见最终完成域定义。)
取消选择静态(默认)如果 IF 语句的值为假,则该域被分配一个空值 – 空白、零 (0) 或者假 (F),具体取决于该域的数据类别。
选择静态如果该 IF 语句的值为假,则 Analytics 会重复该域中的最后一个有效值,而不是使用空值。 最后一个有效值被在每个行中重复,直到该 IF 语句的值为真并且使用了新的有效值为止。
日期时间 此选项不可用于计算域。
控制合计 仅限数值 指定该域为控制合计域。
控制汇总是数值域中值的总和,可用于检查数据完整性。 将数据提取到一个新表或在新表中排序时,Analytics 将在表历史记录中包含控制合计域的输入和输出合计。 输入是指原始表。 输出是指新表。 如果两个汇总值相符,则提取或排序操作未丢失任何数据。
您还可以将 Analytics 计算出的控制汇总值与数据提供程序提供的控制汇总值进行比较,以确定是否收到所有数据。
如果您为多个域指定控制汇总值,则表历史记录仅报告具有最左侧起始位置的数字域。
默认过滤器 仅限逻辑 基于该域的值(真或假)过滤默认视图中的记录。 仅显示值为“真”的记录。
每当包含该域的 Analytics 表被打开时,都会自动应用该过滤器。
指定该计算域的条件值
条件值被设置为条件-值对。 如果某个记录满足条件,则该计算域使用指定的值。
说明
您指定的值和默认值必须全都具有相同的数据类型。
- 单击插入条件
。 - 在添加条件和值对话框中执行以下操作,然后单击确定:
- 在条件文本框中输入一个表达式,或者单击条件以使用表达式生成器创建一个表达式。
- 在值文本框中输入一个值,或者单击值以使用表达式生成器创建一个表达式。
下面是上述两个示例中的条件值:
- 如果您想要创建另一条件,请执行下列操作之一:
- 单击插入条件
并重复执行上述步骤。 - 如果要创建与现有条件相似的条件,则选择要复制的条件,单击复制条件
,然后单击编辑条件和值
以修改新条件的设置。
- 单击插入条件
- (可选)选择一个条件,然后单击上移条件
或者下移条件
可改变它的评估顺序。说明
条件的列出顺序很重要。 有关详细信息,请参见按照从严格到宽松的顺序列出条件。。
最终完成域定义
- (可选)如果您想要限制该计算域所评估的记录,请在如果文本框中输入一个条件,或者单击如果以使用表达式生成器创建一个 IF 语句。
- 满足 IF 语句的由计算域评估的记录
- 不满足 IF 语句的不由计算域评估的记录
例如,IF 语句 Invoice_Amount >= 1000 可防止其发票金额小于 $1000 的记录被评估。
对于被排除的记录而言,计算域值为空白、零 (0) 或者假 (F),具体取决于该计算域的数据类别。 您可以随时通过删除 IF 语句撤销排除。
- (可选)如果您不希望新的计算域被自动添加到已打开的表视图,请取消选择向当前视图添加已创建的域。
如果您使该选项保持选定状态,则新域被添加到表视图中。 该域被定位为视图中的最后一个列,或者被定位到该视图中任何选定列的左侧。
您随时可以将域手动添加到视图中。 有关详细信息,请参见向视图中添加列。
- (可选)如果您想要添加一个伴随该域定义的说明,请单击编辑域说明
,输入说明文本,然后单击关闭
。 - 单击接受输入
。Analytics 将该计算域添加到表布局中。 您可以在命令或报告中使用该域。
- 单击关闭
以退出表布局对话框。如果您使向当前视图添加已创建的域保持选定状态,则关联的列会被添加到表视图中。