存储过程
概述
存储过程,是指通过参数化拉取的方式进行创建,并可在页面端对存储过程数据集发起参数化动态查询数据的功能。目前观远支持 MySQL、SQLServer 和 Oracle 存储过程。
存储过程功能允许用户利用数据库中已有的存储过程,通过参数化的方式执行复杂的计算逻辑,获取结果数据。
适用场景
存储过程功能适用于以下场景:
- 复杂计算逻辑:企业中过去通常有使用传统的报表需通过存储过程来实现复杂的计算逻辑的情况
- 数仓集成:当企业在数仓里建了很多存储过程,则需要通过参数化的方式来执行存储过程,获取结果数据
- 参数化查询:需要根据不同参数值获取不同结果的场景
- 高性能数据处理:对于需要处理大量数据的复杂查询,使用存储过程可以提高性能
前提条件
接入存储过程数据集时,需要选择数据账户。
- 已创建数据账户的用户可忽略此步;
- 未创建数据账号的用户可前往 数据账户 查看更多。
操作步骤
进入存储过程创建页面
进入「数据准备 > 数据集」页面,点击「新建数据集 > 存储过程」。

选择连接器
进入配置界面,选择对应的连接器。

选择存储过程

-
选择数据账户

-
选择数据库连接方式
存储过程数据集支持选择数据库连接方式,包括直连和抽取两种模式,默认为抽取模式。
连接方式 说明 适用场景 抽取 数据抽取保存到观远BI服务器中构建数据集,支持调度更新和缓存机制。 大多数业务场景,数据量较大或需要定时同步的场景。 直连 卡片数据将直接从数据库获得,无缓存,支持全局参数实时传递。 需要实时数据访问、数据频繁变化、禁止数据落地的场景。 说明选择直连数据库,卡片数据将直接从数据库获得;选择抽取,系统会为您在观远BI服务器构建数据集。
-
配置参数
-
输入参数:用户可将「存储过程定义」里面的入参映射为观远数据的全局参数,同时支持自定义「默认值」。直连模式下支持全局参数实时传递。

-
输出参数:对于 Oracle 存储过程,如果其「存储过程定义」内有输出参数,则需要选择输出的参数;若有多输出参数,仅可选择其中一个游标类型的输出参数。

-
| 数据库类型 | 说明 | 示例 |
|---|---|---|
| MySQL、SQLServer | 仅支持返回单「结果集」、无输出参数的存储过程接入 | ![]() |
| Oracle | 支持返回多「结果集」、有输出参数的存储过程接入 | ![]() |
-
预览数据
点击「预览」,确认数据无误后,点击「下一步」。

设置数据更新方式
存储过程接入时,根据选择的数据库连接方式不同,数据更新配置也有所差异。
抽取模式配置
抽取模式下,支持配置「调度状态」、「数据更新周期」、「任务优先级」等参数。
可参考标准数据库接入的数据更新配置,详见 标准数据库连接指南-数据连接及更新配置。

直连模式配置
直连模式下,支持配置「调度状态」、「缓存有效周期」、「任务优先级」、「支持实时卡片数据」等参数。
可参考标准数据库接入的数据更新配置,详见 标准数据库连接指南-数据连接及更新配置。

-
为达到在仪表板/数据大屏上数据实时刷新的效果,不仅需勾选「支持实时卡片数据」,还需同时将相关仪表板/数据大屏上的「自动刷新」开关打开。
-
直连模式下,为减轻数据库压力,相同查询SQL会优先使用缓存,缓存可设置有效周期。当缓存过期时,系统会重新从数据库查询数据并更新缓存。
确认数据表信息
-
填写基本信息
填写数据集名称、存储路径、描述信息并确认,存储路径默认为系统根目录。

-
修改字段信息
确认是否修改字段名称及类型,可参考标准数据库接入的数据更新配置,详见标准数据库连接指南-确认数据表信息。

完成创建
最后点击「确认新建」,即可完成数据集创建。
注意事项
- 数据库支持:不同数据库的存储过程支持有所差异,MySQL、SQLServer 仅支持返回单「结果集」、无输出参数的存储过程,而 Oracle 支持返回多「结果集」、有输出参数的存储过程。
- 数据库连接方式:
- 抽取模式(默认):数据抽取保存到观远BI服务器,支持调度更新和缓存机制,适用于大多数业务场景。
- 直连模式:卡片数据直接从数据库获得,无缓存,支持全局参数实时传递,适用于需要实时数据访问的场景。
- 参数配置:确保正确配置存储过程的输入参数和输出参数,特别是 Oracle 存储过程的输出参数,仅可选择其中一个游标类型的输出参数。直连模式下支持全局参数实时传递。
- 权限设置:确保数据账户具有执行存储过程的权限,否则可能导致连接失败。
- 性能考虑:对于复杂的存储过程,可能会影响查询性能,建议合理设计存储过程逻辑。直连模式下建议合理设置缓存有效周期,以减轻数据库压力。
- 数据更新:根据业务需求,合理设置数据更新方式和频率,确保数据的及时性和准确性。直连模式下,相同查询SQL会优先使用缓存,缓存过期后才会重新查询数据库。
术语表
- 存储过程:在数据库中预定义的一组 SQL 语句,可通过参数化的方式执行
- 数据集:观远数据平台中存储数据的基本单位
- 参数化查询:通过传入不同参数值来获取不同结果的查询方式
- 结果集:存储过程执行后返回的数据集合
- 输出参数:存储过程中用于返回结果的参数
- 游标:Oracle 数据库中用于处理结果集的指针
- 全局参数:观远数据平台中可在多个地方使用的参数
- 数据账户:连接数据库所需的认证信息
- 连接器:观远数据平台中用于连接不同类型数据库的组件
- 调度状态:数据集更新的调度设置
- 缓存有效周期:数据集缓存的有效期
- 任务优先级:数据集更新任务的优先级

