# 数据仓库 / 财务函数

## `infoArrayExt(info_id, changed_field_name, changed_value, record_id, ...)`

声明：function

在当前证券的数据表中查找条件字段值不大于指定值的记录，并可返回指定字段

<!-- tags: 数据仓库 财务 数据表 条件查询 记录 字段 InfoArray -->

| 参数                 | 类型          | 说明                                                           |
| -------------------- | ------------- | -------------------------------------------------------------- |
| `info_id`            | integer       | 信息类别 ID                                                    |
| `changed_field_name` | string        | 用于筛选记录的条件字段名                                       |
| `changed_value`      | real\|integer | 条件字段的上限值                                               |
| `record_id`          | integer       | 可选。负数或省略取最后一条，`0` 取第一条，正数按零基序号取记录 |
| `...`                | any           | 可选。更多按返回字段名、接收返回值变量成对传入的参数           |

返回：array

### 示例

范例01：查询指定股权登记日之前的最后一条记录

```tsl
setSysParam(pn_stock(), "SZ000002");
info_id := databaseInfoArrayId(21);
return infoArrayExt(info_id, "股权登记日", 20130516);
```

## `last12MData(r_date, info_id, get_the_nearest)`

声明：function

返回指定报告期RDate往前12个月的某项财务指标的值。函数只能提取与报告期相关的数据。 该模型与当前的时间有关。因为财务数据有调整前调整后的数据，提取数据的时候，要注意设置当前的时间。如果要取调整前的数据，当前的日期，要设置在调整后数据公布日之前。 比如股票A，2011年的年报是2012年4月15日公布，2012年年报是2013年4月15日公布，2012年年报披露的时候，同时会披露2011年年报调整后的数据。 当前的时间pn_date()设置在2013年4月15日之前的时候，取到的2011年年报数据就是调整前的数据，否则，取到的是2011年调整后的数据。 与系统参数pn_stock()、pn_date()相关，默认时间为今天

<!-- tags: 数据仓库 财务函数 返回 获取 金融 -->

| 参数              | 类型 | 说明                                                                                                                                                                                                                                                     |
| ----------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `r_date`          | int  | 整数报告期，一般为YEAR + Code指定，Code为0630表示中报，1231表示年报，0331第一季度，0930第三季度。如20170930；0001为自然周第一周周报，0002为第二周，以此类推。以周为报告期的日期，主要用于提取封闭式基金的净值数据。如20170001；另外，使用0表示最新报告期 |
| `info_id`         | int  | 整数，信息类别代码，即财务指标和其他信息的ID，可以通过证券数据专家或基本面信息（F11）查询                                                                                                                                                                |
| `get_the_nearest` | bool | 布尔值，如无指定报告，是否找最接近的报告数据。1为是，0为否                                                                                                                                                                                               |

返回：float

### 示例

范例01：调用函数

```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return Last12MData(20170930, 46002);
```

## `lastQuarterData(r_date, info_id, get_the_nearest)`

声明：function

返回某个季度RDate的某项财务指标的值。函数只能提取与报告期相关的数据。季度数据如一季度（1-3月）、二季度（4-6月）、三季度（7-9月）、四季度（10-12月），目前在内地交易所没有要求上市企业公布季度报表，所以我们季度数据需要计算出来。 该模型与当前的时间有关。因为财务数据有调整前调整后的数据，提取数据的时候，要注意设置当前的时间。如果要取调整前的数据，当前的日期，要设置在调整后数据公布日之前。 比如股票A，2011年的年报是2012年4月15日公布，2012年年报是2013年4月15日公布，2012年年报披露的时候，同时会披露2011年年报调整后的数据。 当前的时间pn_date()设置在2013年4月15日之前的时候，取到的2011年年报数据就是调整前的数据，否则，取到的是2011年调整后的数据。 与系统参数pn_stock()、pn_date()相关，默认时间为今天

<!-- tags: 数据仓库 财务函数 返回 获取 金融 -->

| 参数              | 类型 | 说明                                                                                                                                                                                                                                                     |
| ----------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `r_date`          | int  | 整数报告期，一般为YEAR + Code指定，Code为0630表示中报，1231表示年报，0331第一季度，0930第三季度。如20170930；0001为自然周第一周周报，0002为第二周，以此类推。以周为报告期的日期，主要用于提取封闭式基金的净值数据。如20170001；另外，使用0表示最新报告期 |
| `info_id`         | int  | 整数，信息类别代码，即财务指标和其他信息的ID，可以通过证券数据专家或基本面信息（F11）查询                                                                                                                                                                |
| `get_the_nearest` | bool | 布尔值，如无指定报告，是否找最接近的报告数据。1为是，0为否                                                                                                                                                                                               |

返回：float

### 示例

范例01：调用函数

```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return LastQuarterData(20170930, 46002, 0);
```
