# GetSysAttr 脚本和图表功能

GetSysAttr() 函数用于返回有关租户和应用程序所在空间的信息。使用 GetSysAttr() 函数，您可以评估租户 ID 和名称、空间 ID 和名称以及有关应用程序所在环境的其他详细信息。此函数简化了可能在不同环境之间移动的 Qlik Sense 应用程序的空间和租户标识。此函数使您能够轻松识别所处的特定环境。这在应用程序生命周期的开发、测试、验收和生产 (DTAP) 阶段特别有用。

此函数可以在应用程序加载脚本或图表表达式中使用，可以直接作为表达式或存储为变量的表达式使用。如果您预计您的应用程序在其生命周期内会在空间或租户之间移动，请使用图表表达式中的函数动态获取空间和租户信息，而无需重新加载应用程序。执行此操作时，请将函数表达式存储在加载脚本外部的变量中，或者直接在图表表达式中使用该函数。

使用 GetSysAttr() 确定应用程序的以下信息：

* 应用程序所在租户的 ID。

* 应用程序所在租户的名称。

* 应用程序所在租户的 URL。

* 已为包含应用程序的租户定义的别名 URL。

* 包含应用程序的租户区域。

* 应用程序所在空间的 ID。

* 应用程序所在空间的名称。

* 应用程序所在的空间类型（共享或托管）。

GetSysAttr() 函数可以直接在加载脚本或图表表达式中使用。在任何一种情况下，都可以使用函数将属性存储在变量中，也可以直接不使用变量。

如果在 Qlik Sense Client-Managed 中使用此函数，它将只返回空的数据值。因此，您可以使用该函数在 Qlik Sense Client-Managed 中开发脚本，而不会遇到错误，以便稍后将应用程序上载到 Qlik Cloud。

语法：

GetSysAttr(name)

返回数据类型： 双

参数

| 参数 | 描述 |
| --- | --- |
| name | 要返回的属性的名称。在表达式中作为字符串值输入。输入的字符串值区分大小写。 |

您可以使用该函数将环境属性加载到您的应用程序中。该函数可以返回以下属性：

GetSysAttr()GetSysAttr() 函数可以返回的环境属性

| 属性 | 描述 | 加载脚本变量的示例 | 图表表达式示例（无变量） |
| --- | --- | --- | --- |
| $tenantid | 租户 ID。 | Let vTenantID = GetSysAttr('tenantId') | =GetSysAttr('tenantId') |
| tenantName | 组合的名称。 | Let vTenantName = GetSysAttr('tenantName') | =GetSysAttr('tenantName') |
| tenantUrl | 租户的默认 URL。 | Let vTenantUrl = GetSysAttr('tenantUrl') | =GetSysAttr('tenantUrl') |
| tenantUrlAlias | 已为租户定义的别名 URL。 | Let vTenantUrlAlias = GetSysAttr('tenantUrlAlias') | =GetSysAttr('tenantUrlAlias') |
| tenantRegion | 租户居住的区域。 | Let vTenantRegion = GetSysAttr('tenantRegion') | =GetSysAttr('tenantRegion') |
| spaceId | 空间 ID。这仅为 共享 或 托管空间中的应用程序定义。<br><br>信息注释<br><br>如果 GetSysAttr() 函数在 Qlik Cloud 中返回一个空 `spaceId` 值，则表示该应用程序位于 个人空间 中。<br><br>GetSysAttr() 函数在 Qlik Sense Client-Managed 中使用时总是返回一个空 `spaceId` 值。 | Let vSpaceId = GetSysAttr('spaceId') | =GetSysAttr('spaceId') |
| spaceName | 空间的名称。这仅为共享或托管空间中的应用程序定义。<br><br>信息注释<br><br>如果 GetSysAttr() 函数在 Qlik Cloud 中返回一个空 `spaceName` 值，则表示该应用程序位于个人空间中。<br><br>GetSysAttr() 函数在 Qlik Sense Client-Managed 中使用时总是返回一个空 `spaceName` 值。 | Let vSpaceName = GetSysAttr('spaceName') | =GetSysAttr('spaceName') |
| spaceType | 应用程序所在的空间类型。这仅为共享或托管空间中的应用程序定义。<br><br>信息注释<br><br>如果 GetSysAttr() 函数在 Qlik Cloud 中返回一个空 `spaceType` 值，则表示该应用程序位于个人空间中。<br><br>GetSysAttr() 函数在 Qlik Sense Client-Managed 中使用时总是返回一个空 `spaceType` 值。 | Let vSpaceType = GetSysAttr('spaceType') | =GetSysAttr('spaceType') |

