# 循环报告

使用循环，您可以生成按维度（如年份或地区）细分的报告的多个版本。配置报告任务时会添加循环。

[Cycling reports - Qlik Cloud](https://play.vidyard.com/CJ2DnPdWruxccMLr7TZCZS)

循环通过筛选报告每个版本中包含的数据来工作。循环和报告筛选器之间的区别在于，通过添加循环，报告任务的单次执行可以为单个收件人生成多个唯一的报告。当您向报告任务添加周期时，将为您选择作为循环的维度中的每个唯一值生成一个唯一的报告。如果您有多个循环字段，您将获得与所有循环字段的组合一样多的报告。

循环与可以在报告生成过程中应用的其他类型的筛选相互作用。评估顺序如下：

1. 区域权限（如有）

2. 任务级报告筛选器（如有）

3. 收件人级别报告筛选器（如有）

4. 循环（如有）

## 示例

例如，您有一个发送销售报告的报告任务。报告任务配置了以下设置：

* 文件名： SalesData

* 字段 Country 和 Year 上的循环

* 时间戳格式：yyyy-MM-dd\_HH-mm

您的数据涵盖三个国家和两年，因此生成并发送了六份报告：

* SalesData\_ Country1 \_Year1 \_2024-11-08\_10-30.xlsx

* SalesData\_ Country1 \_Year2 \_2024-11-08\_10-30.xlsx

* SalesData\_ Country2 \_Year1 \_2024-11-08\_10-30.xlsx

* SalesData\_ Country2 \_Year2 \_11-08\_10-30.xlsx

* SalesData\_ Country3 \_Year1 \_11-08\_10-30.xlsx

* SalesData\_ Country3 \_Year2 \_11-08\_10-30.xlsx

一旦创建，输出文件就会像往常一样发送到目的地。报告筛选器和区域权限筛选仍然像往常一样应用。

## 在报告任务中添加循环

有关创建报告任务的详细信息，请参阅[创建报表任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Generate/cloud-in-app-reports-tasks.htm#Creating)。

执行以下操作：

1. 创建一个报告任务，并像往常一样开始配置过程。

2. 完成对话框的模板部分后，您将到达输出。

3. 在循环下，使用下拉菜单从应用程序中选择最多三个维度。

## 输出文件名

添加循环时，循环中应用的维度值的名称将包含在报告文件名中。如果循环中应用的维度值包含任何特殊字符，则它们将被文件名中的下划线字符 (\_) 替换。

特殊字符包括：

* \ / &lt; &gt; : " ' ? \*

* ASCII 控制字符

## 处理错误

如果一个周期中的一个或多个报告发生错误，则会为每个失败的报告生成一个空文件。每个文件的名称都有一个“FAILED\_”前缀，反映了以错误结尾的值的组合。

## 最佳做法和限制

### 最佳实践

如果报告维度包含许多值或唯一的值组合，则不应启动报告任务的报告循环。例如，如果您的数据涵盖 10 年、196 个国家和 50 种产品，那么报告循环可能会生成多达 98,000 个文件（有关当前独特的任务限制，请参阅[下面](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/reports-cycles.htm#Limitations)的限制）。这可能需要数小时或数天的时间来生成，并且可能会为您的 Qlik Cloud 订阅消耗大量的报告生成时间。

### 限制

* 您最多可以为报告任务选择三个字段进行循环。

* 一个报告任务最多可以生成 500 个唯一的报告。此限制的评估方式是针对添加到任务中的所有模板，而不是针对任务中的每个模板。此限制也适用于所有报告任务，无论是应用了一个还是多个周期。

* 

  如果周期已应用于报告任务，则无法将 HTML 报告模板设置为生成嵌入式电子邮件信息。

有关适用于应用内报告的其他限制，请参阅[Qlik 报告服务 规范和限制](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Reporting-service-specifications-limitations.htm#Limits2)。