物理域
在 Analytics 表布局中,与数据源中的实际物理数据相对应的域被称为物理域。
物理域(也称作域定义)通过指定元数据信息来排列原始域数据,这些信息包括:
- 域的名称
- 记录中的域的起始位置
- 域的长度
- 域的数据类型,它确定 Analytics 读取和处理该域中存储的数据的方式
您还需要根据数据类型以及要提供用于覆盖默认值的设置来指定其他信息。例如,应用于数字域的格式,或者用于视图和报告的列标题,可以留空,或者分配默认值,或者指定要使用的值。
物理域定义示例
下面的示例显示了表布局对话框中Invoice_Amount域的定义。在数据预览区域中,该域包括的实际物理数据被突出显示为绿色。
元数据元素 | 描述 | 值 |
---|---|---|
名称 | 物理域名称 | Invoice_Amount |
类型 | 数据类型 | 数值 |
开始 | 域开始位置 | 字节位置 29 |
长度 | 域长度 | 12 个字节 |
小数位 | 小数位数 | 2 |
有效的数据类型 | 建议数据类型的可单击列表 |
数值 包括该域中第一个值的预览 |
格式 | 数值格式 |
(9,999,999.99)
|
宽度 | 视图和报告中的域显示宽度 | 12 个字符 |
备用列标题 | 视图和报告中的域显示名称 | 发票金额(两行) |
定义一个物理域
您需要为您想要添加到 Analytics 表布局的数据源中的每个域定义一个物理域。
在大多数情况下,当您使用数据定义向导或“数据访问”窗口定义和导入数据时,系统会为您定义所需的物理域。但是,您可以手动定义其他域或者您可以选择手动定义表布局中的所有域。
指定该域的起始位置和长度
- 选择编辑 > 表布局。
- 在编辑域/表达式选项卡中,单击新增数据域 。
- 执行下列操作之一以指定域起始位置和长度:
- 单击并拖动 在数据预览区域中,在网格中的任一数据行中单击并拖动可高亮显示该域。
- 手动指定在开始和长度文本框中,手动指定域起始位置和长度(以字节为单位)。
如果您手动指定开始和长度值,请遵守下列准则:
非 Unicode Analytics 1 字节 = 1 字符 Unicode Analytics、扩展 ASCII (ANSI) 数据 1 字节 = 1 字符 Unicode Analytics、Unicode 数据 2 字节 = 1 字符 对于 Unicode 数据:
- 开始通常您应该指定奇数起始字节位置。指定偶数起始位置可能导致字符显示不正确。
- 长度仅指定偶数个字节。指定奇数个字节可能导致字符显示不正确。
指定域元数据
- 在名称文本框中输入该域的名称。
说明
域名称被限制为不超过 256 个大小写字母数字字符。该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。该名称不能以数字开头。
Analytics 具有多个保留关键字,这些字不能用作域名称。要获取完整列表,请参阅 保留关键字。
- 在类型下拉列表中选择或确认适当的数据选项。
您指定的类型必须与源数据中的数据类型一致,或者必须适合于您使用该数据的方式。例如,一个域在数据源中可能是数值数据,但是可能要将该域定义在 Analytics 中作为字符数据。
在有效数据类型下有一个可单击的列表,显示与您已经指定的物理数据匹配的数据类型。首先会列出最相似的匹配,其中常见类型列在系统或应用程序指定类型之前。
- (可选)在宽度文本框中,以字符为单位指定域的显示宽度。
在 Analytics 视图和报告中显示域时,宽度值被用作列大小。
- (可选)在备用列标题文本框中指定显示名称。
在 Analytics 视图和报告中显示域时,该显示名称而不是域名称被用作列标题。如果值尚未指定,则使用域名称。
- (可选)如果您想要限制该计算域所评估的记录,请在如果文本框中输入一个条件,或者单击如果以使用表达式生成器创建一个 IF 语句。
由该 IF 语句排除的记录不会被该计算域评估。例如,IF 语句 Invoice_Amount >= 1000 可防止其发票金额小于 $1000 的记录被评估。
对于被排除的记录而言,计算域值为空白、0.00 或者假 (F),具体取决于该计算域的数据类别。
- 根据您选择的数据类型,您可能需要为下列设置指定值:
设置 描述 小数位数 – 指定小数位数。仅启用该选项用于数值域。 格式 控制视图和报告中数值域的显示格式。还指定源数据中的日期时间域的输入格式。
选择了数值或日期时间之外的数据类型时,会禁用下拉列表。您可以从下拉列表中选择格式,手动键入格式,或在选择格式后从列表中对其进行编辑。
如果格式下拉列表为空,则在选项对话框中指定的默认显示格式将应用于此域的数据。在此处指定的格式会覆盖默认格式。
禁止合计 防止此域中的值被合计。
Analytics 自动对报告中的数值域进行合计。一些数值域包含一些不应该汇总的数据,如单位价格或帐户号码。仅启用该选项用于数字数据类型。
静态 改变 Analytics 在评估与该域关联的 IF 语句时使用的默认行为。(有关可选 IF 语句的详细信息,请参见最终完成域定义。)
取消选择静态(默认)如果 IF 语句的值为假,则该域被分配一个空值 – 空白、零 (0) 或者假 (F),具体取决于该域的数据类别。
选择静态如果该 IF 语句的值为假,则 Analytics 会重复该域中的最后一个有效值,而不是使用空值。最后一个有效值被在每个行中重复,直到该 IF 语句的值为真并且使用了新的有效值为止。
日期时间 指定应该将数值域解释为日期时间域。
如果选择了日期时间复选框,您必须还在格式下拉列表中指定要使用的日期时间格式。
控制合计 指定该域为控制合计域。
控制汇总是数值域中值的总和,可用于检查数据完整性。将数据提取到一个新表或在新表中排序时,Analytics 将在表历史记录中包含控制合计域的输入和输出合计。输入是指原始表。输出是指新表。如果两个汇总值相符,则提取或排序操作未丢失任何数据。
您还可以将 Analytics 计算出的控制汇总值与数据提供程序提供的控制汇总值进行比较,以确定是否收到所有数据。
如果您为多个域指定控制汇总值,则表历史记录仅报告具有最左侧起始位置的数字域。
默认过滤器 根据 Analytics 表每次被打开时此域的值来过滤默认视图中的记录。
仅显示求值为 true 的记录,且自动应用该过滤器。此选项仅可启用于逻辑数据类型,且每个表布局仅可指定一个默认过滤器。
最终完成域定义
- (可选)如果您想要限制该域中包括的值,请在如果文本框中输入一个条件,或者单击如果以使用表达式生成器创建一个 IF 语句。
- 在该域中包括 满足该 IF 语句的值
- 从该域中排除 不满足 IF 语句的值
例如,IF 语句 Invoice_Amount >= 1000 包括 $1000 或更大的发票金额,并且排除小于 $1000 的发票金额。
被排除的值不会被显示在该域中或者被包括在命令处理过程中。根据该域的数据类别的不同,被排除的值显示为空白、零 (0) 或者假 (F)。您可以随时通过删除 IF 语句撤销排除。
- (可选)如果您不希望刚刚定义的域被自动添加到已打开的表视图,请取消选择向当前视图添加已创建的域。
如果您使该选项保持选定状态,则新域被添加到表视图中。该域被定位为视图中的最后一个列,或者被定位到该视图中任何选定列的左侧。
您随时可以将域手动添加到视图中。要了解更多信息,请参考向视图中添加列。
- (可选)如果您想要添加一个伴随该域定义的说明,请单击编辑域说明 ,输入说明文本,然后单击关闭 。
- 单击接受输入 。
Analytics 将域定义添加到表布局中。
- 单击关闭 以退出表布局对话框。
如果您使向当前视图添加已创建的域保持选定状态,则关联的列会被添加到表视图中。
定义日期时间域
取决于您工作用的数据源,日期时间信息(日期、日期时间或时间)可以存储为字符数据或数值数据。当您手动定义一个包含日期时间信息的域时,Analytics 会默认将其视为字符数据。要确保 Analytics 正确读取日期时间信息,您需要选择日期时间作为数据类型,并且在格式下拉列表中指定日期时间源格式。
日期时间源格式
日期时间源格式可识别源数据中表示年、月、日、小时、分钟和秒的字符或数字,以及任何用于分隔日期时间数据的这些部分的字符。
要匹配在源数据中存储日期时间的方式,您可以:
- 选择现有的日期时间格式
- 指定您自己的日期时间格式
- 选择现有格式并修改它
例如,如果 2014 年 12 月 31 日在数据源中被存储为 14-31-12,请输入 YY-DD-MM 作为日期时间格式,以便 Analytics 可以正确解释日期值。
要了解更多信息,请参考日期和时间源数据格式。
日期时间显示格式
您选择或指定的日期时间源格式不会影响在 Analytics 视图中显示日期时间值或者在报告中格式化这些值的方式。日期时间显示格式取决于在选项对话框的日期和时间 选项卡中指定的日期显示格式和时间显示格式设置。
要了解更多信息,请参考“日期和时间”选项卡(“选项”对话框)。
定义重叠域
在大多数情况下,当您定义某个记录中的物理域时,该记录中的每个字节位置都只被分配给一个域。在最基本的层面上,定义表是一个定义该记录中每个域的起始位置和长度的问题,上一个域结束后,下一个域即开始。
但是,在某些情况下,您可能需要定义相互重叠的域,而某些字节位置被用于多个域中。如果源数据的结构是非标准的,或者如果您想要以特定方式使用 Analytics 中的数据,则可能出现这种情况。
例如,您可以定义数据源中的前六个位置作为日期时间域,格式为 DDMMYY,然后单独在位置 3 和 4 定义一个两字节的数字域作为月份。这种方法使您可以出于计算年龄目的访问一个域中的整个日期,让月份在另一个域中作为单独值以生成月度汇总。