## 示例 1 – 将环境属性存储为加载脚本变量

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

#### 加载脚本和变量

在本例中，我们定义了一组脚本变量，这些变量可以在您创建的应用程序内容中使用。每次重新加载应用程序时，都会评估属性并将其添加到应用程序中。

执行以下操作：

1. 在共享空间中创建新 Qlik Sense 应用程序。

2. 打开 数据加载编辑器。

3. 将以下加载脚本粘贴到新选项卡中：

   ```
   Transactions:
   						
   Load * inline [
   id,date,amount
   1,1/1/2023,500.67
   2,1/2/2023,458.91
   3,1/3/2023,12.34
   4,1/4/2023,90.90
   5,1/5/2023,256.30
   6,1/6/2023,789.16
   7,1/7/2023,501.25
   8,1/8/2023,87.01
   9,1/9/2023,161.16
   10,1/10/2023,300.06
   ];

   Let vTenantId = GetSysAttr('tenantId');
   Let vTenantName = GetSysAttr('tenantName');
   Let vTenantUrl = GetSysAttr('tenantUrl');
   Let vTenantUrlAlias = GetSysAttr('tenantUrlAlias');
   Let vTenantRegion = GetSysAttr('tenantRegion');
   Let vSpaceId = GetSysAttr('spaceId');
   Let vSpaceName = GetSysAttr('spaceName');
   Let vSpaceType = GetSysAttr('spaceType');
   ```

此加载脚本包含以下内容：

* 一个名为 `Transactions` 的新表，其中包含示例事务数据。这可以替换为任何数据，并且作为占位符添加。

* 一系列脚本变量定义，用于 GetSysAttr() 可以获取的可用属性。

加载数据并以高级编辑模式打开新工作表。

创建一个表格，并将以下表达式及其各自的标签添加为维度：

* `=vTenantId`，带标签 `Tenant ID`

* `=vTenantName`，带标签 `Tenant Name`

* `=vTenantUrl`，带标签 `Tenant URL (Default)`

* `=vTenantUrlAlias`，带标签 `Tenant URL (Alias)`

* `=vTenantRegion`，带标签 `Tenant Region`

* `=vSpaceId`，带标签 `Space ID`

* `=vSpaceName`，带标签 `Space Name`

* `=vSpaceType`，带标签 `Space Type`

现在，您的应用程序中有一个表，可以动态显示每个可用的环境属性。导出应用程序并将其上载到不同的租户和空间将为新上载的应用程序版本提供这些属性。

## 示例 2 – 将环境属性存储为变量，并在图表表达式中使用它们

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

#### 图表表达式和结果

在本例中，我们将在高级编辑模式下使用对话框定义多个变量，而不是在脚本中定义变量。然后可以在应用程序的图表表达式中使用这些变量。

执行以下操作：

1. 在共享空间中创建新 Qlik Sense 应用程序。

2. 在高级编辑模式下打开新的工作表。

3. 单击the 变量 icon 打开变量对话框。

4. 单击新建。

5. 在名称下，输入 vTenantId。

6. 在定义下，输入 =GetSysAttr('tenantId')。

7. 单击创建。

