# GetObjectField - 图表函数

GetObjectField() 返回维度的 字段表达式。Index 是一个可选整数，表示应返回的维度。

信息注释

不能在以下位置的图表中使用此函数：标题、副标题、页脚、参考线表达式和最小/最大表达式。

信息注释

您无法在使用 Object ID 的另一对象中引用维度或度量的名称。

语法：

GetObjectField ([index])

返回数据类型： 字符串

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `GetObjectField ()`<br><br>`GetObjectField (0)` | 返回图表中第一个维度的字段表达式。 |
| `GetObjectField (1)` | 返回图表中第二个维度的字段表达式。 |

如果您希望返回度量的名称，请改为使用 GetObjectMeasure 函数。

## 示例 - GetObjectField 基本原理

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetObjectField.htm)

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `TransactionDate`

  * `CustomerID`

  * `TransactionQuantity`

加载脚本

```
Example:
LOAD * INLINE [
TransactionDate, CustomerID, TransactionQuantity
2018/08/30, 049681, 13
2018/08/30, 203521, 6
2018/08/30, 203521, 21
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `TransactionDate`

* `CustomerID`

* `TransactionQuantity`

创建以下度量：

* `=GetObjectField()`，用于找到表格中的第一个维度。
* `=GetObjectField(0)`，用于找到表格中的第一个维度。
* `=GetObjectField(1)`，用于找到表格中的第二个维度。

结果表

| TransactionDate | CustomerID | TransactionQuantity | GetObjectField () | GetObjectField (0) | GetObjectField (1) |
| --- | --- | --- | --- | --- | --- |
| 2018/08/30 | 049681 | 13 | TransactionDate | TransactionDate | CustomerID |
| 2018/08/30 | 203521 | 6 | TransactionDate | TransactionDate | CustomerID |
| 2018/08/30 | 203521 | 21 | TransactionDate | TransactionDate | CustomerID |

查看结果，可以看到 `GetObjectField` 函数如何返回函数参数中指示的字段名称。

## 示例 - GetObjectField 高级场景

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetObjectField.htm)

#### 图表表达式

概述

本示例结合筛选器选择项使用 `GetObjectField` 函数。图表对象中出现的维度和度量计算会根据您选择的筛选器发生变化。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到两个内联数据表中的数据集：`Sales` 和 `Filter`。第一个表格 `Sales` 包含销售数据。第二个表格 `Filter` 包含将用作维度切换的字段名列表。通过切换，您可以在图表维度之间切换，并根据所选维度自定义显示的度量计算。

* `Sales` 表中的以下字段：

  * `Country`

  * `Salesperson`

  * `SalesValue`

* `Filter` 表中的以下字段：`FilterField`

加载脚本

```
Sales:
LOAD * INLINE [
Country, SalesPerson, SalesValue
USA, John, 500
USA, Alice, 700
Canada, Bob, 300
Canada, Carol, 400
Mexico, Dave, 200
];

Filter:
LOAD * INLINE [
FilterField
Country
SalesPerson
];
```

结果

1. 加载数据并打开工作表。创建新的筛选窗格并将此字段添加为维度：

   * `FilterField`

2. 在资产面板的字段下，右键单击 FilterField 并选择字段设置。选中始终选择一个值复选框，然后单击保存。

3. 创建一个表，然后通过输入以下表达式添加维度：

   * `=$(= FilterField)`

   * 在标签下，输入以下表达式以定义维度的列名：`='$(= FilterField)'`。

4. 创建以下度量：

   * `=If(GetObjectField() = 'Country', Sum(SalesValue), Avg(SalesValue))`，用于在所选维度为 `Country` 时，则返回销售值的总和；否则如果所选维度为 `SalesPerson` ，则返回销售值的平均值。

   * 在 `Label` 下，输入以下表达式以根据筛选器选择定义将为度量显示的列名：`=If(GetObjectField() = 'Country', 'Sum(SalesValue)', 'Avg(SalesValue)')`。例如，如果在筛选器中选择了 `Country` ，则度量的名称将返回值 `Sum(SalesValue)` 。

在分析模式下，在 `FieldFilter` 筛选器中 `SalesPerson` 和 `Country` 之间切换时，表将更改为包括所选维度和该维度的相应度量计算。例如，如果在筛选器中选择 `Country` ，则表格的第一列就会显示 `Country` 作为维度。然后，度量使用 `GetObjectField` 函数，将其等同于 `Country` ，并返回 `Sum(SalesValue)` 。

筛选器窗格和 Country 的表格结果

筛选器窗格和 Country 的表格结果

筛选器窗格和 CountryCountry 的表格结果 ![带有筛选器窗格的工作表，可在国家和销售人员之间切换，并在相应的表中查看每个维度的结果。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-GetObjDim-example.png)

下表显示了在 `FilterField` 筛选器中选择 `Country` 时的结果。

`Country`Country 的结果表

| Country | Sum(SalesValue) |
| --- | --- |
| Canada | 700 |
| Mexico | 200 |
| USA | 1200 |

下表显示了在 `FilterField` 筛选器中选择 `SalesPerson` 时的结果。

`SalesPerson`SalesPerson 的结果表

| SalesPerson | Avg(SalesValue) |
| --- | --- |
| Alice | 700 |
| Bob | 300 |
| Carol | 400 |
| Dave | 200 |
| John | 500 |