# Declare

Declare 语句用于创建字段定义，您可以在其中定义字段或函数之间的关系。可以使用一组字段定义来自动生成可用作维度的导出字段。例如，您可以创建日历定义，并用它来从日期字段生成相关的维度，如年份、月份、周和日期。

您可以使用 Declare 设置新的字段定义，或者根据现有定义创建字段定义。

## 设置新的字段定义

语法：

definition\_name:

Declare [Field[s]] Definition [Tagged tag\_list ]

[Parameters parameter\_list ]

Fields field\_list

参数：

| 参数 | 说明 |
| --- | --- |
| definition\_name | 字段定义的名称，以冒号为结尾。<br><br>警告注释请勿将 autoCalendar 用作字段定义的名字，因为该名称保留用于自动生成的日历模板。<br><br>示例：<br><br>`Calendar:` |
| tag\_list | 以逗号分隔的标记列表，要应用到根据字段定义导出的字段。应用标记是可选的，但如果不应用用于指定排序顺序的标记，如 $date、$numeric 或 $text，则导出字段将默认按加载顺序排序。<br><br>示例：<br><br>`'$date'Thank you for bringing this to our attention, and apologies for the inconvenience.`<br><br>[字段标签](https://help.qlik.com/zh-CN/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/field-tags.htm) |
| parameter\_list | 以逗号分隔的参数列表。定义的参数的格式为 `name=value` 且已分配初始值，在重新使用字段定义时可以将其覆盖。可选。<br><br>示例：<br><br>`first_month_of_year = 1` |
| field\_list | 在使用字段定义时生成的以逗号分隔的字段列表。定义的字段的格式为 `<expression> As field_name tagged tag`。使用 `$1` 来引用应根据导出的字段生成的数据字段。<br><br>示例：<br><br>`Year($1) As Year tagged ('$numeric')` |

示例：

```
Calendar:
DECLARE FIELD DEFINITION TAGGED '$date'
   Parameters
      first_month_of_year = 1
   Fields      
```

```
      Year($1) As Year Tagged ('$numeric'),
      Month($1) as Month Tagged ('$numeric'),
      Date($1) as Date Tagged ('$date'),
      Week($1) as Week Tagged ('$numeric'),
      Weekday($1) as Weekday Tagged ('$numeric'),
      DayNumberOfYear($1, first_month_of_year) as DayNumberOfYear Tagged ('$numeric')
;
```

```
 
```

现在，已经定义日历，您可以将其应用到已加载的日期字段，在此例中为使用 Derive 子句的 OrderDate 和 ShippingDate。

[衍生字段](https://help.qlik.com/zh-CN/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/derived-fields.htm) （完整示例）

## 重复使用现有的字段定义

语法：

&lt;definition name&gt;:

Declare [Field][s] Definition

Using &lt;existing\_definition&gt;

[With &lt;parameter\_assignment&gt; ]

参数：

| 参数 | 说明 |
| --- | --- |
| definition\_name | 字段定义的名称，以冒号为结尾。<br><br>示例：<br><br>MyCalendar: |
| existing\_definition | 在创建新的字段定义时要重复使用字段定义。新的字段定义与它基于的定义具有相同的功能，不包括如果您使用 parameter\_assignment 更改在字段表达式中使用的值。<br><br>示例：<br><br>Using Calendar |
| parameter\_assignment | 以逗号分隔的参数赋值列表。定义的参数赋值的格式为 name=value，并且将覆盖在基本字段定义中所设置的参数值。可选。<br><br>示例：<br><br>first\_month\_of\_year = 4 |

示例：

在此例中，我们重复使用在前面的示例中所创建的日历定义。在这种情况下，我们想要使用从四月份开始的财政年。这可以通过将值 4 赋给 first\_month\_of\_year 参数来实现，这会影响到所定义的 DayNumberOfYear 字段。

下例假设您使用样本数据和前面示例中的字段定义。

MyCalendar: DECLARE FIELD DEFINITION USING Calendar WITH first\_month\_of\_year=4;

DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING MyCalendar;

当您重新加载数据脚本时，在表格编辑器中提供了所生成的字段，且名称为 OrderDate.MyCalendar.\* 和 ShippingDate.MyCalendar.\*。

## 了解详情

* [Derive](https://help.qlik.com/zh-CN/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Derive.htm)