# TextCount - 图表函数

TextCount() 用于聚合每个图表维度中非数字字段值的数量。

语法：

TextCount({[SetExpression] [DISTINCT] [TOTAL [&lt;fld {,fld}&gt;]]} expr)

返回数据类型： 整数

参数

| 参数 | 描述 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |
| SetExpression | 聚合函数会默认聚合选择项定义的可能记录集合。可选记录集合可由集合分析表达式定义。 |
| DISTINCT | 如果在函数参数前出现单词 DISTINCT，则将忽略计算该函数参数生成的副本。 |
| TOTAL | 如果在函数参数前面出现单词 TOTAL，则计算给出当前选择项的所有可能值，而不只是属于当前维度值的那些值，即它会忽略图表维度。<br><br>通过使用 TOTAL [&lt;fld {.fld}&gt;]（其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表），您可以创建总可能值的子集。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `TextCount(Product)` | 返回具有文本值的产品名称的数量。 |
| `TextCount(OrderNumber)` | 返回`OrderNumber` 字段中有文本值的行数。<br><br>信息注释“0”计为一个值，而不是一个空单元格。但是，如果维度的度量聚合为 0，则图表中将不包括该维度。 空白单元格被评估为非文本，因此不计入 `TextCount`。 |
| `TextCount (DISTINCT Product)/Count(Product)` | 计算 `Product` 中所有不同文本值的个数，然后除以 `Product` 中的总值。 |

## 示例 - TextCount 基本原理

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/CounterAggregationFunctions/textcount.htm)

#### 图表表达式

概述

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `Customer`

  * `Product`

  * `OrderNumber`

加载脚本

```
Set NULLINTERPRET = ' ';
Example:
LOAD * inline [
Customer|Product|OrderNumber
Astrida|AA|1
Astrida|AA|7
Astrida|BB|4
Betacab|CC|6
Betacab|AA|5
Betacab|BB|
Canutility|AA|
Canutility|CC|
Divadip|CC|2
Divadip|DD|3
](delimiter is '|');
```

结果

加载数据并打开工作表。创建新表并添加以下度量：

* `=TextCount(Product)`，返回属于文本值的产品名称的数量。

* `=TextCount(OrderNumber)`，计算属于文本值的订单号的数量。

* `=TextCount(DISTINCT Product)/Count(Product)`，计算 `Product` 的不同文本值的总数，并将其除以 `Product` 中的值的总数。

Results table

| TextCount(Product) | TextCount(OrderNumber) | TextCount(DISTINCT Product)/Count(Product) |
| --- | --- | --- |
| 10 | 3 | 0.4 |

第一个度量返回 `10`，因为 `Product` 中的所有十条记录都是文本。

第二个度量返回 `3`，因为空单元格被视为文本并被计数。通常，您可以使用这种类型的度量来检查是否没有数字字段被赋予文本值或为空。

第三个度量返回 `0.4` 。此结果是通过将 `Product` (`4`) 的不同文本值的总数除以 `Product` (`10`) 中的值的总数来计算的。

## 示例 – TextCount 场景

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/CounterAggregationFunctions/textcount.htm)

#### 图表表达式

概述

数据集包含按产品分类的投诉和一般反馈的调查响应数据。您只想查看具有文本值的响应。

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `CustomerID`

  * `ProductPurchased`

  * `Complaint`

  * `Feedback`

加载脚本

```
Set NullInterpret = '';
Example:
Load * Inline [
CustomerID, ProductPurchased, Complaint, Feedback
1, Laptop, Slow performance, "The laptop is slow, poor battery, slow graphics"
2, Mobile, Heating issue, "Mobile heats up, average camera"
3, Laptop, Battery problem, "Battery not working, slow to charge"
4, Tablet, Screen issue, "Screen is broken, unresponsive touch"
5, Mobile, No issues, "Excellent performance"
6, Mobile, 123, "123"
7, Laptop, ,
8, Tablet, Warranty expired,
9, Mobile, , "Contact customer service"
];
```

结果

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

* `ProductPurchased`

创建以下度量：

* `=TextCount(ProductPurchased)`，计算具有非数值的产品名称的数量。

* `=TextCount(Complaint)`，计算具有非数值的投诉的数量。

* `=TextCount(Feedback)`，计算具有非数值的反馈值的数量。

Results table

| ProductPurchased | TextCount(ProductPurchased) | TextCount(Complaint) | TextCount(Feedback) |
| --- | --- | --- | --- |
| Laptop | 3 | 2 | 2 |
| Mobile | 4 | 2 | 3 |
| Tablet | 2 | 2 | 1 |

结果表明，产品 `Laptop` 有 `3` 个记录，其中 `2` 具有投诉并且 `2` 具有反馈。同样，对于产品 `Mobile` ，有 `4` 个记录，包括 `2` 个投诉和 `3` 个响应式反馈。不计算数值或空值，因为预期 `ProductPurchased`、`Complaint` 和 `Feedback` 字段为文本值。