# 数据仓库 / 财务函数 ## `infoArrayExt(info_id, changed_field_name, changed_value, record_id, ...)` 声明:function 在当前证券的数据表中查找条件字段值不大于指定值的记录,并可返回指定字段 | 参数 | 类型 | 说明 | | -------------------- | ------------- | -------------------------------------------------------------- | | `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()相关,默认时间为今天 | 参数 | 类型 | 说明 | | ----------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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()相关,默认时间为今天 | 参数 | 类型 | 说明 | | ----------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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); ```