这将创建一个应用程序变量来显示租户的 ID。重复步骤 3 到 6，为其余每个属性创建一个变量。使用以下参数：

* 租户名称

  * 名称：vTenantName

  * 定义：=GetSysAttr('tenantName')

* 租户 URL

  * 名称：vTenantUrl

  * 定义：=GetSysAttr('tenantUrl')

* 租户 URL 别名

  * 名称：vTenantUrlAlias

  * 定义：=GetSysAttr('tenantUrlAlias')

* 租户地区

  * 名称：vTenantRegion

  * 定义：=GetSysAttr('tenantRegion')

* 空间 ID

  * 名称：vSpaceId

  * 定义：=GetSysAttr('spaceId')

* 空间名称

  * 名称：vSpaceName

  * 定义：=GetSysAttr('spaceName')

* 空间类型

  * 名称：vSpaceType

  * 定义：=GetSysAttr('spaceType')

创建一个表格，并将以下每个表达式及其各自的标签添加为维度：

* `=vTenantId`，带标签 `Tenant ID`

* `=vTenantName`，带标签 `Tenant Name`

* `=vTenantUrl`，带标签 `Tenant URL (Default)`

* `=vTenantUrlAlias`，带标签 `Tenant URL (Alias)`

* `=vTenantRegion`，带标签 `Tenant Region`

* `=vSpaceId`，带标签 `Space ID`

* `=vSpaceName`，带标签 `Space Name`

* `=vSpaceType`，带标签 `Space Type`

现在，您的应用程序中有一个表，可以动态显示每个可用的环境属性。导出应用程序并将其上载到不同的租户和空间，将为新上载的应用程序版本提供这些属性。

在图表表达式中使用该函数的主要好处是，无需重新加载应用程序即可刷新这些属性。这使得应用程序能够在租户和空间之间更顺畅地移动，成为应用程序生命周期的一部分。

## 示例 3 – 直接在加载脚本中使用函数

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

#### 加载脚本和结果

你也可以在没有变量的情况下使用应用程序中的函数。这个示例演示了如何加载一个表，其中每个属性都作为一个单独的字段。从这里，您可以在应用程序中创建可视化以显示这些详细信息。

执行以下操作：

1. 在共享空间中创建新 Qlik Sense 应用程序。

2. 打开数据加载编辑器。

3. 将以下加载脚本粘贴到新选项卡中：

   ```
   Attributes:

   Load RowNo() as Key,
   GetSysAttr('tenantId') as TenantID,
   GetSysAttr('tenantName') as TenantName,
   GetSysAttr('tenantUrl') as TenantUrl,
   GetSysAttr('tenantUrlAlias') as TenantUrlAlias,
   GetSysAttr('tenantRegion') as TenantRegion,
   GetSysAttr('spaceId') as SpaceID,
   GetSysAttr('spaceName') as SpaceName,
   GetSysAttr('spaceType') as SpaceType autogenerate 1;
   ```

加载数据。在数据模型中创建一个表，在各个字段中显示每个属性。

现在，您可以在可视化中使用属性字段，例如表或文本和图像对象。

## 示例 4 – 在图表表达式中直接使用函数

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

#### 加载脚本和图表表达式

您可以在不使用变量的情况下将函数直接输入图表表达式。

在图表表达式中使用该函数的主要好处是，应用程序无需重新加载即可刷新这些属性。这使得应用程序能够在租户和空间之间更顺畅地移动，成为应用程序生命周期的一部分。

执行以下操作：

1. 在共享空间中创建新 Qlik Sense 应用程序。

2. 在高级编辑模式下打开新的工作表。

3. 将文本和图像对象拖到工作表上。

4. 在空白图表中单击以添加文本，然后键入：

   租户 ID：

5. 在属性面板中，单击添加度量。

6. 输入以下表达式：

   =GetSysAttr('tenantId')

7. 使用本帮助主题介绍中的属性表中提供的表达式，对新行中的其他属性重复这些步骤。