# 托管空间中的应用程序内报表

您可以为需要严格数据治理的应用程序配置应用程序内报表。使用与开发用于托管空间的应用程序数据模型相同的原则，您可以为应用程序准备应用程序内报表功能。这是通过在加载脚本中使用空间感知语法来实现的。

[Tabular Reporting in managed spaces](https://play.vidyard.com/YenL58RxsRDZtHKDebJsaL)

在开发准备发布到托管空间的应用程序时，请考虑以下事项：

* 可以在发布应用程序之前或之后开发模板。如果在发布之前创建模板，请在发布后更改连接的应用程序。

* 在发布应用程序之前，必须将分发列表添加到应用程序中。在开发过程中，这可以由模拟数据源而不是实际数据源组成。分发列表中的源在加载脚本中被引用，因此必须使用空间感知语法编写脚本以准备发布。如果您将分发列表作为源文件上传，则默认情况下会自动使用此语法。

* 发布后，可以根据已发布应用程序的报表用例，按需重新创建报表资产（模板、筛选器和报表任务）。分发列表中使用的真实数据源应添加到托管空间中。

## 现有报表配置

如果您在 2024 年 3 月 26 日之前创建了报表配置和分发列表，则需要注意分发列表文件上传过程的更改。

对于在 2024 年 3 月 26 日之前创建的应用程序，在报表部分上传的分发列表源文件会自动重命名并添加到空间中。然后，对该重命名文件的引用会自动添加到加载脚本中。现在，上传的源文件在添加到空间时不再重命名。

要在发布这些应用程序时继续使用现有报表配置，请根据您的分发列表源遵循以下相应部分。或者，使用本页面后面显示的指南从头开始重新创建报表配置。

### 如果您上传了源文件

打开数据加载编辑器并查看分发列表脚本段中的文件名引用。调整语法，使其使用指向当前空间的空间感知引用，而不是任何特定空间。例如，文件引用可能如下所示：

```
FROM "lib://DataFiles/reporting_source_your_app_ID.xlsx"
```

将其更改为：

```
FROM "lib://:DataFiles/reporting_source_your_app_ID.xlsx"
```

您可以看到源应用程序的应用程序 ID 包含在文件名中。如果希望在发布应用程序时运行此确切脚本，请将实际的分发列表文件以该确切名称添加到托管空间中。

或者，您可以在开发空间中重命名源文件，更新加载脚本，然后发布。最后，添加具有更新名称的实际分发列表文件。

### 如果您在脚本中手动使用了远程数据源

如果您改为手动配置加载脚本以依赖其他数据源作为分发列表，则只需调整加载脚本以包含对数据源的相对、空间感知引用（如果尚未完成）。

有关更多信息和具体示例，请参阅 [受管空间中应用程序的数据源](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Spaces/app-data-managed-spaces.htm)。

## 工作流

按照以下顺序在托管空间中使用应用程序内报表。

### 应用程序开发

像往常一样在您的开发空间（个人或共享空间）中开发应用程序，以准备将其发布到托管空间。

### 开发模板和筛选器

如果需要，您可以在发布应用程序之前构建报表模板和筛选器。这作为应用程序开发的一个阶段可能会有所帮助，但添加到源应用程序的模板和筛选器不会保留在已发布的副本中。

如果您在发布之前创建模板并希望将它们用于已发布的应用程序，请更改模板连接的 Qlik Sense 应用程序。对于 Excel、PowerPoint 和 Word 模板，您可以在加载项中执行此操作。或者，在将模板上传到已发布的应用程序时，在 Qlik Sense 应用程序中执行此操作。请参阅 [更改连接的 Qlik Sense 应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/InAppGeneral/cloud-in-app-reports-managed-space.htm#Change)。

### 准备分发列表引用

将分发列表添加到应用程序时，应用程序的加载脚本会发生更改。在已发布的应用程序中无法访问应用程序的加载脚本。因此，您需要在发布应用程序之前将分发列表添加到应用程序中。

在此阶段，分发列表只需作为您将在托管空间中用于分发列表的实际文件或其他源的占位符。

该过程略有不同，具体取决于您的分发列表是源文件还是在脚本中手动添加的远程数据源。但是，基本概念是相同的。有关概述如何在加载脚本中使用空间感知语法的完整指南，请参阅 [受管空间中应用程序的数据源](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Spaces/app-data-managed-spaces.htm)。

#### 选项 1：直接上传源文件

按照常规过程上传源文件作为分发列表：[通过上传源文件添加分发列表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Generate/cloud-in-app-reports-distribution.htm#Adding)。

您可以插入任何所需的占位符，而不是添加最终的收件人详细信息。这里的重点是您上传了一个文件，然后该文件会自动添加到开发空间并在脚本中被引用。

您可以检查加载脚本中的 Distribution List 部分是否包含对该文件的空间感知引用，并且不直接引用任何特定空间。当您在应用程序的报表部分中上传源文件作为分发列表时，这会自动完成。它应该看起来像这样：

```
FROM "lib://:DataFiles/My_App_Distribution_List.xlsx"
```

此示例是一个空间感知引用，指向应用程序所在的当前空间。DataFiles 前面的额外冒号提供了所需的相对引用。

稍后，当您将应用程序发布到托管空间时，请将实际的分发列表文件上传到托管空间。实际的分发列表必须与脚本中引用的文件具有相同的文件名。

#### 选项 2：在脚本中手动引用数据源

按照常规过程在脚本中手动连接到远程分发列表源：[在加载脚本中手动定义分发列表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Generate/cloud-in-app-reports-distribution.htm#Defining)。

在编写脚本以连接到分发列表所需的数据源时，您可以根据需要使用对文件和连接的模拟引用。在您的脚本中，数据源只需具有与它们在托管空间中相同的名称，并且对这些源的引用需要使用相对的、空间感知语法。

### 发布应用程序

准备好加载脚本和分发列表后，即可将应用程序发布到托管空间。有关发布应用程序的更多信息，请参阅 [发布应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/publish-app-cloud-hub.htm)。

### 创建对象级筛选器

如果您的模板在各个报表对象上使用筛选器（请参阅 [在报表模板中使用对象级筛选器](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Generate/cloud-in-app-reports-filters.htm#ObjectLevel)），则必须在上传任何使用这些筛选器的模板之前，在已发布的应用程序中创建相应的报表筛选器。您创建的报表筛选器需要具有与源应用程序中匹配的名称。

### 更改连接的 Qlik Sense 应用程序

如果您在发布应用程序之前创建了报表模板，则需要更新模板以引用正确的应用程序 ID。应用程序的已发布副本将具有与源应用程序不同的应用程序 ID。

在您上传模板时，此过程可以在 Qlik Sense 中自动完成。对于基于 Microsoft Office 的模板格式（Excel、PowerPoint 或 Word），也可以在相应的加载项中完成此操作。在开始之前，您可以创建模板的单独副本，以将其与源应用程序的模板区分开来。

有关完整说明，请参阅：

* 从 Qlik Sense：[更改连接的 Qlik Sense 应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Generate/cloud-in-app-reports-templates.htm#ChangeApp)

* 从适用于 Microsoft Office 的 Qlik 加载项：[更改连接的 Qlik Sense 应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Design/OfficeCommon/add-in-get-started.htm#Changing)

提示注释最佳实践是在位于共享空间中的源应用程序上开发模板。当您需要将应用程序发布到托管空间时，直接从源应用程序下载模板并将其上传到已发布的应用程序中。随着应用程序及其报表需求随时间发生变化，您可以在上传新版本的模板时遵循此工作流。

始终可以直接在托管空间中开发和更新您的模板。

### 添加实际的分发列表源

在托管空间中，创建加载分发列表所需的必需文件和连接，如加载脚本中所引用的那样。此步骤可以随时完成。

提供分发列表的数据源必须包含与源应用程序加载脚本中使用的分发列表源相同的参数名称（连接、文件和字段的名称）。

将连接的源添加到空间后，您应该能够重新加载应用程序。

### 创建新的报表资产

您现在可以将报表资产添加到应用程序中。这可能包括模板、筛选器和报表任务。

## 权限

要在托管空间中处理应用程序的应用程序内报表，您需要：

* 租户管理员分配给您的权限。有关详细信息，管理员可以参考[设置计量报告特性的权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-permissions-reporting.htm)。

* 托管空间中的以下空间角色之一：

  * 所有者

  * 可管理

  * 可操作

  信息注释对于基于用户的订阅，可操作角色还需要 Professional 用户授权。

有关报告的空间权限的更多信息，请参阅[Qlik 报告服务 权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/reporting-permissions.htm)。

## 限制

应用内报告不适用于从 Client-Managed Qlik Sense（包括多云部署）发布或分发到 Qlik Cloud 的应用程序。要在这些应用程序中使用应用内报告，请使用 [Qlik Analytics 迁移工具](https://help.qlik.com/zh-CN/migration/Subsystems/AnalyticsMigrationTool/Content/Qlik-Analytics-Migration-Tool-Overview.htm) 迁移应用程序，或手动导出应用程序并将其重新上传到 Qlik Cloud。

有关更多信息，请参阅 [导出或迁移的应用程序的应用程序中报告](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/Generate/cloud-in-app-reports-exported-migrated.htm)。